Вниз
Скачать: CL | DM;

TPopupMenu   Найти похожие ветки 

← →
nachinayuschij   (2008-11-26 16:03) [0]

Имеется PopupMenu как можно определить какой пункт меню выделен в данный момент или как определить при перемещений выделения???


← →
DimaBr ©   (2008-11-26 16:11) [1]

Внимание! Здесь обсуждаются вопросы, связанные с разработкой компонентов, редакторов свойств, редакторов компонентов и экспертов IDE.
Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.


← →
clickmaker ©   (2008-11-26 16:15) [2]

WM_MENUSELECT
GetMenuItemInfo()


← →
nachinayuschij   (2008-11-26 16:30) [3]

В примерах можно???


← →
clickmaker ©   (2008-11-26 16:40) [4]

TForm1 = class
...
 procedure WMMenuSelect(var Message: TWMMenuSelect); message WM_MENUSELECT;

procedure TForm1.WMMenuSelect(var Message: TWMMenuSelect);
begin

end;

и читаем win32 help по WM_MENUSELECT


← →
nachinayuschij   (2008-11-26 16:42) [5]

Спасибо! Пойду проверять...


← →
nachinayuschij   (2008-11-26 17:18) [6]

WM_MENUSELECT почему то срабатывает только на MainMenu


← →
clickmaker ©   (2008-11-26 17:27) [7]

оно приходит окну, которое указано в качестве родителя для меню
посмотри, совпадает ли PM.WindowHandle с HAndle формы


← →
nachinayuschij   (2008-11-26 17:39) [8]

Разные и что теперь делать???


← →
clickmaker ©   (2008-11-26 17:45) [9]

ловить сообщение у окна, которое родитель для попапменю


← →
nachinayuschij   (2008-11-26 18:13) [10]

У меня только одно окно, он и есть родитель. Почему то WM_MENUSELECT для него не срабатывает а для MainMenu которую поставил на ту же форму срабатывает


← →
clickmaker ©   (2008-11-26 18:19) [11]

лезем в исходники VCL
constructor TPopupMenu.Create(AOwner: TComponent);
...
FWindowHandle := Application.Handle;
...

думаем


← →
nachinayuschij   (2008-11-26 18:24) [12]

А, по другому никак нельзя?????


← →
clickmaker ©   (2008-11-26 18:31) [13]

через глобальную переменную PopupList можно попробовать
у него есть пропертя Window, можно подменить у него WndProc и там ловить WM_MENUSELECT, не забывая вызывать исходную в конце


← →
nachinayuschij   (2008-11-27 16:04) [14]

что то у меня никак не получается, помогите срочно надо! В примерах если можно???


← →
clickmaker ©   (2008-11-27 16:11) [15]

а как пробуешь?


← →
nachinayuschij   (2008-11-27 16:25) [16]

clickmaker ©   (26.11.08 18:19) [11]

лезем в исходники VCL
constructor TPopupMenu.Create(AOwner: TComponent);
...
FWindowHandle := Application.Handle;
...

думаем

clickmaker ©   (26.11.08 18:31) [13]

через глобальную переменную PopupList можно попробовать
у него есть пропертя Window, можно подменить у него WndProc и там ловить WM_MENUSELECT, не забывая вызывать исходную в конце

вот эти я не понял как делать. А через  procedure WMMenuSelect(var Message: TWMMenuSelect); message WM_MENUSELECT; не получается


← →
clickmaker ©   (2008-11-27 16:41) [17]

да там все тупо

type
 TPopupListEx = class(TPopupList)
   procedure WndProc(var Message: TMessage); override;
 end;

var OldPopupList: TPopupList;

procedure TPopupListEx.WndProc(var Message: TMessage);
begin
 if (Message.Msg = WM_MENUSELECT) then begin
   if (HiWord(Message.WParam) <> $FFFF) then
     Application.MainForm.Caption := Format("We are at the item %d", [LoWord(Message.WParam)])
   else
     Application.MainForm.Caption := "We are closed menu";
 end;
end;

initialization
 OldPopupList := PopupList;
 PopupList := TPopupListEx.Create;
finalization
 PopupList := OldPopupList;


← →
nachinayuschij   (2008-11-27 16:46) [18]

Большое Спасибо! Завтра попробую сделать



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
3-1212567348
french_cat
2008-06-04 12:15
2009.01.11
Установить фильтр для ADOQuery


15-1226994654
cyborg
2008-11-18 10:50
2009.01.11
Профилировщик


1-1205406336
San1
2008-03-13 14:05
2009.01.11
перемещение содержимого ScrollBox


2-1228066081
Pavel
2008-11-30 20:28
2009.01.11
Как из пути извлечь имя последнего каталога?


4-1203943522
Gool
2008-02-25 15:45
2009.01.11
WIN API




   Наверх