1 pièce(s) jointe(s)
Afficher le Canvas d'un Label, plutôt que son 'Caption'
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.
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
|
//******************************************************************************
//*************** 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 **********
//****************************************************************************** |
je crée dynamiquement le 'Label',
puis j'essaye d'afficher ensuite mon texte contenant le 'Delta'.
mais c'est le 'Caption' qui reste dans le 'Label'
Code:
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 *******************
//****************************************************************************** |
je ne comprends pas pourquoi.
merci pour votre aide
bonne journée
'TCanvas' dans un 'Label'
Bonjour,
merci pour vos réponses.
je teste tout cela et je reviens vers vous.
bonne journée
Afficher le Canvas d'un Label, plutôt que son 'Caption'
Bonjour,
merci pour vos réponses.
Merci à BeanzMaster, c'est très intéressant de savoir comment ça marche. et ça marche !
//------------
Pour répondre à la question très pertinente de Andnotor ...
au départ, j'avais juste un texte à afficher donc un Label était amplement suffisant.
puis un jour, je me suis dit que remplacer Delta par le symbole Delta Grec aurait été pas mal du tout.
j'ai donc utilisé le Canvas du Label en me heurtant à la difficulté que j'ai exposé.
--------------
pour finir, après cette excellente question, j'ai changé mon Label en PaintBox.
--------------
encore une fois, merci à tous,
c'est toujours sympa de constater qu'on progresse grâce à vos excellentes réponses.
bonne journée
:applo::applo::applo:
Afficher le Canvas d'un Label, plutôt que son 'Caption'
Bonjour,
merci pour cette excellente solution.
je ne connaissais pas cette possibilité.
bonne journée
:lahola::lahola::lahola: