EhLib的行Checkbox

方法1

http://www.cnblogs.com/jupt/p/4291902.html

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

先做设置

DBGrideh属性设置:

IndicatorOptions =

[gioShowRowIndicatorEh, //小三角指示

gioShowRecNoEh,    //数据源行号

gioShowRowselCheckboxesEh]  //显示CheckBox

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

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


1

2

3

4

5

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,发现了一段关键的代码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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]即可

无需数据集中的字段。

但是,这个 checkbox 很容易消失,只要随便再点击 GRID的 其他 行 就全 没有了。

通过,OptionsEh = [..., dghClearSelection, ...]  //dghClearSelection去掉

方法2

数据集里 有 Boolean字段,自动会显示Checkbox。

时间: 2024-12-12 07:21:12

EhLib的行Checkbox的相关文章

DEV带筛选行CheckBox选中问题

DEV控件中gridview添加了筛选行,Checkbox选中后获取到的值不对. 举例默认的checkbox checked=1 unchecked=0 按照往常获取 gridView1.GetRowCellValue(i, "checks").ToString() 两行数据都选中 checked调试为0和1,明显不对.应该为1和1. 解决方案: this.gridView1.FocusedRowHandle -= 1;//FocusedRowHandle选中某行时的行数 this.g

Primefaces Table 选中行时不消除已选中的Checkbox

table当rowSelectMode="new",<p:column selectionMode="multiple"时,先点中多行CheckBox,再选择行,之前选择的checkbox都会被取消. 想要不取消,方案:修改primefaces的jar内的primefaces.js. 找到此段代码(此图代码已经格式化过) 再删除if(a)的以下代码即可.

JS 控制checkbox 获取 全选 全不选 一行不选择全选则不被选择 全部选择全选被选择

</pre><pre name="code" class="javascript"><span style="font-size:18px;">//点击全选按钮的事件操作 function selectAll(){ var allcheckBoxs=document.getElementsByName("iTo"); var select=document.getElementsByName

开源项目MultiChoiceAdapter详解(五)——可扩展的MultiChoiceBaseAdapter

上次写到了开源项目MultiChoiceAdapter详解(四)——MultiChoiceBaseAdapter的使用,其实我们仍旧可以不使用ActionMode的,所以这里就写一个自己扩展的方法. 一.布局文件 listview_normal_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andr

开源项目MultiChoiceAdapter详解(四)——MultiChoiceBaseAdapter的使用

MultiChoiceBaseAdapter是一个可以多选的BaseAdapter,使用的方式相比来说扩展性更强! 使用方式: 1.布局文件 2.写一个类继承MultiChoiceBaseAdapter 3.实现内部的各个方法 4.设置数据源和视图 5.完成保存的回调方法 一.布局文件 listview_actionmode_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayou

Web应用组件化的权衡

1. 基本概念 什么是Web应用? 所谓Web应用,指的是那些虽然用Web技术构建,但是展现形式却跟桌面程序或者移动端原生应用类似的产品.这类产品的特点是逻辑较重,交互复杂,通常也是单页式的. 主要包括: 交互占比较高的页面体系 以各种Hybrid技术构建的应用,其中的Web部分 大部分可以等同于所谓的"单页面应用",可以参见之前写的这篇:构建单页Web应用 组件化开发的优势是什么? 组件化的最重要作用就是提升开发和维护的效率. 最原始的组件,其功能可以单独开发测试,然后逐级拼装成更复

ASP.NET MVC中商品模块小样

在前面的几篇文章中,已经在控制台和界面实现了属性值的笛卡尔乘积,这是商品模块中的一个难点.本篇就来实现在ASP.NET MVC4下商品模块的一个小样.与本篇相关的文章包括: 1.ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积01, 在控制台实现  2.ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现   3.再议ASP.NET MVC中CheckBoxList的验证   4.ASP.NET MVC在服务端把异步上传的图片裁剪成不同尺寸分别保存,并设置上

jQuery源码逐行分析学习01(jQuery的框架结构简化)

最近在学习jQuery源码,在此,特别做一个分享,把所涉及的内容都记录下来,其中有不妥之处还望大家指出,我会及时改正.望各位大神不吝赐教!同时,这也是我的第一篇前端技术博客,对博客编写还不是很熟悉,美化工作可能不够到位,也希望大家多多见谅! 首先这篇文章要给大家分享的是:jQuery的框架结构,把框架结构简单化处理 此处我所学习使用的jQuery版本是2.0.3版本(文件已经上传到我的文件中,大家可以去下载),一个相对比较老的版本,但是其实基本的功能都与新版本类似,该版本开发版代码共8830行.

Jquery如何删除table里面checkbox选中的多个行

思路:遍历被选中的checkbox对象→根据选中项筛选出需要删除的行→删除行.实例说明如下: 1.HTML结构 <table id = "test_table"> <tr><td><input type="checkbox" name="test"></td><td>1</td><td>2</td><td>3</td>