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

Вниз

Как вызвать процедуру наследника   Найти похожие ветки 

 
pum5a   (2003-02-03 18:19) [0]

В общем есть такая штука

TBaseFrom = class(TForm)
...
public
procedure InitView;
...

TBaseForm1 = class(TBaseForm)
...
public
procedure InitView
...

procedure TBaseForm1.InitView;
begin
inherited;
....
end;


Мне нужно что-то вроде этого

procedure IV(f: TBaseForm);
begin
if f<>nil then
f.InitView;
end;


...

IV(BaseForm1);

Но вместо того, чтоб вызвать процедуру класса BaseForm1 вызывается процедура предка :(((
Подсткажите, плиз, где я ошибся. IV(f: TBaseForm1) не пойдет, т.к. вызов этой щтуки происходит для разных наследников.


 
pum5a   (2003-02-03 19:05) [1]

Всё :)). Сам разобрался. Если кому-то интересно - делаем так:

TBaseFrom = class(TForm)
...
public
procedure InitView; dynamic;
...

TBaseForm1 = class(TBaseForm)
...
public
procedure InitView; override;
...


;))) Да здравствует Object Pascal


 
a3m   (2003-02-03 19:06) [2]

вот тебе код:

A = class
...
procedure one; virtual;
...

B = class (A)
...
procedure one;override;
begin
inherited;
...
end;

вызываем так:
функция one виртуальная, в потомке (B) перекрывается (override).. Если объект some класса B (даже если он объявлен как some : A, но some := B.Create), то some.one - вызовет имеено one класса B.

по-моему это так. если, конечно, вопрос правильно понял...


 
uw   (2003-02-03 22:09) [3]

Про dynamic пока забудь.


 
pum5a   (2003-02-05 01:37) [4]

tnx


>uw: Про dynamic пока забудь.



Virtual versus dynamic
Virtual and dynamic methods are semantically equivalent. They differ only in the implementation of method-call dispatching at runtime. Virtual methods optimize for speed, while dynamic methods optimize for code size.
In general, virtual methods are the most efficient way to implement polymorphic behavior. Dynamic methods are useful when a base class declares many overridable methods which are inherited by many descendant classes in an application, but only occasionally overridden.

В моём случае скорее dynamic



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

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

Наверх





Память: 0.45 MB
Время: 0.014 c
14-38438
yUrrius
2003-01-28 13:14
2003.02.13
Распаковка архивов


14-38460
Dr.L.
2003-01-30 11:00
2003.02.13
Существует ли аналог Visual SourceSafe для Delphi ?


14-38448
Мазут Береговой
2003-01-30 02:17
2003.02.13
Господа! Кто и когда из вас зубы чистит?


9-38000
Ev_genus
2002-05-10 12:41
2003.02.13
Чем DelphiX хуже Direct API. (Это не вопрос)


6-38428
s002156Shurik
2002-12-18 13:43
2003.02.13
Z-MODEM





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