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

Вниз

Делегирование реализации интерфейсов   Найти похожие ветки 

 
Priest ©   (2006-02-07 11:34) [0]

Вот такая конструкция работает нормально

unit Unit1;

interface
Uses Classes;
type
 IMyIntf = interface(IInterface)
   procedure DoAct;
 end;

 TMyComp1 = class(TComponent,IMyIntf)
 public
  procedure DoAct;
 end;

 TMyUserIntf = class(TComponent)
 private
   FIntf: IMyIntf;
   procedure SetIntf(const Value: IMyIntf);
 published
   property Intf: IMyIntf read FIntf write SetIntf;
 end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("MyComp",[TMyComp1,TMyUserIntf]);
end;

procedure TMyUserIntf.SetIntf(const Value: IMyIntf);
begin
 FIntf := Value;
end;

procedure TMyComp1.DoAct;
begin
//
end;

end.

Если же я делегирую реализацию интерфейса, то не могу его присвоить в дезайн-тайм. при этом значение выбирается и присваивается, но не показывается в инспекторе и не записывается в дфм. вот проблемный код.
unit Unit1;

interface
uses Classes;
type
 IMyIntf = interface(IInterface)
   procedure DoAct;
 end;

 TMyComp1 = class(TComponent, IMyIntf)
 private
   FInterf: IMyIntf;
 public
   constructor Create(AOwner: TComponent); override;
   property Interf: IMyIntf read FInterf implements IMyIntf;

 end;

 TMyUserIntf = class(TComponent)
 private
   FIntf: IMyIntf;
   procedure SetIntf(const Value: IMyIntf);
 published
   property Intf: IMyIntf read FIntf write SetIntf;
 end;

 TIMyIntfImplementer = class(TInterfacedObject, IMyIntf)
   procedure DoAct;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("MyComp", [TMyComp1, TMyUserIntf]);
end;

procedure TMyUserIntf.SetIntf(const Value: IMyIntf);
begin
 FIntf := Value;
end;

constructor TMyComp1.Create(AOwner: TComponent);
begin
 inherited;
 FInterf := TIMyIntfImplementer.Create;
end;

procedure TIMyIntfImplementer.DoAct;
begin
//
end;

end.


 
jack128 ©   (2006-02-07 11:41) [1]

Priest ©   (07.02.06 11:34)
Если же я делегирую реализацию интерфейса, то не могу его присвоить в дезайн-тайм. при этом значение выбирается и присваивается, но не показывается в инспекторе и не записывается в дфм. вот проблемный код.


Ну сам запиши свойство в dfm" ник, в чем проблема, то..



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

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

Наверх




Память: 0.47 MB
Время: 0.035 c
15-1155342176
belly_tiamat
2006-08-12 04:22
2006.09.10
Протокол HILTI дальномер PD28


6-1145597801
ms_odin
2006-04-21 09:36
2006.09.10
Анализ и обработка служебной информации


15-1155573637
qqqqqqq
2006-08-14 20:40
2006.09.10
Кто разбирается в ОС (Unix,Linux)? Какой Linux посоветуете?


1-1154058249
DimonS
2006-07-28 07:44
2006.09.10
Расстояние по GPS


15-1155727986
Иксик
2006-08-16 15:33
2006.09.10
Сон