Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

Как же все таки поменить оконную функцию TEdit ??? :(( HELP!   Найти похожие ветки 

 
pirat ©   (2002-10-16 22:30) [0]

Помогите кто может!
пишу

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!


 
Eazy   (2002-10-16 22:43) [1]

OnKeyPress etc


 
Eazy   (2002-10-16 22:48) [2]

Шучу, конечно.
procedure WMKEYDON (Var Message: TMessage);message WM_KeyDown;


 
TTCustomDelphiMaster ©   (2002-10-16 22:54) [3]

TFloatEdit = class(TEdit)
protected
procedure WMChar(var Message: TWMChar); message WM_CHAR;
end;

procedure TFloatEdit.WMChar(var Message: TWMChar);
begin
//inherited;
end;


 
pirat ©   (2002-10-16 23:17) [4]

у меня появляется желание залезть на стенку :(
Дело было не только в WM_KEYDOWN ... хотелось бы всю процедуру подменить.


 
MBo ©   (2002-10-17 06:42) [5]

Без создания нового компонента:

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-17 15:09) [6]

ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!
Я в начале тоже самое писал только 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;



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

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
1-92571
Fog
2002-10-16 20:34
2002.10.28
Сканирование каталога...


3-92353
KidMan
2002-09-30 22:16
2002.10.28
Соеденение с MSSQL


1-92560
TankMan
2002-10-14 21:21
2002.10.28
Проблема... с TStrings.


14-92659
[NIKEL]
2002-10-06 23:32
2002.10.28
Бухгалтерам


14-92712
VictorT
2002-10-08 14:12
2002.10.28
Приколитесь.