Bonjour à tous

J'ai créer quelques composant d'affichage FMX (voir ce billet dans mon blog) et je suis en train de créer des composants de choix (boutons, interrupteur...). Parmi eux il y en a un que j'ai baptisé TSelecteur et qui agit comme une TListbox sauf qu'il aura un aspect de ce genre
Nom : Selecteur.png
Affichages : 157
Taille : 1,4 Ko
Naïvement j'ai fait descendre mon composant Selecteur d'un TListBox et surcharger la méthode Paint pour dessiner comme je le veux mon composant. Sauf que ça ne marche pas je passe bien dans ma méthode Paint mais il doit y avoir un appel à une autre car j’obtiens toujours à l'écran le dessin classique d'une TListbox.

Donc je suis reparti d'un ancêtre TRectangle auquel je pensais ajouter une propriété items comme elle existe pour les listbox
Nom : Selecteur2.png
Affichages : 139
Taille : 24,7 Ko
Pour cela j'ai fouillé dans les sources de TListBox et je suis malheureusement tombé sur une suite d'héritage très complexe et j'avoue être perdu.
Au départ j'avais fait ça
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
 
unit Selecteur;
 
interface
 
uses
  System.SysUtils, Couleurs, System.Classes, System.Types, System.UIConsts, FMX.Types, FMX.Controls, FMX.Objects,
  FMX.Graphics, FMX.ListBox;
 
type
  TGenre = (Circulaire, Horizontal, Vertical);
 
  TSelecteur = class(TRectangle)
  private
    FGenre: TGenre;
    FChoix:TStrings;
    procedure setChoix(valeur:TStrings);
  protected
    { Déclarations protégées }
  public
    constructor Create(AOwner: TComponent); override;
    procedure Paint; override;
  published
    property Genre: TGenre read FGenre write FGenre;
    property Choix: TStrings read FChoix write setChoix;
 
 
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('VisuLabo', [TSelecteur]);
end;
 
constructor TSelecteur.Create(AOwner: TComponent);
begin
  inherited;
  FGenre := Horizontal;
  FChoix:=TStrings.Create;
end;
 
procedure TSelecteur.Paint;
var
  rect: TRectF;
begin
  Canvas.BeginScene;
  if FGenre = Horizontal then
  begin
    Canvas.DrawLine(TPointF.Create(0, Height / 2), TPointF.Create(Width, Height / 2), 1);
  end;
  Canvas.EndScene;
end;
 
 
procedure TSelecteur.setChoix(valeur: TStrings);
begin
  FChoix.Assign(valeur);
end;
 
end.
Mais dès que je pose mon composant sur une fiche et que je clique sur Choix, j'ai cette erreur
Nom : Selecteur3.png
Affichages : 189
Taille : 63,8 Ko

Si quelqu'un a une idée pour réaliser ça relativement simplement je suis preneur