Bonjour,
j'ai un label ou je veux afficher le symbole Delta suivi d'un texte.
j'ai donc fait une procédure pour afficher ce symbole avant le texte,
puis centrer le texte horizontalement et verticalement dans le label.
je crée dynamiquement le 'Label',
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 //****************************************************************************** //*************** Ajout de 'Delta.' à la chaine de caractère *************** //****************************************************************************** Procedure TForm1.AjoutDelta(Lbl: TLabel; Ch: String; Clr: integer); // Ajout de 'Delta.' à la chaine de caractère var Offset : Tpoint; // décallage du texte, en pixels LgTxt : Word; // longueur du texte en pixels HtTxt : Word; // hauteur du texte en pixels begin With Lbl.Canvas do begin brush.Color:=ClBtnFace; // si la couleur n'est pas celle du fond, ... Pen.Color:=ClBtnFace; // ... un cadre apparaît de la couleur du stylo rectangle(0, 0, Lbl.Width, Lbl.Height); // -----> efface le canvas du label Font.Style:=[FsBold]; Font.Color:=Clr; Brush.Color:=ClBtnFace; LgTxt:=0; // initialisation HtTxt:=0; // ... //--------------------------------------------------- Calcul des offsets Font.Size:=10; // longueur/hauteur du Delta Font.Name:='Symbol'; // ... LgTxt:=TextWidth('D.'); // ... HtTxt:=TextHeight('D.'); // ... //------ Font.Name:='Segoe UI'; // longueur du texte Font.size:=9; // ... LgTxt:=LgTxt+TextWidth(Ch); // ... //------------------------------------------------ Calcul Offset Largeur Offset.X:=round((Lbl.Width-LgTxt)/2); //------------------------------------------------ Calcul Offset hauteur Offset.Y:=round((Lbl.Height-HtTxt)/2)-3; //-------------------------------- Affichage de la chaine dans le Canvas Font.Size:=11; Font.Name:='Symbol'; TextOut(Offset.X, Offset.y, 'D.'); Offset:=PenPos; Font.Name:='Segoe UI'; Font.size:=9; TextOut(Offset.X, Offset.Y+3, Ch); end; end; //****************************************************************************** //*********** Fin de l'ajout de 'Delta.' à la chaine de caractère ********** //******************************************************************************
puis j'essaye d'afficher ensuite mon texte contenant le 'Delta'.
mais c'est le 'Caption' qui reste dans le 'Label'
je ne comprends pas pourquoi.
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 //****************************************************************************** //************************ Activation de la fenêtre ************************ //****************************************************************************** procedure TForm1.FormActivate(Sender: TObject); begin LblDelta:=TLabel.create(Form1); // création dynamique du label With LblDelta do begin // ... Parent:=Panel1; // ... Name:='LblDelta'; // ... Caption:='Je ne veux pas afficher ce texte !!!'; // ... Font.color:=ClBlack; // ... Align:=AlClient; // ... Font.style:=[FsBold]; // ... Enabled:=false; // ... visible:=true; // ... end; // ... AjoutDelta(LblDelta, ' = //', ClRed); // Ajout de 'Delta.' à la chaine de caractère end; //****************************************************************************** //******************** Fin de l'activation de la fenêtre ******************* //******************************************************************************
merci pour votre aide
bonne journée
Partager