Главная страница
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.014 c
1-518
yul
2003-04-20 15:01
2003.05.01
RadioGroup


14-704
Wonder
2003-04-11 11:21
2003.05.01
Задача + спор


14-732
Comper
2003-04-13 17:38
2003.05.01
Нужен компонент


4-844
LeReve
2003-02-28 16:22
2003.05.01
как создать ToolBar стилем как в Word XP?????


1-633
AlexAvz
2003-04-18 16:53
2003.05.01
Многооконные документы