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

Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
- - Dernière réponse : 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]
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
9
3
Merci
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

Dire « Merci » 3

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

Codes Sources 212 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
4
0
Merci
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
11
0
Merci
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
9
0
Merci
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
11
0
Merci
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
11
0
Merci
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]