Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];

Вниз

Как же все таки поменить оконную функцию 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
4-92774
catcher
2002-09-13 11:20
2002.10.28
Как найти все сегменты памяти чужого процесса, для чтения из них?


1-92448
Sego
2002-10-15 14:46
2002.10.28
Twebbrowser ?


14-92714
Smiths
2002-10-08 18:28
2002.10.28
Давно хотел спросить


4-92805
Rainmaker
2002-09-16 13:53
2002.10.28
Цветная TButton


1-92463
Alex__V
2002-10-18 08:27
2002.10.28
Удаление записи в типизированном файле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский