自定义 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 属性设置为 - 就可以了,这里不再截图。
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
景象: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 属性设置为 - 就可以了,这里不再截图。
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》