Chaine [Résolu]

Signaler
Messages postés
270
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2019
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
112
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
Messages postés
14
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
25 août 2008

Salut,
Et chaine.length ne va pas?
Messages postés
270
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2019

chaine.length ????????????????????????????????????????
chaine est une variable style : dim chaine as string

Je vois pas ce qu'est chaine.length donc aucune idée...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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).
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
112
Salut,

Heu longueur en pixels à l'écran ou nombre de caractères dans la chaîne ??? C'est bien différent !
______________________________________
DarK Sidious
Messages postés
270
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2019

OUI en effet !!! Il semble que la fonction TextWidth régle mon problème.
Merci à tous et bonne semaine.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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. "
Messages postés
270
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2019

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 !!!
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
112
Salut,

La fonction TextWidth est dépendante d'un DC, forcément ! Mais tu peux l'utiliser indirectement : Form1.textwidth("toto")
______________________________________
DarK Sidious
Messages postés
270
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2019

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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
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  
Messages postés
270
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2019

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 !!!
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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...)




 
Messages postés
270
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
4 avril 2019

Merci jmfmarques.
Pas facile à 71 ans...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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 ......
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
j'aime bien aussi mettre des liens pour le plaisir de perdre du temps...