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

Вниз

обработка сообщений и наследование   Найти похожие ветки 

 
msg   (2008-06-05 14:57) [0]

подскажите как должно быть на самом деле.
исходные данные:
mdi приложение.
главное окно - унаследовано от базовой формы.
в базовой форме есть обработчик wm_user + 1000;
при посылке сообщения наследнику (application.mainform) обработчик срабватывает.

mdi чайлды так же унаследованы от базового класса (отличного от базового класса главной формы). в базовом классе тоже есть обработчики wm_user + 1000.
Но когда в цикле перебираем mdi чайлды и шлем им wm_user + 1000 то никаких вызовов в наследниках не происходит.


 
ZENsan ©   (2008-06-05 15:09) [1]

Исходник можно чуток?


 
msg   (2008-06-05 15:25) [2]

for i := 0 to MdiChildCount - 1 do PostMessage(MdiChild[i].Handle,WM_USER+1000,0,0);

...

procedure TMyBaseMdiChildClass.OnMessage(var Msg : TMessage); message wm_user + 1000;
begin
CallMyVirtualMethod;
end;

После цикла в потомках не происходит вызова виртуального перекрытого CallMyVirtualMethod;


 
Игорь Шевченко ©   (2008-06-05 15:27) [3]

msg   (05.06.08 15:25) [2]

мало кода.


 
msg   (2008-06-05 15:35) [4]

мне просто интересно, должен ли сработать статический обработчик сообщения в предке, если сообщение послылается окну его наследника.
в наследнике обработчика нет.


 
Игорь Шевченко ©   (2008-06-05 15:40) [5]


> должен ли сработать статический обработчик сообщения в предке,
>  если сообщение послылается окну его наследника.
> в наследнике обработчика нет


Должен


 
msg   (2008-06-05 15:42) [6]

вот теперь все понятно. сенкс.


 
ZENsan ©   (2008-06-05 17:35) [7]

инхеритед...


 
ZENsan ©   (2008-06-05 17:36) [8]

вообще в потомках помоему и нельзя переопределять эту процедуру.
Лучше сделай виртуальнй метод который вызвать там будешь


 
Игорь Шевченко ©   (2008-06-05 17:39) [9]


> вообще в потомках помоему и нельзя переопределять эту процедуру.


можно


 
ZENsan ©   (2008-06-05 17:49) [10]

Погоди. Ради интереса.. А как это ты procedure OnSomeMSG(vat TMessage); message WM_SOMEMESSAGE; перекрывать будешь в потомках.
Мне интересно. Ведь описать их как виртуальную нелзя...


 
ZENsan ©   (2008-06-05 17:50) [11]

Или написав просто inherited ты это подразумевал..


 
Palladin ©   (2008-06-05 18:25) [12]

директива message уже подразумевает свойства полиморфизма у метода... и, кстати, в справке об этом однозначно дали понять...


 
ZENsan ©   (2008-06-05 19:48) [13]

Ну это не чистий полиморфизм конечно.. а емуляция его.


 
Игорь Шевченко ©   (2008-06-05 20:10) [14]


> Ну это не чистий полиморфизм конечно


это чистый полиморфизм


 
ZENsan ©   (2008-06-06 11:52) [15]

Да. Полностью согласен. Беру слова назад. Полиморфизм, правда с другой внутренней реализацией.



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

Форум: "Начинающим";
Текущий архив: 2008.07.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.078 c
11-1189512903
SergeR
2007-09-11 16:15
2008.07.06
Вопрос по KOLmdvShellControls


2-1212932812
Ден
2008-06-08 17:46
2008.07.06
Управление окнами других приложений


15-1211727630
TIF
2008-05-25 19:00
2008.07.06
Получить все возможные комбинации символов :(


15-1211227922
Житель_форума
2008-05-20 00:12
2008.07.06
E-mail - > сайт


6-1190026272
AlexxXes
2007-09-17 14:51
2008.07.06
Нужен ли прокси?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский