Деактивация заданного по умолчанию контекстного меню

Печать
Статьи

Деактивация заданного по умолчанию контекстного меню (на TWinControl).

Когда мы щелкаем на компоненте поля ввода или любого другого компонента, который позволяет редактировать (например, MaskEdit, Memo, DBEdit и др.), выскакивает по умолчанию контекстное меню с опциями отмены, вставки и т.д.
Мы можем поместить свой компонент TPopupMenu и назначить это меню на свойство компонентов, чье меню мы хотим отключить.

Есть процедура, которая использует RTTI и отключает всплывающее меню на управлении.


Uses TypInfo;

procedure DisablePopUp(AControl: TWinControl) ;
var
    j : integer;
    pm : TPopupMenu;
begin
   pm := TPopupMenu.Create(AControl) ;
   for j := 0 to AControl.ControlCount-1 do
    if IsPublishedProp(AControl.Controls[j], 'PopupMenu') then
      SetObjectProp(AControl.Controls[j], 'PopupMenu', pm) ;
end;

Использование:


DisablePopUp(Form1) ;

или


DisablePopUp(Panel1) ;