gpt4 book ai didi

delphi - 如何获取TDBGrid列上最长条目的长度

转载 作者:行者123 更新时间:2023-12-03 18:20:16 25 4
gpt4 key购买 nike

我有一个名为grMain的TDBGrid组件。我需要知道在grMain上检索的Column最长条目的值的长度,以调整持有g​​rMain的表单的最小宽度。

如何获取TDBGrid列上最长条目的长度?

提前致谢。

最佳答案

那样的东西...

Procedure FitGrid(Grid:TDBGrid);
Const
C_Add=3;
var
ds:TDataset;
bm:TBookmark;
i:Integer;
w:Integer;
a:Array of Integer;
begin
ds := Grid.DataSource.DataSet;
if Assigned(ds) then
begin
ds.DisableControls;
bm := ds.GetBookmark;
try

ds.First;
SetLength(a,Grid.Columns.Count);
ZeroMemory(@a[0],SizeOf(Integer)*Length(a));
while not ds.Eof do
begin
for I := 0 to Grid.Columns.Count - 1 do
begin
if Assigned( Grid.Columns[i].Field) then
begin
w := Grid.Canvas.TextWidth( ds.FieldByName( Grid.Columns[i].Field.FieldName).DisplayText);
if a[i] < w then a[i] := w + C_Add;
end;

end;
ds.Next;
end;
for I := 0 to Grid.Columns.Count - 1 do Grid.Columns[i].Width := a[i];
ds.GotoBookmark(bm);
finally
ds.FreeBookmark(bm);
ds.EnableControls;
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
FitGrid(DBgrid1)
end;

关于delphi - 如何获取TDBGrid列上最长条目的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15267466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com