最近遇到了一个问题,就是使用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;
看看效果~啊哈,成了~看来人家想的蛮周到的,知道恐怕有人会有这需求(想必有这需求的还不少),就给提供了这么一个方法
不知道是不是还能更简便,不过目前这样我已经很知足啦,哈哈,希望有同样需求的兄弟们可以看到我的这篇文章,解你的燃眉之急啊~~
主要现象就是 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;
看看效果~啊哈,成了~看来人家想的蛮周到的,知道恐怕有人会有这需求(想必有这需求的还不少),就给提供了这么一个方法
不知道是不是还能更简便,不过目前这样我已经很知足啦,哈哈,希望有同样需求的兄弟们可以看到我的这篇文章,解你的燃眉之急啊~~