} } }

    自定义 DBGridEh 的 IndicatorTitle 表头菜单

    添加时间:2013-5-25 点击量:

    景象:Delphi 2010,EhLib 5.2

    设置 DBGridEh 的属性:
    IndicatorTitle->ShowDropDownSign = True
    IndicatorTitle->TitleButton = True


    如许即可显示表头的菜单,然则只有自定义可见列的功能。(PS.我应用的是已汉化的EhLib,所以默认菜单是中文)




    为此,我们可以设置 DBGridEh 的属性:


    EditActions->geaCopyEh = True


    EditActions->geaSelectAllEh = True


    如许就有了复制和全选的功能。




    然则诸如剪切、粘贴、删除这些菜单项是不须要的,我们可以把它去掉。


    在窗体创建事务中参加代码:



    1 procedure TForm2.FormCreate(Sender: TObject);
    
    2 begin
    3 DBGridEhCenter.IndicatorTitleMenus :=
    4 [itmVisibleColumnsEh, itmCopy, itmSelectAll];
    5 end;


    如许只会显示我们设定好的三个选项。




    若是我们想添加自定义菜单项,可以在窗体拖入 PopupMenu 控件,然后设置 DBGridEh 属性:


    IndicatorTitle->DropdownMenu = PopupMenu1 (你的控件名)


    结果如图所示:




    然则,我们想让它显示在第一项。添加代码:



     1 // 请自行动窗体添加成员 DBGridEhPreviewIndicatorMenuItem: TDBGridEhMenuItem; 这是要参加菜单的菜单项。
    
    2
    3
    4 procedure TForm2.FormCreate(Sender: TObject);
    5 begin
    6 DBGridEhCenter.IndicatorTitleMenus :=
    7 [itmVisibleColumnsEh, itmCopy, itmSelectAll];
    8 DBGridEhCenter.OnBuildIndicatorTitleMenu := BuildIndicatorTitleMenu;
    9 end;
    10
    11 procedure TForm2.BuildIndicatorTitleMenu(Grid: TCustomDBGridEh; var PopupMenu: TPopupMenu);
    12 begin
    13 DBGridEhCenter.DefaultBuildIndicatorTitleMenu(Grid, PopupMenu);
    14
    15 if DBGridEhPreviewIndicatorMenuItem = nil then
    16 DBGridEhPreviewIndicatorMenuItem := TDBGridEhMenuItem.Create(Screen);
    17 DBGridEhPreviewIndicatorMenuItem.Caption := 自定义菜单项;
    18 DBGridEhPreviewIndicatorMenuItem.OnClick := MenuEditClick;
    19 DBGridEhPreviewIndicatorMenuItem.Enabled := True;
    20 DBGridEhPreviewIndicatorMenuItem.Grid := Grid;
    21 PopupMenu.Items.Insert(0, DBGridEhPreviewIndicatorMenuItem);
    22 end;
    23
    24 procedure TForm2.MenuEditClick(Sender: TObject);
    25 begin
    26 ShowMessage(Hello); // 所需履行的操纵
    27 end;


    结果如图:



    还可以对菜单进行分组,只要把 MenuItem 的 Caption 属性设置为 - 就可以了,这里不再截图。

    所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
    分享到: