![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Делегирование реализации интерфейсов [D7]
Priest © (2006-02-07 11:34:00)Вот такая конструкция работает нормально
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:00) [1]Priest © (07.02.06 11:34)
Если же я делегирую реализацию интерфейса, то не могу его присвоить в дезайн-тайм. при этом значение выбирается и присваивается, но не показывается в инспекторе и не записывается в дфм. вот проблемный код.
Ну сам запиши свойство в dfm' ник, в чем проблема, то..