打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi dbgrideh 根据标题宽度自动调整列宽

1.uses Math(我在xp+d7下没有引用该文件貌似也能执行,原文是要引用的,大家可以测试一下)

 

2.先定义两个函数

     function Tmain_khjx.DBGridAutoSize(mDBGrid: TDBGrideh;
  mOffset: Integer): 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 }

/////////////////////////////////////////////////////////////////

function Tmain_khjx.DBGridRecordSize(mColumn: TColumneh): Boolean;
begin  //返回数据网格自动适应宽度是否成功
     Result := False;
    if not Assigned(mColumn.Field) then Exit;
    mColumn.Field.Tag := Max(mColumn.Field.Tag,
    TDBGrideh(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText));
    Result := True;

end;

 

3.  在DBGridEh1DrawColumnCell的事件中写上一句代码:  DBGridRecordSize(Column);

    在想让dbgrideh自动调整列宽的事件中写上 :DBGridAutoSize(DBGridEh1,12);

    我是在窗体的onshow事件中写的,也可以在按钮等事件总写

4.注意:dbgrideh的autofitcolwidths 的属性必须设置成false

 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
做个表格狂人 EXCEL几则快速操作技巧分享
如何固定DBGridEh的初始列宽?
delphi中TDBGrid的使用
办公室里学功夫:Word表格操作常用技巧
单击第一列的某一行时,整行选中记录,单击别的任意列时,只选中一个单元格
C# ListView随窗体大小自动改变列宽
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服