procedure TForm13.FormCreate(Sender: TObject); begin DBGrid1.Columns[0].Width:=180; end;
Delphi实现DBGrid列宽度自动调整https://www.cnblogs.com/tecsoon/archive/2009/03/04/1403037.html
procedure TForm13.FormCreate(Sender: TObject); begin DBGrid1.Columns[0].Field.Tag := 1 + Canvas.TextWidth(DBGrid1.Columns[0].Field.DisplayName); DBGrid1.Columns[1].Field.Tag := 1 + Canvas.TextWidth(DBGrid1.Columns[1].Field.DisplayName); DBGrid1.Columns[2].Field.Tag := 1 + Canvas.TextWidth(DBGrid1.Columns[2].Field.DisplayName); end;
Procedure FixDBGridColumnsWidth(const DBGrid: TDBGrid); var i: integer; TotWidth: integer; // 定义整个宽度 VarWidth: integer; // 定义变化的宽度 ResizableColumnCount: integer; // 定义变化宽度列的总数 AColumn: TColumn; begin // 在重新调整前所有列的宽度 TotWidth := 0; VarWidth := 0; // 有多少列需要自动调整 ResizableColumnCount := 0; for i := 0 to -1 + DBGrid.Columns.Count do begin TotWidth := TotWidth + DBGrid.Columns[i].Width; if DBGrid.Columns[i].Field.Tag <> 0 then Inc(ResizableColumnCount); end; // 为每个列分隔线增加1PX if dgColLines in DBGrid.Options then TotWidth := TotWidth + DBGrid.Columns.Count; if dgIndicator in DBGrid.Options then TotWidth := TotWidth + IndicatorWidth; VarWidth := DBGrid.ClientWidth - TotWidth; // 平均分配变化宽度的值 // 给所有需要自动调整的列 if ResizableColumnCount > 0 then VarWidth := VarWidth div ResizableColumnCount; for i := 0 to -1 + DBGrid.Columns.Count do begin AColumn := DBGrid.Columns[i]; if AColumn.Field.Tag <> 0 then begin AColumn.Width := AColumn.Width + VarWidth; if AColumn.Width < AColumn.Field.Tag then AColumn.Width := AColumn.Field.Tag; end; end; end;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律