CSDN首页 | 新闻聚焦 | 共享软件 | 俱乐部 | 开发文档 | 专家门诊 | 招聘求职 | Linux园地 | 程序员杂志 
--------------------------------------------------------------------------------
 
我要回复 | 我感兴趣 | 打印贴子 | 推荐给朋友 | 关闭窗口  
主  题:如何让DBgrid的列宽度自动适应字段的实际字符宽度,不是字段的宽度
作  者:matrix2000
所属论坛:Delphi
问题点数:50
回复次数:8
发表时间:2001-11-22 22:18:27
 
  
  我的字段挺长的,30个字符,但更多的时候才几个汉字,如何如何让DBgrid的列宽度自动适应字段的实际字符宽度,如果需要自己设定,那么如何能够得到实际字符的宽度。谢谢 
回复贴子: 
回复人: hyl_1978(约定) (2001-11-22 22:28:11)  得10分 
如果你用的是永久性字段,可以将displaywidth改小一点;
如果直接再dbgrid中设计,可以在窗体上将dbgrid的列宽度拉小一点。  
回复人: zswang(伴水)(伤心中) (2001-11-22 22:29:08)  得40分 
Canvas.TextWidth  
回复人: zswang(伴水)(伤心中) (2001-11-22 22:33:18)  得0分 
网格重画的时候保留字段显示的大小
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
///////Begin 保留
  if XXX[Column.Field.Index] < Canvas.TextWidth(Column.Field.DisplayText) then
    XXX[Column.Field.Index] := Canvas.TextWidth(Column.Field.DisplayText);
///////End 保留
end;
 
回复人: Snakeguo(枫) (2001-11-22 22:35:27)  得0分 
^  
回复人: zswang(伴水)(伤心中) (2001-11-22 22:35:37)  得0分 
已经提供你思路
我就是这样做的
余下的我就不说
你自己试发挥吧
 
回复人: matrix2000(动感超人) (2001-11-24 12:59:19)  得0分 
对了,伴水,XXX[Column.Field.Index]是指的谁?是Dbgrid吗?  
回复人: matrix2000(动感超人) (2001-11-24 13:55:47)  得0分 
伴水兄: XXX[Column.Field.Index] 是什么?  
回复人: zswang(伴水)(伤心中) (2001-11-24 14:17:29)  得0分 
XXX: array of Integer;SetLength(Table1.FieldList.Count);   
--------------------------------------------------------------------------------
 
我要回复:(请您对您的言行负责,遵守中华人民共和国有关法律、法规,尊重网上道德)  
如果你只是觉得这个贴子好,而没想留言的话,请点击后面的贴子提前连接。   
返回问题 | 关闭窗口   
   
 
           
美达美简介 广告服务 英语步步高 程序员大本营 百联美达美科技有限公司  版权所有