Отключение контекстного меню для компонентов TWinControl

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

Когда Вы щелкаете правой кнопкой мыши на компоненте Edit (или любом другом компоненте, который позволяет редактирование, типа MaskEdit, Memo, DBEdit и т.д.), появляется контекстное меню с системными опциями копирования, вставки, и т.д.

Если Вы не хотите, чтобы появлялось контекстное меню при нажатии правой кнопкой мыши по такому управлению, можно просто поместить компонент TPopupMenu на форму и назначить его свойству PopupMenu компонентов, чье контекстное меню Вы хотите отключить.

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


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);