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

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

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

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

Сообщение AlphaBlend » 16.06.2016 01:05:34

кое какая процедура получилась :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;                               
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

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

Сообщение pupsik » 16.06.2016 01:16:56

AlphaBlend а как же OnMouseDown? Он же у вас работал :mrgreen:
А если на некоторых компонентах надо popup?
п.с.
можно и без for...
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

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

Сообщение McLion » 16.06.2016 12:37:41

Спасибо всем, я уже определился, привязываю всем пустую попап-меню, в обьектинспекторе.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

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

Сообщение pupsik » 16.06.2016 19:01:12

Код: Выделить всё
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.

А так, кажись, куда проще. Или нет?
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 222

Рейтинг@Mail.ru