DBGridEh列宽自动适应内容的简单方法

最近遇到了一个问题,就是使用DBGridEh的时候,查询出的信息总是不能很完美的显示(完美……)
主要现象就是 DBGridEh属性中提供的选项有
AutoFitColWidths
这个属性设置成true的话,整个表格会根据你的程序窗口大小来分配每个列的宽度,从而不会出现横向滚动条,看似很漂亮,不过我要的可不是这个……
如果设置成false,整个表格难看到让人想吃掉显示器!(夸张了)表格的列宽是按照数据库中字段的大小来分配的,也就是说,如果你有一个255长度的字段,可是里面没有那么多信息,只有几个字节,这种情况很常见吧,结果显示出来,一个宽宽的列里面,只有那么可怜的几个字
于是我的要求就来了,希望可以让列宽自动适应内容
方法一:
DBGEMainList是DBGridEh组件,mOffset是自定义变量,这里赋值是5
DBGEMainList.Columns[I].Width := Max(DBGEMainList.Columns[I].Field.Tag, DBGEMainList.Canvas.TextWidth(DBGEMainList.Columns[I].Title.Caption)) + mOffset;
看起来还不错,列宽可以适应标题了,可是当内容的长度超过标题,列宽没能增加,郁闷,失败了
方法二:
发现DBGridEh属性中有个OptionsEh,里面有个dghDblClickOptimizeColWidth,设置成true
帅哦,和Excel一样了,双击列间的交接处,这个列就可以自动调整大小去适应内容啦
看起来距离我的目标很近了~~
于是想到是不是可以用方法来触发双击表头连接处的事件,结果……没找到
于是想到是不是可以在DBGridEh源码里面看看人家原来咋实现的,我照搬就是,结果……没找到
谁让咱菜呢~
无意中,在DBGEMainList.Columns[I].后面点击了Ctrl+空格(代码提示快捷键),在出现的方法列表里面看到OptimizeWidth这个方法,看起来和那个双击啥的很像哈,窃喜~
循环调用一下,每个列都来这么一下子:
for i:=0 to DBGEMainList.Columns.Count-1 do
  begin
    DBGEMainList.Columns[i].OptimizeWidth;
  end;
看看效果~啊哈,成了~看来人家想的蛮周到的,知道恐怕有人会有这需求(想必有这需求的还不少),就给提供了这么一个方法
不知道是不是还能更简便,不过目前这样我已经很知足啦,哈哈,希望有同样需求的兄弟们可以看到我的这篇文章,解你的燃眉之急啊~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值