2010-04-14 4 views
4

У меня есть Delphi 2007 VCL TPanel с назначенным им TPopupMenu. На панели есть несколько элементов управления TEdit. Редактирование наследует всплывающее меню родительской панели. Я хочу, чтобы это всплывающее наследование не разрешалось, поэтому редактирование покажет всплывающее меню Windows TEdit по умолчанию с помощью «Копировать», «Вырезать», «Вставить» и т. Д., Но пока не нашло возможности сделать это. Кажется, не существует свойства типа «ParentPopupMenu», чтобы установить, какие элементы управления наследуют его от родительского компонента.Stop VCL Child Controls из Inhering Parent Popup Menu

ответ

5

Попробуйте настроить свойство AutoPopup PopupMenu на False, а затем вручную всплывающее меню(), когда это необходимо, поскольку, как в событии OnContextMenu от TPanel.

+3

Спасибо, этот код OnContextPopup работает: var Управление: TControl; начало Управление: = FindVCLWindow (Mouse.CursorPos); if Control = MyPanel затем начнется MyMenu.Popup (Mouse.CursorPos.X, Mouse.CursorPos.Y); Обрабатывается: = True; конец; конец; – Anagoge

4

Это QC#54286: Parent-PopupMenu overrides standard context menu. Andreas Hausladen's VCL Fix Pack исправляет проблему, поэтому работает так, как вы ожидаете.

+0

Спасибо за ссылки. Хорошо знать, что я не одинок, рассматривая эту ошибку. Надеюсь, Эмбаркадеро в конечном итоге согласится. Я решил пойти с исправлением AutoPopup, так как мне нужно простейшее возможное исправление, и мне нужно только его в одной форме. – Anagoge