Всем привет,
не подскажите как отключить правую кнопку мыши (или виндовский меню) во всей форме (Form1)? Не хочу, что бы в memo или edit виндовские меню открывались.
Спасибо!
Модератор: Модераторы
for i:=0 to ComponentCount-1 do
if Components[i] is TEdit then
(Component[i] as TEdit).PopupMenu:=PopupMenu1;
по правильному может долго оказаться (если под кросс). Плюс возможны условия.по правильному отлавливать нужно клик мыши на форме,
pupsik писал(а):одного не пойму: ЗАЧЕМ так "резать" пользователя?
{ Если только для Edit и Memo может вот так поможет ? Хотя такой вариант уже предлагали }
type
Tfunctions = class
procedure OnPopup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
end;
procedure Tfunctions.OnPopup(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then showmessage('Можно ничего не делать , а можно что-нибудь сделать!');
end;
var
i:Cardinal;
FalsePopup:TpopupMenu;
functions:Tfunctions;
begin
{
Если использовать первый вариант - надо закомментировать или удалить второй
И наоборот - Если использовать второй вариант - отказаться от первого
Хотя они оба работают вместе , но это мне кажется не нужно так ..
}
FalsePopup:=TpopupMenu.Create(nil);
Application.Initialize;
Application.CreateForm(TForm1, Form1);
with Application.MainForm do
begin
For i:=0 to Application.MainForm.ComponentCount-1 do
begin
{ РАНЕЕ ПРЕДЛОЖЕННЫЙ ВАРИАНТ }{ первый вариант , предложенный WAYFARER }
if (Components[i] is Tmemo) then (Components[i] as TMemo).PopupMenu:=FalsePopup;
if (Components[i] is TEdit) then (Components[i] as TEdit).PopupMenu:=FalsePopup;
{ ТОЖЕ МОЖЕТ БЫТЬ ПОЛЕЗНО ^_^ }{ второй вариант }
functions:=Tfunctions.Create;
if (Components[i] is Tmemo) then (Components[i] as TMemo).OnMouseDown:=@Functions.OnPopup;
if (Components[i] is TEdit) then (Components[i] as TEdit).OnMouseDown:=@Functions.OnPopup;
end;
end;
Application.Run;
{ работает в Linux и Windows ^_^ }
procedure TForm1.Memo1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
Handled := True;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
FalsePopup:=TpopupMenu.Create(nil);
with Application.MainForm do
begin
For i:=0 to ComponentCount-1 do
begin
(Components[i] as Tcontrol).PopupMenu:=FalsePopup;
end;
end;
Application.Run;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 212