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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.