Вниз
Скачать: 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.944 c
15-1155266486
Leshiy
2006-08-11 07:21
2006.09.10
Использование UDF XPath


1-1153992363
oleg___
2006-07-27 13:26
2006.09.10
Реализация интерфейса


1-1152989009
!aLeXa!
2006-07-15 22:43
2006.09.10
Как написать мультиязычную программу?


9-1134977358
Strech
2005-12-19 10:29
2006.09.10
Пересечение окружности с прямоугольником


1-1153766697
AlexeyT
2006-07-24 22:44
2006.09.10
Отклик на команду XP "Каскадом"




   Наверх