Вниз
Скачать: CL | DM;

Как Запретить сообщение ?   Найти похожие ветки 

 
Nikk   (2005-11-01 15:49) [0]

Нужно заблокировать событие клика мыши, что бы оно не дошло до компонента. Как можно это сделать?
Исходников компонента нету, по этому такая проблема.


 
BFG9k ©   (2005-11-01 16:06) [1]

Обработай сообщение до того, как оно придет в компонент.


var M:TMessage;

...

M.Result:=0;



 
Leonid Troyanovsky ©   (2005-11-01 16:06) [2]


> Nikk   (01.11.05 15:49)


> Нужно заблокировать событие клика мыши, что бы оно не дошло
> до компонента. Как можно это сделать?

TControl - procedure Click; override

> Исходников компонента нету, по этому такая проблема.

Безразлично.

--
Regards, LVT.


 
wicked ©   (2005-11-01 21:19) [3]

имхо, лучше использовать св-во WindowProc.... подробности - в справке....


 
evvcom ©   (2005-11-02 09:30) [4]

Возможно, достаточно будет из ControlState исключить csClickEvents


 
Lexer ©   (2005-11-02 11:54) [5]

Поддерживаю [3], переопределяешь WndProc и игнорируешь ненужные сообщения

FLastButtonWndProc: TWndMethod;
procedure ButtonWndProc(var Message: TMessage);

FLastButtonWndProc := Button1.WindowProc;  
Button1.WindowProc := ButtonWndProc;

procedure TForm1.ButtonWndProc(var Message: TMessage);
begin
 if not(Message.Msg = WM_LBUTTONDOWN or Message.Msg = WM_RBUTTONDOWN) then  FLastButtonWndProc(Message);
end;


 
umbra ©   (2005-11-02 12:49) [6]

можно вот так


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, AppEvnts, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ApplicationEvents1: TApplicationEvents;
   procedure ApplicationEvents1Message(var Msg: tagMSG;
     var Handled: Boolean);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
begin
   if msg.hwnd = Button1.Handle then
     if (Msg.message = WM_LBUTTONDOWN) or (Msg.message = WM_LBUTTONUP)
         or (msg.message = WM_LBUTTONDBLCLK) then
     begin
       Handled := True;
     end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage("!!!");
end;

end.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
2-1131520558
Al_Ba
2005-11-09 10:15
2005.11.27
Просто вопросик


14-1131477282
LordOfRock
2005-11-08 22:14
2005.11.27
Властелин Колец 3: Возвращение Бомжа


14-1131121160
psa247
2005-11-04 19:19
2005.11.27
Замена TaskManager


14-1131523910
Zacho
2005-11-09 11:11
2005.11.27
Фантастика про армию и войну Игоря Поля


14-1131377741
DiamondShark
2005-11-07 18:35
2005.11.27
Net 2.0 и все-все-все




   Наверх