Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

JUSTILABEL


Information sur la source

Catégorie :Modules Classé sous : justify, justifier, label Niveau : Initié Date de création : 12/09/2000 Date de mise à jour : 25/11/2005 11:17:21 Vu : 3 052

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Alignement justifié d'un Label.
 

Source

  • 'Nom: JustiLabel
  • 'Arguments: Etiquette (Label à justifier)
  • 'Description: justifie l'alignement du texte d'un Label.
  • 'Remarque: le Label à justifier ne doit pas se trouver dans un contrôle conteneur.
  • Option Explicit
  • Public Sub JustiLabel(Etiquette As Label)
  • Dim SaveScale As Integer
  • Dim Texte As String
  • Dim TStr As String
  • Dim Mot As String
  • Dim TInt As Integer
  • Dim DebMot As Integer
  • Dim NbrMots As Integer
  • Dim Intervalle As Double
  • Dim TotIntervalle As Double
  • Dim CptIntervalle As Long
  • Dim TBoo As Boolean
  • Dim LastLigne As Boolean
  • Dim Forme As Object
  • Set Forme = Etiquette.Container
  • SaveScale = Forme.ScaleMode
  • Forme.ScaleMode = 3
  • Etiquette.Visible = False
  • Forme.CurrentX = Etiquette.Left
  • Forme.CurrentY = Etiquette.Top
  • Forme.Font = Etiquette.Font
  • Forme.FontBold = Etiquette.FontBold
  • Forme.FontItalic = Etiquette.FontItalic
  • Forme.FontName = Etiquette.FontName
  • Forme.FontSize = Etiquette.FontSize
  • Forme.FontStrikethru = Etiquette.FontStrikethru
  • Forme.FontUnderline = Etiquette.FontUnderline
  • Forme.ForeColor = Etiquette.ForeColor
  • Texte = Etiquette.Caption
  • LastLigne = False
  • Do While (Texte <> "")
  • TInt = 0
  • TStr = ""
  • TBoo = False
  • Do While (Forme.TextWidth(TStr) < Etiquette.Width)
  • TInt = TInt + 1
  • If (TStr = Left(Texte, TInt)) Then
  • TBoo = True
  • LastLigne = True
  • Exit Do
  • End If
  • TStr = Left(Texte, TInt)
  • Loop
  • TStr = Left(Texte, TInt - 1)
  • Do While (TBoo = False)
  • If ((Right(TStr, 1) <> " ") And (Right(TStr, 1) <> "-") And (Right(TStr, 1) <> ",") And (Right(TStr, 1) <> ".") And (Right(TStr, 1) <> ";") And (Right(TStr, 1) <> "?") And (Right(TStr, 1) <> "!")) Then
  • TInt = TInt - 1
  • TStr = Left(Texte, TInt - 1)
  • Else
  • TBoo = True
  • End If
  • Loop
  • If (Left(TStr, 1) = " ") Then
  • TStr = Right(TStr, TInt - 2)
  • End If
  • NbrMots = 0
  • TInt = 0
  • Do While (TInt <> Len(TStr))
  • DebMot = TInt
  • Do While ((TInt <> Len(TStr)) And (Mid(TStr, TInt + 1, 1) <> " "))
  • TInt = TInt + 1
  • Loop
  • If (TInt <> Len(TStr)) Then
  • TInt = TInt + 1
  • End If
  • NbrMots = NbrMots + 1
  • Loop
  • If (NbrMots > 1) Then
  • Intervalle = (Etiquette.Width - (Forme.TextWidth(TStr))) / (NbrMots - 1)
  • Else
  • Intervalle = 0
  • End If
  • CptIntervalle = 0
  • TotIntervalle = 0
  • DebMot = 0
  • TInt = 0
  • Do While (TInt <> Len(TStr))
  • DebMot = TInt
  • Do While ((TInt <> Len(TStr)) And (Mid(TStr, TInt + 1, 1) <> " "))
  • TInt = TInt + 1
  • Loop
  • Mot = Mid(TStr, DebMot + 1, TInt - DebMot)
  • Forme.Print Mot;
  • Forme.Print " ";
  • If (LastLigne = False) Then
  • TotIntervalle = TotIntervalle + Intervalle
  • Forme.CurrentX = Forme.CurrentX + CInt(TotIntervalle - CptIntervalle)
  • CptIntervalle = CptIntervalle + CInt(TotIntervalle - CptIntervalle)
  • End If
  • If (TInt <> Len(TStr)) Then
  • TInt = TInt + 1
  • End If
  • Loop
  • Forme.Print
  • Texte = Right(Texte, (Len(Texte) - TInt))
  • Forme.CurrentX = Etiquette.Left
  • Loop
  • Forme.ScaleMode = SaveScale
  • End Sub
'Nom: JustiLabel
'Arguments: Etiquette (Label à justifier)
'Description: justifie l'alignement du texte d'un Label.
'Remarque: le Label à justifier ne doit pas se trouver dans un contrôle conteneur.

Option Explicit

Public Sub JustiLabel(Etiquette As Label)
    Dim SaveScale As Integer
    Dim Texte As String
    Dim TStr As String
    Dim Mot As String
    Dim TInt As Integer
    Dim DebMot As Integer
    Dim NbrMots As Integer
    Dim Intervalle As Double
    Dim TotIntervalle As Double
    Dim CptIntervalle As Long
    Dim TBoo As Boolean
    Dim LastLigne As Boolean
    Dim Forme As Object
    Set Forme = Etiquette.Container
    SaveScale = Forme.ScaleMode
    Forme.ScaleMode = 3
    Etiquette.Visible = False
    Forme.CurrentX = Etiquette.Left
    Forme.CurrentY = Etiquette.Top
    Forme.Font = Etiquette.Font
    Forme.FontBold = Etiquette.FontBold
    Forme.FontItalic = Etiquette.FontItalic
    Forme.FontName = Etiquette.FontName
    Forme.FontSize = Etiquette.FontSize
    Forme.FontStrikethru = Etiquette.FontStrikethru
    Forme.FontUnderline = Etiquette.FontUnderline
    Forme.ForeColor = Etiquette.ForeColor
    Texte = Etiquette.Caption
    LastLigne = False
    Do While (Texte <> "")
        TInt = 0
        TStr = ""
        TBoo = False
        Do While (Forme.TextWidth(TStr) < Etiquette.Width)
            TInt = TInt + 1
            If (TStr = Left(Texte, TInt)) Then
                TBoo = True
                LastLigne = True
                Exit Do
            End If
            TStr = Left(Texte, TInt)
        Loop
        TStr = Left(Texte, TInt - 1)
        Do While (TBoo = False)
            If ((Right(TStr, 1) <> " ") And (Right(TStr, 1) <> "-") And (Right(TStr, 1) <> ",") And (Right(TStr, 1) <> ".") And (Right(TStr, 1) <> ";") And (Right(TStr, 1) <> "?") And (Right(TStr, 1) <> "!")) Then
                TInt = TInt - 1
                TStr = Left(Texte, TInt - 1)
            Else
                TBoo = True
            End If
        Loop
        If (Left(TStr, 1) = " ") Then
            TStr = Right(TStr, TInt - 2)
        End If
        NbrMots = 0
        TInt = 0
        Do While (TInt <> Len(TStr))
            DebMot = TInt
            Do While ((TInt <> Len(TStr)) And (Mid(TStr, TInt + 1, 1) <> " "))
                TInt = TInt + 1
            Loop
            If (TInt <> Len(TStr)) Then
                TInt = TInt + 1
            End If
            NbrMots = NbrMots + 1
        Loop
        If (NbrMots > 1) Then
            Intervalle = (Etiquette.Width - (Forme.TextWidth(TStr))) / (NbrMots - 1)
        Else
            Intervalle = 0
        End If
        CptIntervalle = 0
        TotIntervalle = 0
        DebMot = 0
        TInt = 0
        Do While (TInt <> Len(TStr))
            DebMot = TInt
            Do While ((TInt <> Len(TStr)) And (Mid(TStr, TInt + 1, 1) <> " "))
                TInt = TInt + 1
            Loop
            Mot = Mid(TStr, DebMot + 1, TInt - DebMot)
            Forme.Print Mot;
            Forme.Print " ";
            If (LastLigne = False) Then
                TotIntervalle = TotIntervalle + Intervalle
                Forme.CurrentX = Forme.CurrentX + CInt(TotIntervalle - CptIntervalle)
                CptIntervalle = CptIntervalle + CInt(TotIntervalle - CptIntervalle)
            End If
            If (TInt <> Len(TStr)) Then
                TInt = TInt + 1
            End If
        Loop
        Forme.Print
        Texte = Right(Texte, (Len(Texte) - TInt))
        Forme.CurrentX = Etiquette.Left
    Loop
    Forme.ScaleMode = SaveScale
End Sub
 

Conclusion

Ce n''est pas grand chose, mais j'ai créé ce module parce que je devais "justifier" l'alignement d'un Label dans un Splash Screen.
 

Historique

25 novembre 2005 11:17:21 :
Mise à jour de la source suite à la sympathique remarque de juju62611.

Commentaires et avis

signaler à un administrateur
Commentaire de juju62611 le 25/11/2005 11:05:59

Amélioration à apporter :
il suffit de remplacer ces 2 lignes :
Dim Forme As Form
Set Forme = Etiquette.Parent
par :
Dim Forme As Object
Set Forme = Etiquette.Container

et ca fonctionne même si l'objet est dans un conteneur

attention a mettre autoredraw a true (qui devait être fait pour la form)

sinon la justification est tres bonne ;) 10/10

signaler à un administrateur
Commentaire de LAMAN le 26/04/2006 00:18:27

c'est une bonne idéé mais comment utiliser cette procédure dans un code est ce que cette procedure est une fonction ou quoi ?

j'ai copié votre procedure dans un module et j'ai changé le mot sub justilabel par function justilabel et sa n'a pas marché

j'ai creer un form avec un bouton command et un label et j'ai ecris ce code

Private Sub command1_Click()
JustiLabel (Label1)
End Sub

Private Sub Form_Load()
Label1.Caption = "je suis un homme de confiance croyez moi c'est sur je ne ment pas"

End Sub


et merci

signaler à un administrateur
Commentaire de juju62611 le 26/04/2006 08:39:36

est tu sur d'avoir autoredrax = true ?

ton label est transparent ?

signaler à un administrateur
Commentaire de zeOffspring le 11/07/2006 17:22:08

perso j'ai un label dans une frame et ça ne fonctionne pas
tout plein d'erreurs 438, propriété ou méthode non géré par l'objet :(

signaler à un administrateur
Commentaire de juju62611 le 11/07/2006 17:42:23

oui effectivement ça ne marche pas dans une frame
je l'avais fait dans un pictureBox

le probleme ici est qu'on ne peu pas dessiner (ecrire) dans une frame

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Alignement d'un label [ par tbdams ] Salut,Je veux afficher le chemin complet d'un fichier dans un label. Je veux voir apparaitre en priorité la fin du chemin(si le chemin complet est tro Justifier un texte dans un label? [ par lucky2222 ] est'il possible de justifier un texte dans un label comme dans wod par exemple? c'est a dire d'avoir un alignement du texte a gauche et a droit du tex label autosize printer [ par MrDogbert ] Un label avec la propriete autosize contenant plusieurs lignes (caption contient plusieurs fois chr(13)) s'imprime sans problemes lorsque je fais form Label au dessus d'une video [ par Kato ] Je souhaite afficher un control Label avec un fond transparent (jusque là ok) en premier plan d'une video (Avec l'ocx de Media Player) à l'instar d'un souligne comme WEB [ par ronando ] Je veux que quand je passe ma souris sur un label le texte se souligne. Comme ds un site web en fait. Ca j'y arrive avec la propriété underline et la probleme label [ par damd ] salut tout le mondej'aurai aime savoir s'il etait possible de definir un emplacement du texte sur in label.par exemple placer le texte en haut a gauch petitS problemeS [ par damd ] salut a tousj'ai trois petits problemes a resoudre:- j'aimerai savoir s'il est possible d'ecrire verticalement le texte d'un label.- j'ai aussi un aut manipuler un objet dont le nom est stocké dans une variable [ par poiskail ] Bonjour,Je possède un prog qui créer des labels dont le nom est est formé de cette façon : "label" & nomFichier ou nomFichier est un String. Pour comment tester l'existence d'un objet?? [ par poiskail ] Bonjour, je cherche à savoir si par exemple, il est possible de tester l'existence d'un label (avec son nom) :if Controls(nomLabel).Exists = false th Propriété Controltiptext [ par iena ] J'aimerais savoir comment fonction la propriété ControlTiptext pour un Label.Car quand je donne une valeur à cette propriété, il ne se passe absolumen


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,076 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.