注册账号 登录
用友之家-用友软件论坛 返回首页

wozengcong的个人空间 https://www.oyonyou.com/?242966 [收藏] [复制] [分享] [RSS]

日志

dbgrideh自适应列宽 .

已有 2022 次阅读2013-6-4 19:09 |个人分类:Delphi7

DBGridEH自适应宽度
1.设AutoFitColWidths=true;它的列宽会跟据整个Grid的宽度自动调整且每一列(TColumnEh)都有AutoFitColWidth属性,设为true,该列宽度自动调整,经测试,这种自适应不能满足要求。
2.OptionsEh中有dghDblClickOptimizeColWidth,当双击表缝时,前一列按当前数据宽度自动调整宽度,这种方式基本上能满足要求,但很不方便。

3.

dbgrdh1.AutoFitColWidths:=True;
 for ii:=0 to dbgrdh1.Columns.Count-1 do
  with dbgrdh1.Columns[ii] do
  OptimizeWidth;
这种方式感觉不错!应该能满足要求。

4.另外写过程

function 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; { DBGridRecordSize }
function DBGridAutoSize(mDBGrid: TDBGridEh; mOffset: Integer =20): 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;
   //  ShowMsg(IntToStr(mDBGrid.Canvas.TextWidth(mDBGrid.Columns[i].Title.Caption))+'_'+IntToStr( mDBGrid.Columns[i].Width)+mDBGrid.Columns[i].Title.Caption);
   mDBGrid.Refresh;
  end;
  Result := True;
end; { DBGridAutoSize }
 

在DrawColumnCell过程中添加
DBGridRecordSize(Column)  ;

在button的click事件中

DBGridAutoSize(dbgrdh1);即可


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册账号

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-4-29 21:54 , Processed in 0.029089 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部