![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оператор inherited [D7, WinXP]
Хой © (2006-06-13 10:08:00)Помогите разобраться в исходниках.
Есть обработчик нажатия кнопки в выпадающем меню, в нём следующий текст
procedure TfrmMain.N5Click(Sender: TObject);
begin
inherited;
end;
то есть в процедуре выполняеться единственный оператор inherited
Как мне оъяснили, что это оператор наследования, то есть есть форма предок, а это форма потомок, если есть оператор inherited то сначало выполняються операторы в процедуре предка с одноимённым названием, форму предка можно узнать в описании класса: вот описание TfrmMain = class(TIniForm), следовательно форма предок для формы frmMain являеться IniForm. Открыл модуль формы IniForm но процедуры с названием N5Click не нашёл. Помогите пожалуйста разобраться с оператором inherited, может я что то не так понял, в литературе подробного описания оператора inherited я так и не нашёл. Вобще где искать код выполнения если используеться оператор inherited ? Ведь програма работает, причём этот оператор используеться в програме несколько раз, при этом выполняються разные дейвствия.
evvcom (2006-06-14 08:47:00) [1]
> Точнее - не компилируется.
Речь про обработчики. Скомпилится.
TUser (2006-06-13 20:08:00) [2]> Если в родительском классе такой процедуры нет, то inherited просто ничего не делает
Точнее - не компилируется.
Хой (2006-06-13 13:55:00) [3]Короче всё я разобрался, всем спасибо за помощь.
Плохиш (2006-06-13 13:10:00) [4]
> Чапаев © (13.06.06 12:38) [8]
>
> > D7 (да и все предыдушие версии) код приведённый в [0]
> выкинет
> > как мусор при первом же сохранении проекта.
>
> С чего бы?
Странно,
у меня D все обработчики событий с одной командой inherited выкидываются.
> Сперва попробуй с наследованием форм поработать, тогда говори.
Может раскажите, как Вы так интересно формы наследуете, что такой мусор получаете?
Чапаев (2006-06-13 12:38:00) [5]
> D7 (да и все предыдушие версии) код приведённый в [0] выкинет
> как мусор при первом же сохранении проекта.
С чего бы? Сперва попробуй с наследованием форм поработать, тогда говори.
Плохиш (2006-06-13 12:00:00) [6]
> Хой (13.06.06 11:11) [5]
> Но програма ведь работает, по нажатию этого пункта меняю,
> выполняються нужные дейвствия.
И при чём здесь procedure TfrmMain.N5Click(Sender: TObject);?
И вообще разводом воняет, т.к. D7 (да и все предыдушие версии) код приведённый в [0] выкинет как мусор при первом же сохранении проекта.
Сергей М. (2006-06-13 11:16:00) [7]Отладчиком пользоваться умеешь ?
Хой (2006-06-13 11:11:00) [8]Но програма ведь работает, по нажатию этого пункта меняю, выполняються нужные дейвствия.
Сергей М. (2006-06-13 10:47:00) [9]
> Хой (13.06.06 10:08)
За неимением одноименного метода в классе-предке компилятор попросту молча игнорирует этот самый inherited.
Хой (2006-06-13 10:40:00) [10]Если в родительском классе такой процедуры нет, то inherited просто ничего не делает
-----------------------------------------------
Ну ведь когда я компилирую проект, по нажатию этого пункта меню выполняються выполняються определённые дейвствия.
inherited вызывает выполнение метода с таким же именем, унаследованного от одного (не обязательно от непосредственного, в нем может не быть) из предков класса
------------------------------------------------
У формы TIniForm только один предок Tform, вот код TIniForm = class(TForm).
То есть стандартная форма, из поставки Delphi.
Desdechado (2006-06-13 10:18:00) [11]inherited вызывает выполнение метода с таким же именем, унаследованного от одного (не обязательно от непосредственного, в нем может не быть) из предков класса
DrPass (2006-06-13 10:16:00) [12]
> Открыл модуль формы IniForm но процедуры с названием N5Click
> не нашёл.
Если в родительском классе такой процедуры нет, то inherited просто ничего не делает