sexta-feira, 14 de janeiro de 2011

Desativando o menu de contexto padrão (em TCustomEdits)

Quando nós damos um click com o botão direito em um componente Edit (ou qualquer outro componente que permite editar como MaskEdit, Memo, DbEdit, etc.), por padrão o menu de contexto do sistema aparece com as opções para desfazer, copia, colar, etc.

Se por qualquer razão nós não queremos que este menu apareça, um modo é simplesmente pôr um Componente TPopupMenu no form e nomeia este na propriedade PopupMenu dos componentes que queremos que o menu de contexto não apareça.

Aqui está um procedimento que usa a RTI e desabilita o popup de todos os controles em um containe.

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

Use assim:
DisablePopUp(Form1);
ou
DisablePopUp(Panel1);

Nenhum comentário:

Postar um comentário