![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TPopupMenu [D6, WinXP]
nachinayuschij © (2008-11-26 16:03:00)Имеется PopupMenu как можно определить какой пункт меню выделен в данный момент или как определить при перемещений выделения???
nachinayuschij (2008-11-27 16:46:00) [1]Большое Спасибо! Завтра попробую сделать
clickmaker (2008-11-27 16:41:00) [2]да там все тупо
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:25:00) [3]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:11:00) [4]а как пробуешь?
nachinayuschij (2008-11-27 16:04:00) [5]что то у меня никак не получается, помогите срочно надо! В примерах если можно???
clickmaker (2008-11-26 18:31:00) [6]через глобальную переменную PopupList можно попробовать
у него есть пропертя Window, можно подменить у него WndProc и там ловить WM_MENUSELECT, не забывая вызывать исходную в конце
nachinayuschij (2008-11-26 18:24:00) [7]А, по другому никак нельзя?????
clickmaker (2008-11-26 18:19:00) [8]лезем в исходники VCL
constructor TPopupMenu.Create(AOwner: TComponent);
...
FWindowHandle := Application.Handle;
...
думаем
nachinayuschij (2008-11-26 18:13:00) [9]У меня только одно окно, он и есть родитель. Почему то WM_MENUSELECT для него не срабатывает а для MainMenu которую поставил на ту же форму срабатывает
clickmaker (2008-11-26 17:45:00) [10]ловить сообщение у окна, которое родитель для попапменю
nachinayuschij (2008-11-26 17:39:00) [11]Разные и что теперь делать???
clickmaker (2008-11-26 17:27:00) [12]оно приходит окну, которое указано в качестве родителя для меню
посмотри, совпадает ли PM.WindowHandle с HAndle формы
nachinayuschij (2008-11-26 17:18:00) [13]WM_MENUSELECT почему то срабатывает только на MainMenu
nachinayuschij (2008-11-26 16:42:00) [14]Спасибо! Пойду проверять...
clickmaker (2008-11-26 16:40:00) [15]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:30:00) [16]В примерах можно???
clickmaker (2008-11-26 16:15:00) [17]WM_MENUSELECT
GetMenuItemInfo()
DimaBr (2008-11-26 16:11:00) [18]Внимание!Здесьобсуждаются вопросы, связанные с разработкойкомпонентов, редакторов свойств, редакторов компонентов и экспертов IDE.
Вопросы по поискуи использованиюготовых компонентов, редакторов или экспертов являются нарушениемтематики и могут быть удалены.