A mon avis (encore ;p) tu devrait partir sur un array à longueur fixe vu que tu utilise les planètes du système solaire.
Par contre ton Objet CPlanetes devrait avoir diverses propriétés pour pouvoir être n'importe quelle planete (Cplanetes.Nom, CPlanetes.Checked, etc...)
dans le constructeur create tu crée toutes tes planètes mais tu définis la propriété Checked de chaque planete à False par exemple.
Quelque chose du genre:
En gros tu te contente d'activer ce que tu veux comme planete.Code:
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 TabEspace: array[0..9] of Cplanetes; // définir constructor create... var i:integer; begin for i := 0 to 9 do begin TabEspace[i] := Cplanetes.Create; TabEspace[i].Checked := False; // définir soleil if i = 0 then begin TabEspace[i].Nom := 'Soleil'; // string TabEspace[i].Taille := 100; // integer TabEspace[i].PositionX := 0; // integer TabEspace[i].PositionY := 0; // integer end // autre planète else if i = 1 then begin ... end // etc... end; end; // ajouter 1 planete procedure ajouter(NomPlanete:String)... var i: integer; begin for i := 0 to 9 do begin if TabEspace[i].Nom = NomPlanete then begin TabEspace[i].Checked := True; Break; // on stoppe la boucle plus besoin de continuer end; end; end;
Une procedure "dessiner" avec une boucle comme montré avant te permettrait de savoir quelles planètes sont à dessiner.
L'avantage d'un tableau à longueur fixe c'est que tu n'as pas besoin de le redimensionner avec des SetLength(TonTableau,LongueurTableau).
Attention les exemples de code sont à adapter à ton cas.