红鱼儿

uniDBGrid操作栏按钮的实现经验

uniDBGrid支持定义一个操作栏,在里面放置图标按钮,如下图:

 

具体实现,可以参考这篇文章:uniGUI for Delphi UniDBGrid增加按钮列,写的非常详细。

按这篇文章,我们必须实现Grid的ColumnActionClick事件,这其实是件很麻烦的事情,我们要判断用户点了哪个按钮并为之写逻辑,当在继承实现中,更要多写很多代码。

怎么避免这种情况呢?说来也简单,就是在定义列按钮的时候,uniGUI支持Action,我们把具体的操作,通过Action实现,然后联接到列按钮上,就不用写ColumnActionClick事件代码了。

 

 如上图,为第一个按钮定义actAddRow操作。

目前的1551版本存在一个Bug,就是这样定义后,我们还要实现空的

procedure TCustomBillForm.UniDBGrid1ColumnActionClick(Column: TUniDBGridColumn;
    ButtonId: Integer);
begin
  inherited;
  //这里必须有,不然不执行列按钮联接的Action。 1551版本,是bug.
  //这里不用处理,列按钮对应的Action会被执行.
end;

这样实现后,对于这个窗口的子类来说,我们只要实现对应的Action,或者不实现,就用基类的Action,列按钮就如期运行了!

总结:

1.为列按钮定义Action

2.实现空的1ColumnActionClick

3.列按钮机制如期运行!

好经验就是用来分享的!感谢支持我的朋友们!

 

posted on 2021-08-13 16:36  红鱼儿  阅读(825)  评论(0编辑  收藏  举报