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

Soyez le premier à donner votre avis sur cette source.

Vue 7 157 fois - Téléchargée 416 fois

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

Ajouter un commentaire Commentaires
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
le plus "simple", je pense, c'est de regarder ce qu'en dit la doc :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_0odw.asp
Messages postés
91
Date d'inscription
jeudi 18 novembre 2004
Statut
Membre
Dernière intervention
17 décembre 2008

Quand je test la fonction, l'option DT_WORD_ELLIPSIS ne marche pas. Ou alors je n'ai pas compris :
END ecrit le debut du texte sans le modifier puis ajoute "..." avant d'arriver a la fin de la zone d'affichage.
PATH ecrit le debut et la fin du texte sans les modifier puis ajoute "..." au milieu.
WORD devrait faire la meme chose que PATH en prenant comme separateur l'espace au lieu du slash. Et bien chez moi, l'option WORD me donne le meme resultat que END.

Que n'ai je pas compris ?
Santiago
Messages postés
122
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
18 juillet 2009

OUI Merci,Renfield c'est très bien compris
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
regardes la capture d'ecran...

on saisi :
I:\Development files\FXNextGeneration\FxCalendar\Release

Les labels, affichent par exemple :
I:\Development files\FXNex...\Release
I:\Development files\...\Release

afin que le chemin puisse être ecrit dans le label, de petite taille, avec une police particulière. le chemin a été abrégé.
Messages postés
122
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
18 juillet 2009

Je crois que pour reecrire le contenu d'une textbox dans differents labels et avec differentes tailles ne necessite pas une API,c'est très simple ,mais ici ::::: UNE API ,DU CODE COMPLIQUE POUR REECRIRE LE CONTENU D'UNE TEXTBOX !!!!! QUQUE CHOSE M'ECHAPE DANS CETTE SOURCE,TRONQUER TRONQUER C'EST QUOI ??? ::::
Afficher les 15 commentaires

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.