Отключить правую кнопку мыши

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
AlphaBlend
постоялец
Сообщения: 207
Зарегистрирован: 22.05.2016 09:13:10

Сообщение AlphaBlend »

кое какая процедура получилась :mrgreen:

Код: Выделить всё

procedure DisablePopupMenuInAll;
  var
    FormCount,Iterations:Cardinal;
    FalsePopup:TPopupMenu;
  begin
     FalsePopup:=TpopupMenu.Create(nil);
     for FormCount:=0 to Application.ComponentCount-1 do
         begin
              for Iterations:=0 to (Application.Components[FormCount] as Tform).ComponentCount-1 do
                  begin
                       ((Application.Components[FormCount] as Tform).Components[Iterations] as Tcontrol).PopupMenu:=FalsePopup;
                  end;
         end;
 end;                               


Отключает на всех формах проекта ( на тех , которые создаются как Application.CreateForm ...

применима вот так :

Код: Выделить всё

Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);

  { ... много много форм  проекта...}

  {Application.CreateForm(TFormN, FormN);}

  { попуп меню везде  отключается }
   DisablePopupMenuInAll;
   Application.Run;                               
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

AlphaBlend а как же OnMouseDown? Он же у вас работал :mrgreen:
А если на некоторых компонентах надо popup?
п.с.
можно и без for...
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Спасибо всем, я уже определился, привязываю всем пустую попап-меню, в обьектинспекторе.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

Код: Выделить всё

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Menus, Types;

type

   { TEdit }

   TEdit = class(StdCtrls.TEdit)
   private
    fdisable : boolean;
    procedure ContextPopup(Sender: TObject; MousePos: TPoint;
                               var Handled: Boolean);
   public
    constructor Create(AOwner: TComponent); override;
    property DisableM : boolean read fdisable write fdisable;
  end;

type

  { TForm1 }

  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Memo1: TMemo;
    MenuItem1: TMenuItem;
    PopupMenu1: TPopupMenu;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit4.DisableM := false;
end;

{ TEdit }

procedure TEdit.ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin
  if fdisable then
    Handled := true;
end;

constructor TEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fdisable := true;
  OnContextPopup := @ContextPopup;
end;

end.

А так, кажись, куда проще. Или нет?
Ответить