Главная страница
    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.049 c
15-1211734774
DVM
2008-05-25 20:59
2008.07.06
Что за программа так оформляет код?


2-1212808366
mik
2008-06-07 07:12
2008.07.06
Приложение не реагирует на нажатие кнопок при работе в цикле.


9-1171566617
vlk32
2007-02-15 22:10
2008.07.06
Есть желающие принять участие в разработке игры?


3-1201092826
IntruderLab
2008-01-23 15:53
2008.07.06
MSSQL инструкция IN


2-1212864651
ply
2008-06-07 22:50
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский