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

Вниз

Вызов метода родителя родителя класса   Найти похожие ветки 

 
dima74   (2003-08-06 20:13) [0]

Пусть есть некий класс Class1 с методом Metod1. От него порождён Class2 с кучей полезных мне методов и свойств. Там есть и переопределённый Metod1:
Procedure Class2.Metod1;
Begin
Inherited;

Здесь то, что мне абсолютно не нужно

end
Я создаю свой класс Class3 порождённый от Class2 с парой дополнительных методов. А вот результат работы Metod1 мне нужно такой, какой он был в Class1. Как мне этого добиться?


 
HolACost?   (2003-08-06 20:22) [1]

Можно впринципи приведя к типу ээтого класса self, но есть ограничения!


 
Романов Р.В.   (2003-08-06 21:10) [2]

Dimka Maslov © (03.12.02 16:36)
type
TFunc = function (Self: TObject): Boolean;

function TSomeClass.Func: Boolean;
var
Func: TFunc;
begin
Func := @TGrandfatherClass.Func;
Result := Func(Self);
end;



 
Alex Konshin   (2003-08-07 05:53) [3]

Более корректно будет так:

THackMethod = function ( <arguments> ): <result_type> of object;


var
rMethod : THackMethod;

...

with TMethod(rMethod) do
begin
Data = Self;
( <arguments>)
Более корректно будет так:

THackMethod = function ( <arguments> ): <result_type> of object;


var
rMethod : THackMethod;

...

with TMethod(rMethod) do
begin
Data = Self;
Code = @<grandfather_class>.<method_name>;
end;
rMethod(<arguments>);



Реально этот прием позволяет вызвать любой метод любого класса, нужно лишь суметь достать адрес метода.


 
minva   (2003-08-07 08:46) [4]

А если <method_name> в привате описан?


 
Skier   (2003-08-07 08:48) [5]

http://delphi5.times.lv/source/api20.htm


 
Palladin   (2003-08-07 10:32) [6]

на какой черт тебе переопределять то что переопределять не надо?



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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
3-68215
niko4543
2003-07-28 09:46
2003.08.21
Как всегда DBGrid


14-68552
Juster
2003-08-04 19:25
2003.08.21
Кодек!


1-68287
Melamed
2003-08-06 22:01
2003.08.21
Вопрос по Tool API


8-68410
Opera
2003-04-12 14:11
2003.08.21
Play List


3-68212
Magic&Wizard
2003-07-24 20:41
2003.08.21
КАК отловить, что запись в базе уже СУЩЕСТВУЕТ





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