![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавить ContextMenu в подменю попупа [D7, XP]
ttt © (2013-03-12 14:43:00)Добрый день.
Имеется IContextMenu и TPopupMenu в который нужно добавить его как подменю.
Как реализовать? И возможно ли отловить момент показа этого самого подменю и только тогда "заполнить"?
Дмитрий С (2013-03-13 10:51:00) [1]Событие onclick для пункта меню.
Rouse_ (2013-03-12 15:48:00) [2]А, т.е. вопрос в моменте отображение именно дополнительного сабменю.
Ну чтож, это тоже есть у меня, изучай :)
http://rouse.drkb.ru/other.php#fwmenuex
ttt (2013-03-12 15:16:00) [3]Не совсем то. Вот уже PopupMenu "красуется" на экране, и в какой-то момент пользователь наводит на "Показать подменю >". Я заполняю это самое подменю из IContextMenu и отображаю.
Не буду ходить вокруг да около. Пример реализации есть в опере. Там, выбрав одну из загрузок, отобразится попуп с последним пунктом "Дополнительно". Дополнительно – стандартное меню файла из экплорера. Судя по подвисанию, оно подгружается в момент отображения. Но это не критично, можно добавить и во время отображения всего попупа. Вот бы знать как (первый вопрос темы).
Rouse_ (2013-03-12 15:07:00) [4]Конечно можно, перед непосредственным TrackPopupMenu делай с ним что угодно. Посмотри вот этот пример: http://rouse.drkb.ru/winapi.php#syspopup
Ega23 (2013-03-12 15:03:00) [5]
> И возможно ли отловить момент показа этого самого подменю
unit Unit35;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TForm35 = class(TForm)
procedure OnMenuItemClick(Sender: TObject);
procedure PopupMenuOnPopup(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
popMenu: TPopupMenu;
public
{ Public declarations }
end;
var
Form35: TForm35;
implementation
{$R *.dfm}
procedure TForm35.FormCreate(Sender: TObject);
begin
popMenu := TPopupMenu.Create(Self);
popMenu.AutoHotkeys := maManual;
popMenu.OnPopup := PopupMenuOnPopup;
Self.PopupMenu := popMenu;
end;
procedure TForm35.OnMenuItemClick(Sender: TObject);
begin
ShowMessage((Sender as TMenuItem).Caption + ' clicked');
end;
procedure TForm35.PopupMenuOnPopup(Sender: TObject);
var
itm: TMenuItem;
i: Integer;
begin
popMenu.Items.Clear;
for i := 1 to 10 do
begin
itm := TMenuItem.Create(popMenu);
itm.Caption := Format('Menu Item %d', [i]);
itm.OnClick := OnMenuItemClick;
popMenu.Items.Add(itm);
end;
end;
end.