再次请教StringGrid的问题,请各位高人指教!

xiaofeng_cxy 2002-08-16 03:11:33
如何画StringGrid的网格线及如何使StringGrid的固定列以居中显示!?
我在线恭候!
...全文
54 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dupenf 2002-08-18
  • 打赏
  • 举报
回复
procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Txt:String;
begin
Txt:=StringGrid1.Cells[ACol,ARow];
StringGrid1.Canvas.Rectangle(Rect);
DrawText(StringGrid1.Canvas.Handle,
Pchar(Txt),
Length(Txt),
Rect,
DT_CENTER or DT_VCENTER );
//在StringGrid单元格画内画字符串
end;
blazingfire 2002-08-16
  • 打赏
  • 举报
回复
我来给你回答,首先你去看下一个API函数:DrawText(...),要StringGrid1的第一列居中显示可以在OnDrawCell事件中写这样代码:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
value:String;
begin
if ACol=0 then
begin
StringGrid1.Canvas.Brush.Color:=clWhite;
StringGrid1.Canvas.Pen.Color :=clWhite;
StringGrid1.Canvas.Rectangle(Rect);
StringGrid1.Canvas.Font.Color:=clBlue;
value:=StringGrid1.Cells[ACol,ARow];
DrawText(StringGrid1.Canvas.Handle,
Pchar(value),
Length(value),
Rect,
DT_Center or DT_VCenter);//DT_Center为横着居中显示
                     //DT_VCenter为坚着居中显示

end;
end;
DBcode 2002-08-16
  • 打赏
  • 举报
回复
cai
gaoys1979 2002-08-16
  • 打赏
  • 举报
回复
既然是自己画,不是可以得到Rect吗? 用canvas.lineto canvas.move 设置点画线。。。固定列居中显示?可能要自己判断把它画在中间了。
findcsdn 2002-08-16
  • 打赏
  • 举报
回复
为了能够设置对齐方式我用 TStringAlignGrid,网上下有源码。
为了能够作表格合并我用 TAdvStringGrid,网上下无源码。
xiaofeng_cxy 2002-08-16
  • 打赏
  • 举报
回复
怎么没人回答呢?
高手都上哪去了?

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧