Вниз
Скачать: 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.026 c
1-1154126106
Цукор5
2006-07-29 02:35
2006.09.10
Ссылка на кокласс внутри другого кокласса


15-1155627150
vidiv
2006-08-15 11:32
2006.09.10
Вопрос по HTML про <img ismap> и javascript


15-1155645054
гастрит
2006-08-15 16:30
2006.09.10
скрипт


2-1155804709
UMU
2006-08-17 12:51
2006.09.10
Вычесть дату


15-1155990009
sleept
2006-08-19 16:20
2006.09.10
не понял




   Наверх