Zitat von
shmia:
Zitat von
jfheins:
Kann ich einen Wert direkt an ein Unterobjekt weiterreichen, statt jedemal ein Wrapperfunktion scheiben zu müssen ?
Nein, du musst jedesmal eine Wrapperfunktion schreiben.
Die Idee von Dax wird nicht funktionieren, da die
VCL keine Interface benützt.
Hmpf?
Schon TComponent implementiert Interfaces, deshalb kann man Controls so einfach eins "drüberstülpen".
Das Problem ließe sich mit minimalem Code lösen... Wenn nicht fast sämtliche Properties in fast sämtlichen Controls bekloppte private Getter/Setter hätten.
Mit protected Accessors wäre es nur das hier:
Delphi-Quellcode:
type
ITextProperty = interface
function getText(): TCaption;
procedure setText(const Value: TCaption);
property Text: TCaption read getText write setText;
end;
type
TTextProperty = class
private
fText: TCaption;
protected
function getText(): TCaption;
procedure setText(const Value: TCaption);
published
property Text: TCaption read getText write setText;
end;
type
TSomeClass = class(TInterfacedObject, ITextProperty)
private
fTextProperty: TTextProperty;
protected
property TextProperty: TTextProperty read fTextProperty implements ITextProperty;
public
constructor Create(); virtual;
destructor Destroy(); override;
end;
In deinem Falle ließe sich eine ComboBox(Du könntest TTextProperty durch TComboBox ersetzen
) also von selbst dazu zu übereden ITextProperty für dich in deiner Klasse zu implementieren. Wenn die Property Text in TControl nicht so besch***en implementiert sein würde.