Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизОбработка cm_mouseleave в ядре Найти похожие ветки
← →
Mihey (2004-01-24 00:29) [0]Использую код по этому примеру:
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
private { Private declarations }
FPanel1WndProc: procedure (var Message: TMessage) of object;
public { Public declarations }
procedure Panel1WndProc(var Message: TMessage);
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Panel1WndProc(var Message: TMessage);
begin
FPanel1WndProc(Message);
case Message.Msg of
CM_MOUSELEAVE: begin
if Message.LParam = integer(Button1) then
ShowMessage("By-by, mouse");
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FPanel1WndProc:=Panel1.WindowProc; Panel1.WindowProc:=Panel1WndProc;
end;
end.
В результате при выходы мыши с контрола получаю кучу окошек. Наверное, сообщение надо уничтожать. Что делать?
← →
kull (2004-01-24 01:40) [1]Обязательно сообщение выводить? Или вместо него должен быть другой код, а ShowMessage - для примера?
← →
Mihey (2004-01-24 23:24) [2]В принципе, необязательно. Я хотел вставить довольно медленный код (перерисовка контрола), но как бы можно и обойтись. Но всё же, можно ли что-нибудь сделать?
← →
Mihey (2004-01-26 00:26) [3]Алё! Up!
← →
Сергей Чурсин (2004-01-26 02:17) [4]Для чего вообще городить оконную процедуру...
http://deeco.h1.ru/cgi-bin/file8.php?text=2
Обработка же, по-моему, должна выглядеть так (для класса) :
case Message.Msg of
WM_LBUTTONDOWN: begin
XM:=Message.LParamLo;
YM:=Message.LParamHi;
////////////..
end;
WM_LBUTTONDBLCLK: begin
XM:=Message.LParamLo;
YM:=Message.LParamHi;
////////////..
end;
// И в конце!
else inherited WndProc(Message);
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c