Вниз
Скачать: 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.027 c
15-1155840942
ArtemESC
2006-08-17 22:55
2006.09.10
Прерывание...


2-1156043410
Mikes
2006-08-20 07:10
2006.09.10
Запуск приложения в DELPHI.


2-1155757105
ronyn
2006-08-16 23:38
2006.09.10
БД Paradox7 and JPEG


15-1155777970
бегинка
2006-08-17 05:26
2006.09.10
новичок, а туда же, в делфи


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




   Наверх