Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.01;
Скачать: CL | DM;

Вниз

Два вопроса по интерфейсам   Найти похожие ветки 

 
Igorek ©   (2003-04-18 21:06) [0]

Доп. есть такой код:

TI = interface
[...GUID...]
procedure FI;
end;

TA = class(TI)
procedure FI; virtual;//реализацию опускаю
end;

TB = class(TA, TI)
procedure FI; override;
function GetMyI: TI;
property MyI: TI read GetMyI imlements TI;
end;

function TA.GetMyI: TI;
begin
if <SomeCondition> then
Result := <Some TI>
else
Result := inherited TI;
end;

Два вопроса:
1) в класе TB кто реализует метод FI? - метод этого класса или метод свойства, реализующего интерфейс?
2) (посложнее) как правильно написать строчку
Result := inherited TI;
т.е. обратиться к реализации интерфейса предка?


 
Набережных С.   (2003-04-19 07:35) [1]

1) Оба. В какой попадешь смотри ниже.
2) Например, так:
function TB.GetMyI: TI;
begin
if <SomeCondition> then
Result := <Some TI>
else
Result := TA(Self);
end;
Но обратиться через интерфейс ты сможешь либо к методу FI класса TB, т.к. метод виртуальный, либо к <Some TI>.FI


 
_VaaL_   (2003-04-19 10:26) [2]

По первому вопросу:
Советую методы класса ТА тоже описать как интерфейс. Тогда проще будет разобратся с первым вопросом. Напимер
TI = interface
["{GUID}"]
procedure FI;
end;

TA = interface(TI)
["{GUID}"]
end;

TB = class(TComponent, TA, TI)
procedure FI;
Procedure FI2;
procedure TI.FI = FI;
procedure TA.FI = FI2;
end;

тогда ты имеешь чёткое представление, метод какого интерфейса ты вызываешь.


 
Igorek ©   (2003-04-19 19:23) [3]

2Набережных С. (19.04.03 07:35)
Спасибо, TA(Self) - вроде то что нужно, осталось проверить.

2_VaaL_ (19.04.03 10:26)
К сожалению это редакторы свойств и предка я не выбираю. Да и методов там поболее, лень все писать. :-)



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

Текущий архив: 2003.05.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
1-526
Silver_
2003-04-17 14:44
2003.05.01
DateTimeFormat - Во всем приложении


14-764
Михайлов Антон
2003-04-13 19:33
2003.05.01
MainMenu


1-635
LEON
2003-04-11 17:27
2003.05.01
Как вставить картинку (BMP) в TRichEdit? чтобы пользователь мог у


3-463
Silver_
2003-04-14 11:22
2003.05.01
ADODataSet, как узнать имя его поля -


1-621
tytus
2003-04-19 10:33
2003.05.01
button