首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringGrid下的阴影

StringGrid下的阴影
EN

Stack Overflow用户
提问于 2013-07-21 13:19:00
回答 1查看 312关注 0票数 0

我有一张表格。在formshow中,我将字段的值初始化为字符串网格单元格,但它在单元格的文本下显示一个阴影。我使用波斯字符作为字段的值。

我对英语价值观也做了同样的事情,但它工作得很好。

我很感谢你的建议。

输出示例:

EN

回答 1

Stack Overflow用户

发布于 2013-07-21 20:25:25

在启用了DefaultDrawing的情况下,如果您输入OnDrawCell,文本将已经呈现。

您可以使用UnionRect来获取最终的Rect,该Rect必须被填充(本例中为FillRect)。

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17769324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档