delphi – 调整列宽DBGrid
发布时间:2020-12-15 04:15:32 所属栏目:大数据 来源:网络整理
导读:我有一个TDBGrid.它有效,但显示的列非常大. 如何设置“自动修复列宽”? 解决方法 所需的Columnwidth取决于Grids画布的设置和每个字段的displaytext的mamimum长度. procedure FitGrid(Grid: TDBGrid);const C_Add=3;var ds: TDataSet; bm: TBookmark; i: Int
我有一个TDBGrid.它有效,但显示的列非常大.
如何设置“自动修复列宽”? 解决方法
所需的Columnwidth取决于Grids画布的设置和每个字段的displaytext的mamimum长度.
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); 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 ; end; end; ds.Next; end; for I := 0 to Grid.Columns.Count - 1 do Grid.Columns[i].Width := a[i] + C_Add; ds.GotoBookmark(bm); finally ds.FreeBookmark(bm); ds.EnableControls; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin FitGrid(DBgrid1) end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |