Главная страница
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
4-826
kva
2003-03-03 16:45
2003.05.01
Картинка с прозрачным фоном в системном меню формы


7-795
mda
2003-03-12 13:59
2003.05.01
Непонятная ошибка


14-775
M_A_M
2003-04-15 11:43
2003.05.01
Защита програмного продукта


7-805
cat_si
2003-03-13 16:17
2003.05.01
Как выдавать звук только через спикер?


14-787
kedis
2003-04-15 16:51
2003.05.01
Построение отчетов в стиле 1С Бухгалтерии (без Microsoft Office)