Bonjour,
Pour un programme, je crée dynamiquement des groupes de composants (un panel qui est le parent d'une image qui le recouvre et d'un label ) que j'appel "tuile" en cliquant sur un autre tuile créée à la main (en gros c'est un bouton stylisé) .
Pour information, je permet la création de ces tuiles au sein d'un scrollbox de la manière suivante :
J'arrive à générer des événements sur ces composants.
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 { CREER LA NOUVELLE TUILE } NewTile := TPanel.Create(Self); // La fenêtre est propriétaire du nouveau panel NewTile.Parent := Scrbox; // mais c'est dans la scrollbox qu'il doit s'afficher with NewTile do begin Name := 'Tile'+ inttostr(incname); Caption := 'Nouvelle tuile: ' + NewTile.Name; Left := Tile0.Left - (Tile0.Width + 5) + (scaleup ); Top := Tile0.Top + (scaleup div 2); width := Tile0.Width - scaleup; Height := Tile0.Height - scaleup; SendToBack; // mettre en arrière plan end; { CREER L'IMAGE DANS LA NOUVELLE TUILE } NewImg := TImage.Create(Self); NewImg.Parent := NewTile; with NewImg do begin Name := 'ImgTile'+ inttostr(incname); Cursor :=CrHandPoint; Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +'../../icons/frame.bmp'); Center := true; Proportional := true; Transparent := true; Height := NewTile.Height ; Width := NewTile.Width; Hint := 'Insérer image (clic droit)'; ShowHint := true; OnMouseDown := AddImgOnClick; OnMouseEnter := ExpandOnEnter; end; { CREER LE LABEL DANS LA NOUVELLE TUILE } NewLbl := TLabel.Create(Self); NewLbl.Parent := NewTile; with NewLbl do begin Name := 'NewLbl'+ inttostr(incname); Align := AlBottom; Color := ClYellow; Transparent := false; Height := 16; Hint := 'Insérer titre'; ShowHint := true; OnClick := ModifLblOnClick; end; { INCREMENTER POUR PROCHAIN ENSEMBLE } incname := incname + 1;
J'arrive aussi à récupérer des infos utiles tel que le nom du composant dynamique sur lequel je clic (l'image de la tuile), le nom de son parent et sa classe :
Mon problème c'est que je n'arrive pas à trouver le moyen d'utiliser les propriétés de ces composants dynamiquement créés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 label1.Caption := (Sender as TComponent).Name + ' | ' + (Sender as TComponent).GetParentComponent.Name + ' :'+(Sender as TComponent).GetParentComponent.ClassName;
Concrètement, j'ai besoin de récupérer le caption du label lors du clic sur l'image et de modifier la hauteur du panel mais je me casse un peu les dents là dessus.
J'en appel à vos lumières, merci bien !
Partager