方法一:
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;
原文链接:https://blog.csdn.net/gaoyunpeng/article/details/1684454
行号显示
可以设置DBGridEh的属性OptionsEh下的dghShowRecNo为True,即可显示行号
DBGridEh1.OddRowColor:=clSkyBlue; //奇数行颜色
DBGridEh1.EvenRowColor:=clMoneyGreen; //偶数行颜色
运行效果:选中行变为蓝色
步骤1:设置dbgrid的options的dgrowselect为true.
步骤2:在dbgrid的ondrawcolumncell事件里面写上:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdSelected in state then
dbgrid1.Canvas.Brush.Color:=clblue;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
需求:dbgrideh前3列需要固定显示,不随着滚动条变动位置
解决方法:将dbgrideh的frozencols设置为3即可;
右侧固定:contracolcount 设置数值就行
DBGridEh1.FieldColumns[‘利率’].DisplayFormat:=’#0.0000000′ 则可以显示出保留的小数位
GridEh合计行的使用
首先设置几个属性:
FootRowCount := 1;
如果有合计金额的话还要设置:
SumList.Active := True;
打开Columns设置界面,有几个属性了解一下:
Footer.Value
Footer.ValueType
Footer.DisplayFormat
举例如下:
如果是第一列放“合计”两个字,则设置如下:
Footer.ValueType := fvtStaticText;
Footer.Value := ‘合计’;
如果是金额合计,设置如下:
Footer.DisplayFormat := ‘#,###.##’; //金额格式
Footer.ValueType := fvtSum;
Footer.FieldName := Amount; //要合计的字段名
dbgrideh设置显示和隐藏某些列:indicatortitle下面全选
