Détecter le nombre de ligne dans un label

Résolu
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 18 nov. 2004 à 10:04
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 19 nov. 2004 à 09:27
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

cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
18 nov. 2004 à 16:25
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
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
18 nov. 2004 à 11:07
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.
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
18 nov. 2004 à 16:42
Ok, je vais essayé tout cela.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
18 nov. 2004 à 16:47
enlève le "Debug.Print i, LargLign, NbreLignes", c'était pour les essais ainsi que le "FontBold = True"
0

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

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
19 nov. 2004 à 09:25
Trop cool mon René, ça marche terrible !!!

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
19 nov. 2004 à 09:27
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]
0
Rejoignez-nous