stringgrid 控件里得文字 都是左排列 如何居中呢?(200分)

  • 主题发起人 主题发起人 benjiam
  • 开始时间 开始时间
B

benjiam

Unregistered / Unconfirmed
GUEST, unregistred user!
stringgrid 控件里得文字 都是左排列 如何居中呢?
 
使用ADVStringGrid就行了.dxTreeList更好.
都可以到www.51delphi.com下载的.
 
我现在已经做到快完工了 再改? 这怎么可以呢
 
StringGrid就只能左排列
 
在StringGrid的OnDrawCell 里处理,下面的代码不但水平居中,还垂直居中
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
s:string;
r:TRect;
begin
with StringGrid1 do
begin
Canvas.FillRect(Rect);
s:=Cells[ACol,ARow];
r:=Rect;
DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
end;
注意StringGrid的DefaultDrawing属性为True,否则你得自己决定Canvas 的字体颜色,大小等信息,比较麻烦
 
楼上这个方法好,用DrawText

怎么让Editing 时也居右 ?
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
StringGrid1.Canvas.FillRect(Rect);
DrawText(StringGrid1.Canvas.Handle,
pChar(StringGrid1.Cells[ACol,ARow]),
Length(StringGrid1.Cells[ACol,ARow]),
Rect, // 包含文字的矩形
DT_center or // 水平居中
DT_SINGLELINE or // 不折行
DT_VCENTER) // 垂直居中
end
 
同意楼上说的。
 
后退
顶部