![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как же все таки поменить оконную функцию TEdit ??? :(( HELP! [D5, Win95/98]
pirat © (2002-10-16 22:30:00)Помогите кто может!
пишу
TFloatEdit = class(TEdit)
protected
procedure WndProc(var Message: TMessage);override;
end;
и потом
procedure TFloatEdit.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_KEYDOWN then
begin
Message.Result :=0;
end
else
inherited WndProc(Message);
end;
по идее, когда result становится равным 0 обработка должна прекратиться, то есть при нажатии на кнопки ничего вводится не должно. Однако фигушки!!! Все работает :(((((( Отсюда вывод - что WndProc не учавствует в цепочке обработки. Так что же мне заменять??
HELP!
pirat (2002-10-17 15:09:00) [1]ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!
Я в начале тоже самое писал только OldWindow:pointer сделал, и у меня ни фига не получалось :)
Вот что в итоге
TFloatEdit = class(TEdit)
public
OldProc: TWndMethod;
constructor Create(AOwner: TComponent); override;
procedure NewProc(var msg: TMessage);
end;
constructor TFloatEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
OldProc := self.WindowProc;
self.WindowProc := self.NewProc;
end;
procedure TFloatEdit.NewProc(var msg: TMessage);
begin
if (msg.Msg <> WM_KEYDOWN) and
(msg.Msg<>WM_KEYUP) and
(msg.Msg<>WM_CHAR) then
OldProc(msg)
else
msg.Result:=0;
end;
MBo (2002-10-17 06:42:00) [2]Без создания нового компонента:
private
OldProc: TWndMethod;
procedure NewProc(var msg: TMessage);
в OnCreate
OldProc := Scrollbox1.WindowProc;
Scrollbox1.WindowProc := NewProc;
procedure TForm1.NewProc(var msg: TMessage);
begin
case msg.Msg of
WM_VSCROLL: label1.caption:="vert";
WM_HSCROLL: label1.caption:="horiz";
end;
OldProc( msg );
end;
pirat (2002-10-16 23:17:00) [3]у меня появляется желание залезть на стенку :(
Дело было не только в WM_KEYDOWN ... хотелось бы всю процедуру подменить.
TTCustomDelphiMaster (2002-10-16 22:54:00) [4]TFloatEdit = class(TEdit)
protected
procedure WMChar(var Message: TWMChar); message WM_CHAR;
end;
procedure TFloatEdit.WMChar(var Message: TWMChar);
begin
//inherited;
end;
Eazy (2002-10-16 22:48:00) [5]Шучу, конечно.
procedure WMKEYDON (Var Message: TMessage);message WM_KeyDown;
Eazy (2002-10-16 22:43:00) [6]OnKeyPress etc