begin process at 2008 07 06 02:59:54
1 205 441 membres
21 nouveaux aujourd'hui
14 119 membres club

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 : 2 837

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.
25 novembre 2005 11:17:21 :
Mise à jour de la source suite à la sympathique remarque de juju62611.
  • 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

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS