-
Имеется PopupMenu как можно определить какой пункт меню выделен в данный момент или как определить при перемещений выделения???
-
Внимание! Здесь обсуждаются вопросы, связанные с разработкой компонентов, редакторов свойств, редакторов компонентов и экспертов IDE.
Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.
-
WM_MENUSELECT
GetMenuItemInfo()
-
В примерах можно???
-
TForm1 = class
...
procedure WMMenuSelect(var Message: TWMMenuSelect); message WM_MENUSELECT;
procedure TForm1.WMMenuSelect(var Message: TWMMenuSelect);
begin
end;
и читаем win32 help по WM_MENUSELECT
-
Спасибо! Пойду проверять...
-
WM_MENUSELECT почему то срабатывает только на MainMenu
-
оно приходит окну, которое указано в качестве родителя для меню
посмотри, совпадает ли PM.WindowHandle с HAndle формы
-
Разные и что теперь делать???
-
ловить сообщение у окна, которое родитель для попапменю
-
У меня только одно окно, он и есть родитель. Почему то WM_MENUSELECT для него не срабатывает а для MainMenu которую поставил на ту же форму срабатывает
-
лезем в исходники VCL
constructor TPopupMenu.Create(AOwner: TComponent);
...
FWindowHandle := Application.Handle;
...
думаем
-
А, по другому никак нельзя?????
-
через глобальную переменную PopupList можно попробовать
у него есть пропертя Window, можно подменить у него WndProc и там ловить WM_MENUSELECT, не забывая вызывать исходную в конце
-
что то у меня никак не получается, помогите срочно надо! В примерах если можно???
-
а как пробуешь?
-
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; не получается
-
да там все тупо
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;
-
Большое Спасибо! Завтра попробую сделать