Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не показывается 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()


Наверх

Титульная страница Поиск, карта сайта Написать письмо