zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    C语言超大数据相加计算整理
    pc端页面加载更多条信息(loading)
    web前端学习路线
    linux启动流程
    Computer Science: http://www.cs.odu.edu/~cs779/
    编程网站
    sublime-text 键绑定
    monokai-background
    .vimrc
    vim 正则表达式查找ip
  • 原文地址:https://www.cnblogs.com/CodeGear/p/4307196.html
Copyright © 2011-2022 走看看