• 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。

  • 相关阅读:
    英语发音-自然拼读法
    最小二乘法
    BZOJ 1650 [Usaco2006 Dec]River Hopscotch 跳石子
    洛谷 1803 凌乱的yyy
    【模板】矩阵加速(数列)
    【模板】矩阵快速幂
    洛谷 4246 BZOJ 1018 [SHOI2008]堵塞的交通
    洛谷 1276 校门外的树(增强版)
    BZOJ 1468 Tree 【模板】树上点分治
    洛谷 1501 [国家集训队]Tree II BZOJ 2631 Tree
  • 原文地址:https://www.cnblogs.com/CodeGear/p/4307196.html
Copyright © 2020-2023  润新知