Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Оператор 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 просто ничего не делает


Наверх

Титульная страница Поиск, карта сайта Написать письмо