StringGrid下的阴影

时间:2013-07-21 05:19:00

标签: delphi persian shadows stringgrid

我有一张表格。在formhow上,我将字段的值初始化为stringgrid单元格,但它在单元格的文本下显示阴影。 我使用波斯语字符来表示字段的价值 我对英语价值做了同样的事,但它运作正常 我很感激任何建议。

输出示例:

enter image description here

1 个答案:

答案 0 :(得分:2)

使用enaabled DefaultDrawing,如果您输入OnDrawCell,则系统会显示该文字。

由于您使用DT_CALCRECT DrawText计算绘画中所需的行高,您必须计算RectFillRect将填充/清除UnionRect。 /> 您可以使用FillRect来获取必须填充的最终Rect(示例中为procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.Cells[1,1] := 'Hallo'#13'World'; StringGrid1.Cells[2,2] := 'اهای' +13# + 'جهان'; end; procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var S:String; drawrect,Fillrect : TRect; begin s := (Sender as TStringGrid).Cells[ACol, ARow]; drawrect := Rect; DrawText((Sender as TStringGrid).Canvas.handle, Pchar(s), Length(s), drawrect, DT_CALCRECT or DT_WORDBREAK or DT_LEFT); if (drawrect.bottom - drawrect.Top) > (Sender as TStringGrid) .RowHeights[ARow] then (Sender as TStringGrid) .RowHeights[ARow] := (drawrect.bottom - drawrect.Top); UnionRect(FillRect,Rect,DrawRect); (Sender as TStringGrid).Canvas.FillRect(FillRect); DrawText((Sender as TStringGrid).Canvas.handle, Pchar(s), Length(s), drawrect, DT_WORDBREAK or DT_LEFT); end; )。

{{1}}