您的位置:首页 > 编程语言 > Delphi

delphi dbgrideh列宽根据内容自动增长

2009-11-11 08:58 375 查看
procedure Tfrm_sjzd.lsbAfterPost(DataSet: TDataSet);
var max, i: Integer;
begin
inherited;
max := 0;
if dbg.Columns[dbg.SelectedIndex].Width < dbg.Canvas.TextWidth(dbg.SelectedField.Text) + 2 then
begin
dbg.Columns[dbg.SelectedIndex].Width := dbg.Canvas.TextWidth(dbg.SelectedField.Text) + 2;
end
else
begin //dbg.Canvas.TextWidth(dbg.Columns[dbg.SelectedIndex].Title.Caption)
with dbg.DataSource.DataSet do
begin
First;
while not dbg.DataSource.DataSet.Eof do
begin
i := dbg.Canvas.TextWidth(FieldByName(dbg.Columns[dbg.SelectedIndex].Field.FieldName).AsString) + 2;
if i > max then
begin
max := i;
end;
Next;
end;
if max < dbg.Canvas.TextWidth(dbg.Columns[dbg.SelectedIndex].Title.Caption) + 2 then
begin
dbg.Columns[dbg.SelectedIndex].Width := dbg.Canvas.TextWidth(dbg.Columns[dbg.SelectedIndex].Title.Caption) + 2;
end
else dbg.Columns[dbg.SelectedIndex].Width := max;
end;
end;
end;


dbg为dbgrideh

lsbAfterPost 这个事件是tdxmemdata控件的afterpost事件

当然也可以用adoquery的afterpost事件

这里用这个事件是根据我自己的需要
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: