Текущий архив: 2004.08.01;
Скачать: CL | DM;
ВнизКак отследить мессадж WM_KeyDown при редактировании Edita Найти похожие ветки
← →
AlexR (2004-07-16 04:10) [0]Сабж. Можно ли разрешить срабатывание мессага WM_KeyDown при редактировании текста в поле Edit
← →
TUser © (2004-07-16 04:19) [1]Надо написать своего наследника.
← →
AlexR (2004-07-16 04:31) [2]
> TUser © (16.07.04 04:19) [1]
А что дальше. Что где прописывать?
← →
TUser © (2004-07-16 04:46) [3]Ну, сделай, например, так
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure MyOn(Sender:TObject);
{ Private declarations }
public
{ Public declarations }
end;
TMyEdit = class(TEdit) // TCustomEdit
private
FOnMyKeyDown:TNotifyEvent;
procedure WMKD(var Msg:TWMKeyDown); message wm_keydown;
published
property OnMyKeyDown:TNotifyEvent read FOnMyKeyDown write FOnMyKeyDown;
end;
var
Form1: TForm1;
Ed1:TMyEdit;
implementation
{$R *.dfm}
procedure TMyEdit.WMKD(var Msg:TWMKeyDown);
begin
if assigned(FOnMyKeyDown) then
FOnMyKeyDown(Self);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Ed1:=TMyEdit.Create(Application);
Ed1.top:=10;
Ed1.left:=20;
Ed1.Parent:=Self;
Ed1.OnMyKeyDown:=MyOn;
end;
procedure TForm1.MyOn(Sender:TObject);
begin
Caption:="Key downed :)";
end;
end.
Только чем тебе не угодило стандартное событияе OnKeyDown, зачем еще сообщение ловить?
← →
Ega23 © (2004-07-16 10:13) [4]Брось на форму TApplicationEvents, в нём в OnMessage и пиши
if (msg.hwnd=Edit1.Handle) and (msg.Message=WM_KeyDown) then ....
← →
Гаврила © (2004-07-16 11:43) [5]
> TUser © (16.07.04 04:19) [1]
> Надо написать своего наследника.
В общем случае писать наследника необязательно.
Можно просто присвоить в качестве оконной процедуры указатель на свой обработчик
Страницы: 1 вся ветка
Текущий архив: 2004.08.01;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.037 c