Chaine

Résolu
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019 - 18 août 2008 à 08:13
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 18 août 2008 à 16:12
Bonjour,

Comment tester à coup sur la longueur d'une chaine de carractères en police ARIAL (11) ?
Exemple : if len(chaine) > 50 then...

Mon problème est que ça varie suivant les carractères de ma chaine.
Merci d'avance

16 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 août 2008 à 13:53
Salut,

Ben comment veux-tu que sans DC tu puisse connaitre la taille ???

C'est comme si tu demandais le nombre de briques pour bâtir une maison sans savoir quelle maison ni quelle superficie...

Il faut bien qu'il sache qu'elle police utiliser, avec quelle taille, et quel type d'affichage (gras, italique, etc.).

La fonction textWidth utilise donc le DC de la fenêtre pour savoir tout cà !

Mais si tu veux vraiment pas être dépendant d'une fenêtre ou d'un contrôle graphique possèdant un DC, utilise les API Windows : la fonction GetTextExtentPoint32 est faîte pour cà... mais il te faudra au moins créer un DC manuellement, et lui appliquer ta fonte... moins pratique tout de même !
______________________________________
DarK Sidious
3
RomainDotNet Messages postés 14 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 25 août 2008
18 août 2008 à 08:28
Salut,
Et chaine.length ne va pas?
0
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
18 août 2008 à 08:43
chaine.length ????????????????????????????????????????
chaine est une variable style : dim chaine as string

Je vois pas ce qu'est chaine.length donc aucune idée...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 août 2008 à 09:17
Bonjour,

Inté&resse-toi à l'utilisatuin de la fonction TextWidth (lis dans ton aide en ligne, sur ta machine, ce qu'il en est dit ainsi que l'exemple qui s'y trouve).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 août 2008 à 09:23
Salut,

Heu longueur en pixels à l'écran ou nombre de caractères dans la chaîne ??? C'est bien différent !
______________________________________
DarK Sidious
0
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
18 août 2008 à 09:27
OUI en effet !!! Il semble que la fonction TextWidth régle mon problème.
Merci à tous et bonne semaine.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 août 2008 à 09:33
Bonjoiur, DARKSIDIOUS,

J'avais en effet prévu (et oublué de le faire) de l'inviter à réfléchir à la terminologue (différence entre longueur et largeur graphique)...

Ce qui m'a mis la puce à l'oreille est :

"Mon problème est que ça varie suivant les carractères de ma chaine. "
0
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
18 août 2008 à 09:49
La fonction "TextWidth" n'est pas acceptée dans une fonction SUB de mon module.
"TextWidth" n'est utilisable que dans une FORM.
Je sais plus comment faire du coup...
Si vous avez une idée de genie !!!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 août 2008 à 11:52
Salut,

La fonction TextWidth est dépendante d'un DC, forcément ! Mais tu peux l'utiliser indirectement : Form1.textwidth("toto")
______________________________________
DarK Sidious
0
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
18 août 2008 à 13:41
Oui j'ai fait le test en effet DARKSIDIOUS ça marche mais je trouve pas ça très propre non ? Domage qu'il y est pas une petite fonction sans avoir besoin d'une FORM.Je trouve personnellement bisard que personne n'est eu à régler ce type de problème.Soit limiter la taille d'une chaine...

Merci
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 août 2008 à 14:17
salut,

il faut avoir (ou créer) un hdc oui
j'trouve pas çà moins pratique ^^

http://www.vbfrance.com/code.aspx?ID=40299

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
18 août 2008 à 14:22
OK pour GetTextExtentPoint32 masi avec un petit exemple j'en serais ravis...
J'suis à la retraite les amis et je découvre les joies de la programation sans être informaticien...Mais j'aime bien.Sauf que mes limites sont là.

Si vous aviez un petit exemple de fonction ou je passe en paramètre la chaine, police, taille et il me renvois la longueur Merci d'avance.

Sinon je vais chercher !!!
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 août 2008 à 15:28
Re,

Je comprends finalement que tu es débutant et que "tu veux" mais que "tu ne veux pas"...
Les solutions qui t'ont été indiquées demandent un minimum de compréhension...
Un copier-coller n'apprendra jamais rien à personne ...

Si toutefois tu tiens à rester à un autre niveau, voilà

Tu mets sur ta form un label nommé label1 et

Private Sub Form_Activate()
  Label1.Visible = False
  Label1.AutoSize = True
End Sub



Private Sub Command1_Click()
  Dim machaine As String, mafont As String, mataille As Integer
  machaine = "et voilà du simple"
  mafont = "Arial"
  mataille = 10
  MsgBox largeur(machaine, mafont, mataille)
End Sub





Private Function largeur(c As String, f As String, t As Integer) As Integer
  With Label1
    .FontName = f
    .FontSize = t
    .Caption = c
  End With
  largeur = Label1.Width '& "  " & TextWidth(toto)
End Function


Voilà qui est au niveau super-débutant, mais que je n'aime pas du tout ...(tu peux ajouter d'autre paramètres que la Police et sa taille, bien entendu...)




 
0
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
18 août 2008 à 15:57
Merci jmfmarques.
Pas facile à 71 ans...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 août 2008 à 16:08
J'espère bien que j'aurais encore le même esprit que celui qui m'anime aujourd'hui ... comme mon père, qui en avait 94 lorsqu'il nous a dit adieu....

Le développement n'est pas une activité faisant appel à des capacités physiques, ami ...

Bonne étude, donc, mais sans avancer ton âge ......
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 août 2008 à 16:12
j'aime bien aussi mettre des liens pour le plaisir de perdre du temps...
0
Rejoignez-nous