![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как Запретить сообщение ? [D7, WinXP]
Nikk © (2005-11-01 15:49:00)Нужно заблокировать событие клика мыши, что бы оно не дошло до компонента. Как можно это сделать?
Исходников компонента нету, по этому такая проблема.
umbra (2005-11-02 12:49:00) [1]можно вот так
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.
Lexer (2005-11-02 11:54:00) [2]Поддерживаю [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;
evvcom (2005-11-02 09:30:00) [3]Возможно, достаточно будет из ControlState исключить csClickEvents
wicked (2005-11-01 21:19:00) [4]имхо, лучше использовать св-во WindowProc.... подробности - в справке....
BFG9k (2005-11-01 16:06:00) [5]Обработай сообщение до того, как оно придет в компонент.
var M:TMessage;
...
M.Result:=0;
Leonid Troyanovsky (2005-11-01 16:06:00) [6]
> Nikk (01.11.05 15:49)
> Нужно заблокировать событие клика мыши, что бы оно не дошло
> до компонента. Как можно это сделать?
TControl - procedure Click; override
> Исходников компонента нету, по этому такая проблема.
Безразлично.
--
Regards, LVT.