![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не показывается popupmenu [D7, XP]
Sergey2 © (2007-10-23 17:16:00)Есть основной класс TClass1 = class(TCustomControl) он содержит массив элементов из экземпляров класса TClass2 = class(TCustomControl). Внутри каждого экземляра класса TClass2 должно жить своё попап меню.
Создаю след образом:
var
mi: TMenuItem;
begin
fPopupMenu := TPopupMenu.Create(Self);
mi := TMenuItem.Create(Self);
fPopupMenu.Items.Add(mi);
fPopupMenu.AutoPopup := True;
PopupMenu := fPopupMenu;
классом TClass1 перехватываю нажатие мыши и передаю в каждый экземпляр (если клик находится именно в бордере)- с левой клавишей проблем нет, а по правой клавише - увы попап не вызывается. Причем попап есть - в каждом экземпляре сидит именно свой скреэченный попап.... если же принудительно стартовать попапменю
TCLass2.PopupMenu.Popup(X, Y)
то нужный попап начинает показываться - но координаты совершенно не те - они абсолютные чтоли какие то. тоесть отсчитываются от верхнего левого угла десктопа, а не там где я пыркнул мышкой.
Вопрос заключается в том - почему же всё таки не всплывает меню?...
Amoeba (2007-10-23 18:24:00) [1]Автор, судя по всему, самое существенное в своем коде скрыл.
Palladin (2007-10-23 18:07:00) [2]хотя, в принципе, по вопросу, телепатору видно, что автор пытается создать составной компонент, так что ошибка еще может быть в собственном методе обработки сообщений, inherited например не вызван....
Palladin (2007-10-23 18:04:00) [3]проблема ясна... назначенное свойство TControl.PopupMenu не хочет работать... но суть ошибки где-то в другом месте, скорее всего в том - что fPopupMenu долго не живет... ну или свойство PopupMenu очищается в какой то момент...
Kolan (2007-10-23 18:04:00) [4]> Работать — несомненное зло.
:)
clickmaker (2007-10-23 18:01:00) [5]
> [4] Sergey2 © (23.10.07 17:52)
fPopupMenu лишнее
в любом случае, ставь бряк в Controls.pas
procedure TControl.WMContextMenu(var Message: TWMContextMenu);
и смотри, почему там меню не показывается
Джо (2007-10-23 18:01:00) [6]> [7] Palladin © (23.10.07 17:59)
>
> > Джо © (23.10.07 17:53) [5]
>
> никогда PopupMenu не пользовался? :)
Не помню, кажется, пользовался когда-то :)
Я, видимо, просто автора не понял. Работать и отвечать в форуме — несомненное зло.
Palladin (2007-10-23 17:59:00) [7]
> Джо © (23.10.07 17:53) [5]
никогда PopupMenu не пользовался? :)
> Sergey2 ©
где-то что-то ты сделал не так... и явно не в вышеприведенном участке кода...
Sergey2 (2007-10-23 17:57:00) [8]PopupMenu property (TControl)
Identifies the pop-up menu associated with the control.
Джо (2007-10-23 17:53:00) [9]> [4] Sergey2 © (23.10.07 17:52)
> "привязать" созданное меню к контролу. на форму когда кидаешь
> TMenuPopup- ты же указываешь в проперти.
Что за бред, простите...
Sergey2 (2007-10-23 17:52:00) [10]"привязать" созданное меню к контролу. на форму когда кидаешь TMenuPopup- ты же указываешь в проперти.
clickmaker (2007-10-23 17:45:00) [11]
> PopupMenu := fPopupMenu;
а вот это зачем?
Sergey2 (2007-10-23 17:25:00) [12]> clickmaker
ну это да, но всё таки имхо как то не правильно это принудительно вызывать. нажатие правой клаиши в класс TClass2 приходит - но попап почемуто не стартуется
clickmaker (2007-10-23 17:19:00) [13]ClientToScreen()