扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Procedure TForm1.FormCreate(Sender: TObject); begin //在Tag属性中设置需要自动调整的列的最小宽度(固定值) //这里将列宽值设为40px Table1.FieldByName('FirstName').Tag := 40; //这里设置一个变化的值 //该值是做过运算的列标题的宽度值 Table1.FieldByName('LastName').Tag := 4 + Canvas.TextWidth( Table1.FieldByName('LastName').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; |
Procedure TForm1.FormResize(Sender: TObject); begin FixDBGridColumnsWidth(DBGrid1); end; |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者