Ellipsis (ou comment tronquer une chaine de caractères)

Description

fonction qui tronque la chaine passée en paramètres, afin qu'elle puise être écrite, dans une zone d'une certaine taille, en fonction de la police désirée...

pas clair... euh, oui, regardez la capture, ca vous en dira plus

Source / Exemple :


'# Cette fonction permet d'abbréger une chaine de caractère, pour quelle tienne, en longueur, dans une largeur précise.
'# cette largeur est a fournir en pixels
Public Function Ellipsis(ByRef vsInput As String, ByRef voFont As IFont, ByVal vnMaxLength As Long, Optional ByVal veEllipsis As EllipsisConstants = EllipsisPath) As String
Dim hTmpDC As Long
Dim hDesktopDC As Long
Dim hOldFont As Long
Dim sBuffer As String
Dim lpR As RECT
Dim nPos As Long
    '# On récupère un DC du desktop
    hDesktopDC = GetDC(HWND_DESKTOP)
    '# On créé un DC compatible (avec la résolution, etc)
    hTmpDC = CreateCompatibleDC(hDesktopDC)
    '# On lie la police a notre DC
    hOldFont = SelectObject(hTmpDC, voFont.hFont)
    
    '# On configure notre Rect
    lpR.Right = vnMaxLength

    '# La chaine sera modifiée sur place... on en fait donc une copie
    Ellipsis = vsInput
    '# On demande a dessiner la chaine. DT_MODIFYSTRING demande a la fonction
    '# de nous renvoyer la chaine affichée (abbregée)
    DrawText hTmpDC, Ellipsis, Len(Ellipsis), lpR, DT_MODIFYSTRING Or DT_SINGLELINE Or veEllipsis
    '# Enfin, on coupe la chaine résultante, au premier caractère '\0' trouvé
    nPos = InStr(Ellipsis, vbNullChar)
    If nPos > 0 Then
        Ellipsis = Left$(Ellipsis, nPos - 1)
    End If

    '# On libère la police
    SelectObject hTmpDC, hOldFont
    '# On détruit le Device Context
    DeleteDC hTmpDC
    '# Et on relache le DC du bureau
    ReleaseDC HWND_DESKTOP, hDesktopDC
End Function

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.