在Indicator中添加动态Checkbox,无需绑定数据源,支持全选 - Ehlib学习(二)

先做设置

DBGrideh属性设置:

IndicatorOptions =

[gioShowRowIndicatorEh, //小三角指示

gioShowRecNoEh,    //数据源行号

gioShowRowselCheckboxesEh]  //显示CheckBox

Options = [……, dgMultiSelect]  //开启多选,才能对CheckBox进行编辑

以上设置完成,功能就有了,对于选中的行进行遍历读取

  for I := 0 to DBGrideh.SelectedRows.Count - 1 do
  begin
    DBGrideh.DataSource.DataSet.Bookmark := DBGrideh.SelectedRows[I];    //定位
   ……    //读取定位后数据源其他操作
  end;

在以上基础上做一个全选功能升级。

默认DBGrideh的设置中有如下设置

AllowedSelections = [gstRecordBookmarks,gstRectangle,gstColumns,gstAll]

此时,鼠标点击DBGrideh左上角IndicatorTitle可以触发全选事件,不过却无法对全选的数据记录进行利用,查找了下DBGrideh.pas,发现了一段关键的代码

procedure TCustomDBGridEh.DefaultIndicatorTitleMouseDown(Cell: TGridCoord;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  DropdownMenu: TPopupMenu;
  P: TPoint;
  ARect: TRect;
begin
    ......
end else if (dgMultiSelect in Options) and
    DataLink.Active and ([gstRecordBookmarks, gstAll] * AllowedSelections <> []) then
  begin
    if Selection.SelectionType <> gstNon then
      Selection.Clear
    else if gstAll in AllowedSelections then
      Selection.SelectAll
    else if gstRecordBookmarks in AllowedSelections then
      Selection.Rows.SelectAll;
  end;
end;

DBGrideh是通过Bookmarks定位数据源游标行的,在此,默认设置AllowedSelections中[gstAll,gstRecordBookmarks],当触发IndicatorTitle鼠标点击事件时,发现上一段代码运行是先检查gstAll,然后检查gstRecordBookmarks,所以虽然全选了,但是无法定位数据源游标,所以只要在AllowedSelections中去掉[gstAll]即可

时间: 2024-12-04 09:08:39

在Indicator中添加动态Checkbox,无需绑定数据源,支持全选 - Ehlib学习(二)的相关文章

【转】QT中添加 动态库(.so) 和 静态库 (.a) 的方法

http://blog.csdn.net/yzj19870824/article/details/6933737 在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 添加静态库,如libtinyxml.a 则,在LIBS一行添加“/home/yzj/tinyxml/libtinyxml.a”: 在INCPATH一行添加“ -I /home/yzj/t

DataGridView 中添加CheckBox和常用处理方式 .

DataGridView 中添加CheckBox和常用处理方式 文章1 转载:http://blog.csdn.net/pinkey1987/article/details/5267934 DataGridView中添加CheckBox控件主要采用两种方法 1.  通过在DataGridView的Columns中添加System.Windows.Forms.DataGridViewCheckBoxColumn类型的列.并可以设置该列相关的属性信息. 2. 在程序代码中直接添加相应的代码 Syst

Aandroid在ViewPager中添加ListView

最近的项目中碰到一个需要横竖都能滑动的页面效果,如同手机qq的好友菜单界面(如下图),可以通过选项卡来选择需要的界面,也可以通过屏幕手指的滑动来实现,而每一个分页面的内容对应的是一个可以上下滑动的ListView,所以最后结合起来的效果是,在页面中可以上下滑动,在各个分页之间可以左右滑动. 对于这个效果有两种方案,一种是通过TabActivitiy来实现,将选项卡设置为TabActibitiy的标志,通过将需要的分页加载到Tab的各个标志中去,但是这种方法,由于每一次切换选项卡的时候都会重新去创

linux 中使用动态.so库步骤以及注意

在linux工程中添加libtest.so动态库 1.添加该动态库相应的头文件 2.添加动态链接库的路径(可以将动态库放在/usr/lib/下,也可以使用绝对路径) 3.在makefile中添加动态库的链接(-ltest) 注: 上述步骤添加完成后编译如果还出现找不到函数的情况可能是c文件不能在c++被调用,在库的头文件中添加 #ifdef _cplusplus extern "C"{ #endif n个函数描述 #ifdef _cplusplus } #endif

dView实现checkbox全选反选(自带的ShowSelectCheckBOx)并获取选中checkbox对应的值集合

第一步,显示checkbox按钮: 点击AspxGridView的columns,你可以直接选择增加一行Command Column或者随便选择一种然后点击Change To Commadn Column;默认的ShowSelectCheckBOx是true,我们可以不用管,这样你就看到每行都有checkBox按钮了. 第二步,表头部显示CheckBox,点击实现全选|反选功能: 我们切换回源代码,找到AspxGridView的GridViewCommandColumn列,在该列中增加 <Hea

ASPxGridView实现checkbox全选反选(自带的ShowSelectCheckBOx)并获取选中checkbox对应的值集合

第一步,显示checkbox按钮: 点击AspxGridView的columns,你可以直接选择增加一行Command Column或者随便选择一种然后点击Change To Commadn Column;默认的ShowSelectCheckBOx是true,我们可以不用管,这样你就看到每行都有checkBox按钮了. 第二步,表头部显示CheckBox,点击实现全选|反选功能: 我们切换回源代码,找到AspxGridView的GridViewCommandColumn列,在该列中增加 <Hea

gridview checkbox从服务器端和客户端两个方面实现全选和反选

GridView中的checkbox的全选和反选在很多的地方都是要求实现的,所以下面就从服务器端和客户端两个方面实现了checkbox的选择,感兴趣的朋友可以了解下,希望本文对你有所帮助 GridView中的checkbox的全选和反选在很多的地方都是要求实现的,所以下面就从服务器端和客户端两个方面实现了checkbox的选择. 1.服务器端 html代码如下: <asp:GridView ID="GridView1" runat="server" AutoG

jqury简易实现checkbox反选与全选

前段时间,一个同事让我帮忙写个全选与反选的功能,本来一段很简单的代码,突然卡顿,写了好几个小时,其实之前也做过类似的功能,只是一下子就懵逼了,简而言之还是自己对checkbox的反选与全选没有掌握十足,所以再利用一些时间重复巩固了这个小功能,代码不长,想到了就简单,没想到就折腾好久. 就自己遇到一些坑,关于checkbox细谈一二,今天只用jquery实现 下面是html代码 <p><label><input type="checkbox" class=&

checkbox全选衍生问题讨论

今天项目中遇到一个很简单的需求,全选.取消全选的功能,pa pa pa,代码如下: <script type=”text/javascript” src=”http://static.joekoe.cn/images/script/jquery.min.js”></script></code> <label><input id=”checkall” type=”checkbox” />全选</label><input type=