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
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.