Главная страница
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.017 c
1-92535
Администратор
2002-10-15 18:40
2002.10.28
Простые числа, Года, Предсказание счастья ( не реклама)%)


3-92334
Natalie
2002-10-05 22:46
2002.10.28
не могу создать таблицу!!


1-92554
LongIsland
2002-10-16 13:24
2002.10.28
Копирование данных из буфера в TStringGrid


1-92492
dIX MoD
2002-10-11 16:24
2002.10.28
Программирование в Delph е (связь с др, прогами)


14-92701
PavelOKES
2002-10-08 09:52
2002.10.28
ADO