Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.016 c
15-1192569792
Yakov
2007-10-17 01:23
2007.11.18
Неизвестный издатель


2-1193118344
F@T@L_Err0r
2007-10-23 09:45
2007.11.18
Выбор папки


2-1193582414
AlexanderMS
2007-10-28 17:40
2007.11.18
Что это такое - "the instance handle of the application"?


15-1192607027
Виталий____
2007-10-17 11:43
2007.11.18
Средства написания клиентских приложений к БД


2-1193394735
kaktus
2007-10-26 14:32
2007.11.18
Уважаемые, дайте совет.