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

Вниз

WndProc у TPageControl   Найти похожие ветки 

 
Yakudza ©   (2004-08-16 18:48) [0]

Как правильно переписать WndProc например у TPageControla который лежит на форме.


 
wicked ©   (2004-08-16 18:53) [1]

OldWndProc := PageControl1.WindowProc;
PageControl1.WindowProc := MyWndProc;


 
имя   (2004-08-17 10:12) [2]

Удалено модератором


 
Yakudza ©   (2004-08-17 13:35) [3]

OldWndProc := PageControl1.WindowProc;
А это обязательно.

MyWndProc может люой процедурой ?


 
Yakudza ©   (2004-08-17 13:37) [4]

Вообщем-то понятно как это реализовать если делать свой PageControl1, а вот не получаеться у уже лежащего на форме PageControl1 переписать WndProc. :(


 
Юрий Зотов ©   (2004-08-17 13:41) [5]

> Yakudza ©   (17.08.04 13:35) [3]

> OldWndProc := PageControl1.WindowProc;
> А это обязательно.

Если Вы собираетесь САМИ обрабатывать ВСЕ сообщения, то не обязательно. Если же не все - то обязательно

> MyWndProc может люой процедурой ?

Об этом написано в F1.

> Yakudza ©   (17.08.04 13:37) [4]

> Вообщем-то понятно как это реализовать если делать свой
> PageControl1, а вот не получаеться у уже лежащего на форме
> PageControl1 переписать WndProc. :(

У формы есть событие OnCreate. Что мешает вставить в его обработчик те самые 2 строчки?


 
Yakudza ©   (2004-08-17 14:00) [6]

Юрий Зотов ©   (17.08.04 13:41) [5]
>Если Вы собираетесь САМИ обрабатывать ВСЕ сообщения, то не обязательно. Если же не все - то обязательно
Как научусь ловить - решу :)
>У формы есть событие OnCreate. Что мешает вставить в его обработчик те самые 2 строчки?
я так и делаю

если я правильно понял то мне нужно обьявить класс MyaPageControl у него
переписать  WndProc и присвоить его нужному контролу, в onCreate ?


 
Yakudza ©   (2004-08-17 14:01) [7]

Я низзя у TForm переписать WndProc и присвоить контролу ?


 
wicked ©   (2004-08-17 17:16) [8]

ну и ну.... :)
делаем так:

...
OldWndProc: TWndMethod;
...
// инициализируемся (в OnCreate например)
...
OldWndProc := PageControl1.WindowProc;
PageControl1.WindowProc := MyWndProc;
...

// собственно ловля и обработка сообщений
procedure TForm1.MyWndProc(var Msg: TMessage);
 procedure CallOldProc;
 begin
   if Assigned(OldWndProc) then OldWndProc(Msg);
 end;
begin
 case Msg.Msg of
   WM_MY_MESSAGE1: ; // сообщение 1
   WM_MY_MESSAGE2: ; // сообщение 2
   WM_MOUSEMOVE: ; // сообщение 3
 // обрабатываем всё, что не лень, не забывая, где надо, вызвать CallOldProc
   else CallOldProc; // вызываем родной обработчик
 end;
end;


за синтаксис извиняйте - уже больше года на паскале не писал... ;)


 
Yakudza ©   (2004-08-17 18:56) [9]

Врубился !
2wicked ©   (17.08.04 17:16) [8]
Больше спасибо!



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

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

Наверх




Память: 0.48 MB
Время: 0.028 c
1-1092677365
Firstborn
2004-08-16 21:29
2004.09.05
TComboBox: странность с Charset


14-1092387785
Layner
2004-08-13 13:03
2004.09.05
Сбор платежей с Сев.Америки, Европы. Как им легче заплатить?


1-1092727923
Cosinus
2004-08-17 11:32
2004.09.05
Корректное создание и вывод сообщений об исключительных ситуациях


4-1090585996
_PG_
2004-07-23 16:33
2004.09.05
Получение некоторых данных из запущенной программы


14-1092401872
Prohodil Mimo
2004-08-13 16:57
2004.09.05
Где найти справочник имён?