cs_tolt
Messages postés269Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 4 avril 2019
-
18 août 2008 à 08:13
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDerniè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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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).
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_tolt
Messages postés269Date d'inscriptionmardi 17 décembre 2002StatutMembreDerniè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 !!!
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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
cs_tolt
Messages postés269Date d'inscriptionmardi 17 décembre 2002StatutMembreDerniè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...
cs_tolt
Messages postés269Date d'inscriptionmardi 17 décembre 2002StatutMembreDerniè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.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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...)