(35)uniGUI for Cbuilder UniDBGrid的一些功能优化

(中行雷威2019.12.5)

(同一个世界,同一个梦想,交流学习C++Builder and Delphi XE10,传承c++builder and Delphi的魅力!欢迎各地朋友加入我的QQ群484979943、299497712,860634510,进群密码“BCB”,同时也请将该群号广为宣传,希望能够广集各方高手,共同进步。如需下载开发工具及源代码请加入我的QQ群。)

【阅读倡议】

1、有问题请留言;

2、没问题请点赞;

3、看连载请加群;

4、下源码请加群;

【开发工具】

1、C++Builder and Delphi 10.3.3

2、FMSoft_uniGUI_Complete_Professional_1.70.0.1514(正版)

本人主笔的国内第一本uniGUI教学案例代码已诞生,分为cbuilder和delphi两个版本,买代码送手册,需要的朋友可以加入我的QQ技术交流群484979943、299497712,860634510给我(群主)留言。资料简介:

https://www.meipian.cn/20b86ayo?share_from=others&user_id=64168117&uuid=a8a75af8c0cc31e6a21b8a79a2b07398&share_depth=1&first_share_uid=64168117&utm_medium=meipian_android&share_user_mpuuid=94b70e99e8b6986c71b270a9883befb2

 

9.7 UniDBGrid控件的几个功能优化

9.7.1 内容自动换行

默认UniDBGrid的cell内的内容如果超出表格列宽并不自动换行和调整行高,给客户带来极大的不方便,通过修改ServerModule的属性CustomCSS可以实现。

<style type="text/css">

.x-grid-cell-inner {

  white-space: initial;

}</style>

9.7.2 鼠标停留显示字段

如果某个表格字段内容太长,你想实现当鼠标移动到字段上方时以提示窗口形式显示字段内容,你可以在查询语句执行后设置表格对应字段的ShowToolTip属性实现。

UniDBGrid1->Columns->Items[0]->ShowToolTip=true;

9.7.3 表格底部显示当前记录数和总记录数

         在UniDBGrid的ClientEvents->UniEvents属性中,选择Ext.toolbar.Paging,添加pagingBar.beforeInit事件,再运行表格后你会发现表格底部右侧将显示“显示1-10条,共120条”。

function pagingBar.beforeInit(sender, config)

{

config.displayInfo = true;

}

9.7.4 自动设置列宽

打开UniDBGrid的ClientEvents->ExtEvents属性,选择Ext.data.Store页,双击其store.load事件,添加如下代码即可实现每个列根据其最长字段的长度自动调整表格列宽:

function store.load(sender, records, successful, operation, eOpts)

{

  sender.grid.columnManager.columns.forEach(function(col){col.autoSize()})

}

9.7.5 锁定某行某列

         如果UniDBGrid的ReadOnly属性为False,则允许双击一个CELL来编辑其内容,如果想要让特定的行和列不允许被编辑,请打开UniDBGrid的ClientEvents->ExtEvents属性,选择Ext.grid.Panel页,双击其beforeedit事件,添加如下代码:

function beforeedit(editor, context, eOpts)

{

  var FixedRow, FixedCol;

  FixedRow = 3;

  FixedCol = 3;  

  if (editor.cmp.uniRow < FixedRow || editor.cmp.uniCol < FixedCol)

{

     return false;

       }

}

         以上代码将实现锁定前三行和前三列不能双击表格进入编辑状态,其它区域不受影响。但是,测试发现,如果UniDBGrid的Options->dgRowSelect属性为true时,该方法将失效。

9.7.6 获取点中字段的内容

打开UniDBGrid的ClientEvents->ExtEvents属性,选择Ext.grid.Panel页,双击其celledit事件,添加如下代码:

function cellclick(sender, td, cellIndex, record, tr, rowIndex, e, eOpts)

{

alert(sender.store.getAt(rowIndex).get(cellIndex));

}

         以上代码能够实现显示鼠标点击的CELL。但是,测试发现,如果UniDBGrid设置了Options->dgRowSelect和dgRowNumbers等属性,cellindex要相应的减去这些设置属性导致新增的列数,比如表格设置了dgRowSelect属性,则表格的第一列是勾选框,占用了一列,alert(sender.store.getAt(rowIndex).get(cellIndex));

应该写为

alert(sender.store.getAt(rowIndex).get(cellIndex-1));

 

9.7.7 设置隔行变色和特征行变色

有时需要让表格的奇数行和偶数行分别显示不同的背景颜色,有时又需要根据某个字段的特征值设定其记录背景色,双击UniDBGridOnDrawColumnCell添加事件:

void __fastcall TUniFrame1::UniDBGrid1DrawColumnCell(TObject *Sender, int ACol, int ARow,

                     TUniDBGridColumn *Column, TUniCellAttribs *Attribs)

{

//隔行变色

if(Column->Field->DataSet->RecNo%2==0)

         {

         Attribs->Color=clBlue;

         }

else

         {

         Attribs->Color=clRed;

         }

//特征值变色

if(Column->Field->DataSet->FieldByName("护照编号")->AsString=="HZ002")

         {

          Attribs->Color=clYellow;

         }

 

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值