Calculer la largeur optimale d'un TEdit
Bonjour
Je voudrais définir la largeur d'un TEdit pour qu'elle ne dépasse pas la largeur maximum utile, c'est à dire celle du nombre de "W" qui est la lettre la plus large.
Il faut que cela dépende automatiquement de la police du TEdit et du MaxLength (>0 ici).
Pour trouver la bonne largeur de MonEdit je fais ce qui suit, que j'ai dû récupérer quelque part :
Code:
1 2 3 4 5 6 7 8
|
var C : TControlCanvas;
C:=TControlCanvas.Create;
C.control:=MonEdit;
C.Font.Assign(MonEdit.Font); // peut-être pas utile ?
W := C.TextWidth(StringOfChar('W', MonEdit.MaxLength) );
MonEdit.ClientWidth := W ; |
Malheureusement, la largeur ainsi calculée est trop petite (généralement d'un peu plus d'1 caractère).
Savez-vous ce qui cloche ? Peut-être n'ai-je pas le bon canvas ?
Merci pour vos suggestions.