Hallo Zusammen,
ich versuche gerade ein einfaches Control von TRectangle abzuleiten.
Delphi-Quellcode:
unit itfAppControls;
interface
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Objects,FMX.StdCtrls,
System.UITypes,FMX.MultiResBitmap,FMX.Graphics;
type
TAppImageButtonTest =
Class(TRectangle)
private
ccImage:TImage;
ccImageTextSettings:TTextSettings;
procedure SetImageTextSettings(pcValue:TTextSettings);
protected
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
published
property ImageTextSettings:TTextSettings
read ccImageTextSettings
write SetImageTextSettings;
End;
procedure Register;
implementation
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Imagebutton Compound
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
constructor TAppImageButtonTest.Create(AOwner: TComponent);
begin
Inherited;
ccImageTextSettings:=TTextSettings.Create(Self);
ccImage:=TImage.Create(Self);
ccImage.Parent:=Self;
ccImage.Align:=TAlignLayout.Client;
ccImage.HitTest:=FALSE;
end;
destructor TAppImageButtonTest.Destroy;
begin
ccImageTextSettings.Free;
ccImage.Free;
Inherited;
end;
procedure TAppImageButtonTest.SetImageTextSettings(pcValue:TTextSettings);
begin
ccImageTextSettings.Assign(pcValue);
end;
procedure Register;
begin
RegisterComponents('
Sample', [TAppImageButtonTest]);
end;
end.
klappt auch soweit, aber ich habe 2 Probleme:
1.)
Die Eigenschaft ImageTextSettings wird im Objektinspektor angezeigt, klappt aber nicht auf.
Das verstehe ich nicht. TTextSettings stammt von TPersistent ab, sollte doch also im
Objektinspektor editierbar sein.
2.)
Wenn ich das Control auf ein Formular setze ist alles OK (bis auf die ImageTextSettings).
In der Strukturansicht sieht das so aus:
Delphi-Quellcode:
Form1
AppImageButtonTest1
Wenn ich das Formular speichere, schließe und wieder öffne, dann wird beim Anklicken des neuen Controls
das intern erstellte TImage angezeigt als "<unbenannt> TImage". In der Strukturansicht sieht das dann so aus:
Delphi-Quellcode:
Form1
AppImageButtonTest1
<Komponenten[I]>
MultiResBitmap
in der
VCL taucht ein intern in dem Parent Control erzeugtes anderes Control (mit Owner = Self) nirgends
auf. Wie bekomme ich das unter FMX (Designtime) auch hin ?
Grüße
Thomas