Pb longueur d'une chaine de caractère en TWIP

yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 - 6 sept. 2002 à 16:15
mWaAtR Messages postés 49 Date d'inscription jeudi 30 août 2001 Statut Membre Dernière intervention 28 avril 2010 - 7 sept. 2002 à 21:21
voila comme le di le titre je voudrais récupérer la longueur d'une chaine de caractère afin de savoir si la largeur du controle est suffisamment importante pour afficher la totalité du texte.
J'ai un truc du genre:

longueur = Len(cmd.caption) * cmd.FontSize * 1440 / 72

en sachant que:
fontsize s'exprime en points
que 72 points = 1 pouce
que 1440 twip = 1 pouce
et que l'unité de ma feuille est en twip

mais ça à pas l'air de marcher

J'ai besoin d'aide

Merci d'avance

Yomm

4 réponses

cs_imer Messages postés 59 Date d'inscription vendredi 26 juillet 2002 Statut Membre Dernière intervention 29 janvier 2004
6 sept. 2002 à 16:40
Le problème c'est aussi que la longueur est différente selon les caractères ("i" et "m" par exemple). Il y a la police "Courrier" qui affiche les caractères sous la même longueur ou bien il faut mémoriser la longueur de chaque caractère...
0
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
6 sept. 2002 à 16:53
si j'avais une valeur proche même s "i" est plus cour que "m" je m'en fou mais là ça correspond pas,je me retrouve avec des valeurs ki font le double de ce kel devrait...
0
cs_imer Messages postés 59 Date d'inscription vendredi 26 juillet 2002 Statut Membre Dernière intervention 29 janvier 2004
6 sept. 2002 à 17:14
Alors divise par 2...
Sinon j'ai trouvé un solution un peu tordu:
L'objet label peut se redimensionner en fonction de la valeur de sa propriété caption
Il faut le mettre invisible, renseigner sa propriété caption et se référer à sa propriété width pour la longueur de la chaîne

'Soit Label1 le label
'Command1 le bouton de commande
'Dans le load
Label1.Visible = False
Label1.AutoSize = True

'Dans la fonction qui doit redimensionner Command1
'Soit StrChaine, la chaîne de caractères en question
'Soit LargMin, la largeur minimum pour Command1 si souhaitée

'En général ça se joue à un caractères près
Label1.Caption = StrChaine & "m"
Command1.Caption = StrChaine
Command1.Width = LargMin
If Label1.Width > LargMin Then
Command1.Width = Label1.Width
End If
0
mWaAtR Messages postés 49 Date d'inscription jeudi 30 août 2001 Statut Membre Dernière intervention 28 avril 2010
7 sept. 2002 à 21:21
Définit la police souhaitée de ta Form puis utilise la propriété :
MaForm.TextWidth("blablabla")
0
Rejoignez-nous