Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Добавить 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо