Einzelnen Beitrag anzeigen

friedt99

Registriert seit: 17. Mär 2010
45 Beiträge
 
#1

Einfaches abgeleitetes Control unter FMX / Delphi 11

  Alt 8. Nov 2021, 19:27
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

Geändert von friedt99 ( 8. Nov 2021 um 19:39 Uhr)
  Mit Zitat antworten Zitat