Текущий архив: 2007.11.18;
Скачать: CL | DM;
Вниз
не показывается popupmenu Найти похожие ветки
← →
Sergey2 (2007-10-23 17:16) [0]Есть основной класс 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)
то нужный попап начинает показываться - но координаты совершенно не те - они абсолютные чтоли какие то. тоесть отсчитываются от верхнего левого угла десктопа, а не там где я пыркнул мышкой.
Вопрос заключается в том - почему же всё таки не всплывает меню?...
← →
clickmaker © (2007-10-23 17:19) [1]ClientToScreen()
← →
Sergey2 © (2007-10-23 17:25) [2]> clickmaker
ну это да, но всё таки имхо как то не правильно это принудительно вызывать. нажатие правой клаиши в класс TClass2 приходит - но попап почемуто не стартуется
← →
clickmaker © (2007-10-23 17:45) [3]
> PopupMenu := fPopupMenu;
а вот это зачем?
← →
Sergey2 © (2007-10-23 17:52) [4]"привязать" созданное меню к контролу. на форму когда кидаешь TMenuPopup- ты же указываешь в проперти.
← →
Джо © (2007-10-23 17:53) [5]> [4] Sergey2 © (23.10.07 17:52)
> "привязать" созданное меню к контролу. на форму когда кидаешь
> TMenuPopup- ты же указываешь в проперти.
Что за бред, простите...
← →
Sergey2 © (2007-10-23 17:57) [6]PopupMenu property (TControl)
Identifies the pop-up menu associated with the control.
← →
Palladin © (2007-10-23 17:59) [7]
> Джо © (23.10.07 17:53) [5]
никогда PopupMenu не пользовался? :)
> Sergey2 ©
где-то что-то ты сделал не так... и явно не в вышеприведенном участке кода...
← →
clickmaker © (2007-10-23 18:01) [8]
> [4] Sergey2 © (23.10.07 17:52)
fPopupMenu лишнее
в любом случае, ставь бряк в Controls.pas
procedure TControl.WMContextMenu(var Message: TWMContextMenu);
и смотри, почему там меню не показывается
← →
Джо © (2007-10-23 18:01) [9]> [7] Palladin © (23.10.07 17:59)
>
> > Джо © (23.10.07 17:53) [5]
>
> никогда PopupMenu не пользовался? :)
Не помню, кажется, пользовался когда-то :)
Я, видимо, просто автора не понял. Работать и отвечать в форуме — несомненное зло.
← →
Palladin © (2007-10-23 18:04) [10]проблема ясна... назначенное свойство TControl.PopupMenu не хочет работать... но суть ошибки где-то в другом месте, скорее всего в том - что fPopupMenu долго не живет... ну или свойство PopupMenu очищается в какой то момент...
← →
Kolan © (2007-10-23 18:04) [11]> Работать — несомненное зло.
:)
← →
Palladin © (2007-10-23 18:07) [12]хотя, в принципе, по вопросу, телепатору видно, что автор пытается создать составной компонент, так что ошибка еще может быть в собственном методе обработки сообщений, inherited например не вызван....
← →
Amoeba © (2007-10-23 18:24) [13]Автор, судя по всему, самое существенное в своем коде скрыл.
Страницы: 1 вся ветка
Текущий архив: 2007.11.18;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.04 c