Je débute en création de composant FMX.

Je vise un composant composite donc un agglomérat de composants existants. Voici celui que j"ai bâti sur une forme et que je voudrais transformer en composant pour pouvoir le réutiliser :
Nom : AspectComposant.png
Affichages : 190
Taille : 8,7 Ko

J'ai donc créé un composant FMX vide avec l'utilitaire et j'ai essayé d'y mettre mes autres composants, un Tscalelayout comme base qui contient un rectangle calé à gauche, un rectangle calé à droite et un rectangle au centre qui occupe le reste de la place. Chaque rectangle a un TLabel comme enfant dans lesquels j'écrirais par la suite.

Voilà ce que j'obtiens à l’exécution :
Nom : obtenu1.png
Affichages : 174
Taille : 2,6 Ko

Je ne vois pas mes 3 rectangles ni mes Labels.

Voilà le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
unit FMX.Obj_ListeHorizontale;
 
interface
 
uses
  System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Layouts, FMX.Objects,FMX.StdCtrls,
  FMX.Gestures;
 
type
  TListeHorizontale = class(TScaledLayout)
  FRect_Gauche, FRect_Centre, FRect_Droite : TRectangle;
  FLb_Gauche, FLb_Centre, FLb_Droite : TLabel;
  FGesture : TGestureManager;
  FTextes : TStrings;
  private
    procedure Resize; override;
    { Déclarations privées }
  protected
    { Déclarations protégées }
  public
    { Déclarations publiques }
    constructor Create(AOwner : Tcomponent); override;
    destructor Destroy; override;
  published
    { Déclarations publiées }
 
 
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('Plus', [TListeHorizontale]);
end;
 
{ TListeHorizontale }
 
constructor TListeHorizontale.Create(AOwner: Tcomponent);
begin
     inherited;
     Self.Width:=200;
     Self.Height:=60;
     FRect_Gauche:=TRectangle.Create(Self);
     FRect_Centre:=TRectangle.Create(Self);
     FRect_Droite:=TRectangle.Create(Self);
     FRect_Gauche.Parent:=Self;
     FRect_Centre.Parent:=Self;
     FRect_Droite.Parent:=Self;
     FRect_Gauche.Align:=TAlignLayout.FitLeft;
     FRect_Gauche.Width:=Self.Width*0.28;
     FRect_Droite.Align:=TAlignLayout.FitRight;
     FRect_Droite.Width:=Self.Width*0.28;
     FRect_Centre.Align:=TAlignLayout.Center;
     FLb_Gauche:=  TLabel.Create(Self);
     FLb_Centre:=  TLabel.Create(Self);
     FLb_Droite := TLabel.Create(Self);
     FLb_Gauche.Parent:=Self;
     FLb_Centre.Parent:=Self;
     FLb_Droite.Parent:=Self;
     FLb_Gauche.Align:=TAlignLayout.Center;
     FLb_Centre.Align:=TAlignLayout.Center;
     FLb_Droite.Align:=TAlignLayout.Center;
     FTextes := TStrings.Create;
     FLb_Gauche.Text:='*';
     FLb_Centre.Text:='*';
     FLb_Droite.Text:='*';
 
end;
 
destructor TListeHorizontale.Destroy;
begin
//     FTextes.Free;
     inherited;
end;
 
 
procedure TListeHorizontale.Resize;
begin
     if Assigned(FRect_Gauche) then
        FRect_Gauche.Width:=Self.Width*0.28;
     if Assigned(FRect_Droite) then FRect_Droite.Width:=Self.Width*0.28;
end;
 
 
end.
Le resize ne fait rien...

J'ai un doute sur le composant "conteneur" TscaleLayout est il un bon choix, un Trectangle serait plus adapté ?

J'aurais ensuite plein d'autres questions.....

Merci d'avance