gpt4 book ai didi

delphi - 如何使 TDBGrid 的列适合网格的宽度?

转载 作者:行者123 更新时间:2023-12-03 15:28:04 27 4
gpt4 key购买 nike

我有一个带有预定义列的 TDBGrid,但我无法获得正确的宽度。我可以在表单设计器中弄乱列的宽度属性,并使宽度在设计时看起来恰到好处,但在运行时,无论出于何种原因,列往往会明显更宽,最终会出现滚动条在网格的底部。有没有什么方法可以让列的大小正确,而无需反复试验,特别是当网格只有一两个列时?

最佳答案

我在表单 OnResize 事件中使用此过程

procedure AutoStretchDBGridColumns(Grid: TDBGrid; Columns, MinWidths: Array of integer);
var
x, i, ww: integer;
begin
// Stretches TDBGrid columns
// Columns contains columns to stretch
// MinWidths contains columns minimum widhts
// To stretch grids columns 1,2 and 5 automatically and set minimum widths to 80, 150 and 150 call
// AutoStretchDBGridColumns(DBGrid1, [1,2,5], [80, 150, 150]);
Assert(Length(Columns) = Length(MinWidths), 'Length(Columns) <> Length(MinWidths)');
ww := 0;
for i := 0 to Grid.Columns.Count - 1 do
begin
if Grid.Columns[i].Visible then
ww := ww + Grid.Columns[i].Width + 1; //** +1 for grid line width
end;
if dgIndicator in Grid.Options then
ww := ww + IndicatorWidth;
x := (Grid.ClientWidth - ww) div Length(Columns);
for i := 0 to High(Columns) do
Grid.Columns[Columns[i]].Width := Max(Grid.Columns[Columns[i]].Width + x, MinWidths[i]);
end;

它有一些缺陷,但效果很好。

关于delphi - 如何使 TDBGrid 的列适合网格的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2004167/

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