Bonjour,
j'aimerais "décomposer" un mot en plusieurs lettres, et pour chacun d'entre-elles, créer un TLabel.
Rien de bien sorcier, me direz-vous...
Mais là où ça se gâte, c'est lorsqu'il faut les "placer".
Tantôt, il y a trop de d'écart entre les lettres, tantôt elles se télescopent !
Voici un p'tit bout de code :
Le problème c'est que le Canvas.TextWidth des labels ne semble pas du tout donner la bonne information.
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 procedure TForm1.DecomposerMot(Mot:String); var i,nbpixels,decalage:integer; MonLabel:TLabel; begin decalage:=0; for i := 0 to length(Mot) do begin MonLabel:=TLabel.create(self); MonLabel.parent:=Self; MonLabel.Top:=10; MonLabel.Font.Size:=12; nbpixels:=MonLabel.Canvas.TextWidth(Mot[i]); decalage:=decalage+nbpixels; MonLabel.Left:=decalage; MonLabel.Caption:=Mot[i]; end; end; procedure TForm1.Button1Click(Sender: TObject); begin DecomposerMot('developpez.net');//placez la chaîne que vous voulez end;
J'ai d'ailleurs essayé directement avec un tout bête "Label.width" mais alors, c'est encore pire...
Comment pourrais-je pallier ce problème ?
Par avance, merci.
Nuclear.
Partager