数据网格自动适应宽度

数据网格自动适应宽度

///源代码开始
uses
 Math;

function DBGridRecordSize(mColumn: TColumn): Boolean;
{ 返回记录数据网格列显示最大宽度是否成功 }
begin
 Result := False;
 if not Assigned(mColumn.Field) then Exit;
 mColumn.Field.Tag := Max(mColumn.Field.Tag,
   TDBGrid(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText));
 Result := True;
end; { DBGridRecordSize }

function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 5): Boolean;
{ 返回数据网格自动适应宽度是否成功 }
var
 I: Integer;
begin
 Result := False;
 if not Assigned(mDBGrid) then Exit;
 if not Assigned(mDBGrid.DataSource) then Exit;
 if not Assigned(mDBGrid.DataSource.DataSet) then Exit;
 if not mDBGrid.DataSource.DataSet.Active then Exit;
 for I := 0 to mDBGrid.Columns.Count - 1 do begin
   if not mDBGrid.Columns[I].Visible then Continue;
   if Assigned(mDBGrid.Columns[I].Field) then
     mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
       mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
   else mDBGrid.Columns[I].Width :=
     mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset;
   mDBGrid.Refresh;
 end;
 Result := True;
end; { DBGridAutoSize }
///源代码结束

///使用示例开始
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 DBGridRecordSize(Column);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 DBGridAutoSize(DBGrid1);
end;
///使用示例结束  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值