![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 | |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
хочется написать очень много матерных слов, но постараюсь изложить проблему вкратце:
есть такой класс - TControl, думаю все знают... в этом классе есть процедура: procedure TControl.WMLButtonDown(var Message: TWMLButtonDown); и в этой процедуре есть просто гениальная строка: inherited; Может кто-нибудь объяснить, что она наследует?... Класс TControl наследуется от TComponent: Цитата:
буду очень признателен! |
|
![]() |
![]() |
![]() |
#2 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,428
|
![]()
http://www.transl-gunsmoker.ru/2011/...inherited.html
Цитата:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() Последний раз редактировалось BDA; 30.05.2013 в 00:37. |
|
![]() |
![]() |
![]() |
#3 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
Человек_Борща, я примерно понимаю что такое inherited и сам много раз осмысленно им пользовался.
но вот в этом конкретном случае все было бы ништяк, если не одно "но": Цитата:
что если в базовом классе нет такого метода, то вызов inherited ни к чему не приведет. в таком случае логично ли утверждать, что если этот inherited ни к чему не приводит - то его можно просто закомментить и это никак не скажется на результате? |
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
xrob, не для ООП в этом случае inherited написан.
Просто сообщение идет дальше по цепочке оконных сообщений, подразумевается DispatchMessage. Возьмите закомментируйте, и перекомпилируйте VCL, и полюбуйтесь на глюки. Цитата:
Последний раз редактировалось Человек_Борща; 30.05.2013 в 14:40. |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
Человек_Борща, да, меня это и напрягало, что inherited здесь якобы ничего не значит,
но если его закоментить, потом неправильно работают компоненты... вот и возникает вопрос - получается какую-то роль он все-таки играет. ps: я тут ковыряю ComboBox, пытаюсь найти место, в котором у него список раскрывается... путем нехитрых манипуляций с ShowMessage удалось выяснить что это происходит в inherited у TControl.WMLButtonDown. теперь я в тупике... |
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
inherited в случае сообщений означает или передать классу-предку обработку, или функции DefWindowProc, то есть винде(а точнее порою стандартному классу окна). Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чудеса с printf | BrookBond | Общие вопросы C/C++ | 9 | 10.03.2013 23:28 |
иерархия наследования | WizarD.89 | Общие вопросы по Java, Java SE, Kotlin | 1 | 07.11.2012 23:31 |
Класс наследования | wwe2012 | Общие вопросы C/C++ | 0 | 02.04.2011 09:41 |
Чудеса | Vikenty | Свободное общение | 10 | 14.10.2010 20:27 |
Чудеса в Borland C++ 3.1 | LightWarrior | Общие вопросы C/C++ | 5 | 06.01.2010 03:37 |