Détecter le nombre de ligne dans un label [Résolu]

Signaler
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Salut,

Avec un label de largeur non fixe, est-il possible de savoir le nombre de ligne que ce control Label affiche, exemple parfois selon la largeur du Label, celui-ci affiche le texte sur une ligne ou 2, ou 3.

Merci

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]

6 réponses

Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
Bonjour
Une petite fonction qui marche A CONDITION QUE
- le texte ne déborde pas du label (en largeur)
- il n'y ait pas 2 ou plusieurs espaces consécutifs- la police de caractères du label n'ait pas été modifiée (sinon, ajouter au début : FontName ... ; FontSize ... ; FontBold = ... ):
Private Function NbreLignes(Etiquette As Label) As Integer
Dim LargLign As Long, i As Integer
FontBold = True
Dim LargEtiq As Long: LargEtiq = Etiquette.Width
Dim tablo() As String
tablo = Split(Etiquette.Caption, " ")
i = -1
Do
    i = i + 1
    LargLign = LargLign + TextWidth(tablo(i))
    If LargLign > LargEtiq Then
        NbreLignes = NbreLignes + 1
        i = i - 1
        LargLign = 0
    End If
    If LargLign = LargEtiq Then
        NbreLignes = NbreLignes + 1
        LargLign = 0
    End If
    If i = UBound(tablo) And LargLign <> 0 Then
        NbreLignes = NbreLignes + 1
    End If
    Debug.Print i, LargLign, NbreLignes
Loop Until i = UBound(tablo)
End Function
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
5
une seule methode je pense.

c'est de determiner combien un caractere fait en pixels (en sachant que I et E n'ont pas la meme largeur par exemple ).

d'additionner les largeurs de chaque caracteres jusqu'a la valeur label1.height.
la tu as ta premiere ligne,

et on recommence pour determiner la deuxieme ligne et ainsi de suite.
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Ok, je vais essayé tout cela.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
enlève le "Debug.Print i, LargLign, NbreLignes", c'était pour les essais ainsi que le "FontBold = True"
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Trop cool mon René, ça marche terrible !!!

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Une question si je met :

do Until i = UBound(tablo)
loop


au lieu de :

do
Loop Until i = UBound(tablo)


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]