Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.029 c
4-1147544916
parovoZZ
2006-05-13 22:28
2006.09.10
Аналог TWebBrowser-а на апях


1-1153902869
DmitryK
2006-07-26 12:34
2006.09.10
Работа с RTF


1-1153921160
RedLeo
2006-07-26 17:39
2006.09.10
Анализ строк в TStringList


2-1155895482
иван8511
2006-08-18 14:04
2006.09.10
Как сделать папку активной?


15-1155811350
Layner
2006-08-17 14:42
2006.09.10
Сок, который в коробках продается по 0,2/0,5/1...




   Наверх