Vous avez tous vu défiler, notamment dans les formes d'installation, les fichiers en cours de copie mais dont le nom complet (avec le chemin) est trop long pour être affiché.
Ils transforment :
C:\Chemin1\Chemin2\Chemin3\Chemin4\Chemin5\NomFichier.txt
en
C:\Chemin1\Chemin2\Chemin3\...\NomFichier.txt
C'est le rôle de cette fonction
-- Vous rangez le chemin long dans le Tag du Label ou du TextBox (pour garder une trace du vrai nom du fichier pour pouvoir l'ouvrir plus tard)
-- Vous appeler la fonction avec le chemin long
-- La fonction retrouve le contrôle pour connaître la longueur d'affichage maximum
-- La fonction renvoie une chaîne écourtée avec, au milieu un \...\ (si besoin)
La fonction est utilisée en démo dans une forme avec un TextBox et un Label
Source / Exemple :
L`appli est dans le Zip
Conclusion :
Un p'tit commentaire ?
Une p'tite note
(vous savez que ça fait plaisir de recevoir des commentaires !)
4 juin 2008 à 08:55
Juste modifier cette ligne
PathCourt = PathCourt.Substring(0, lngIPos - 1)
en
PathCourt = PathCourt.Substring(0, lngIPos)
pour que l'extension des mes noms de fichier ne soit pas tronquée..;
Encore une fois merci
4 juin 2008 à 04:23
Public Class Form1
Private Declare Function PathCompactPath Lib "shlwapi" Alias "PathCompactPathA" (ByVal hDC As Integer, ByVal lpszPath As String, ByVal dx As Integer) As Integer
Public Function PathCourt(ByVal strPath As String, ByVal lngMaxPixels As Integer, ByVal lngHDC As Integer) As String
Dim lngR, lngIPos As Integer
PathCourt = strPath
lngR = PathCompactPath(lngHDC, PathCourt, lngMaxPixels)
lngIPos = PathCourt.IndexOf(vbNullChar)
If lngIPos > 0 Then
PathCourt = PathCourt.Substring(0, lngIPos - 1)
End If
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim oGr As Graphics
oGr = Me.CreateGraphics
Label1.Text = PathCourt("Bonjour, je suis un très très long texte, excusez moi...", Label1.Width, oGr.GetHdc())
oGr.Dispose()
End Sub
End Class
3 juin 2008 à 18:56
en gros dans ma form j'écris quoi?
lblFichier.Caption = PathCourt(Path, lblFichier.Width, Me.hDC)
sachant que me.hDC il ne connait pas ??
Merci
3 juin 2008 à 10:52
faut pas faire du copier coller, ni "traduire", faut adapter...
hDc => Device Context Handle
identifiant de la surface de rendu, en gros
3 juin 2008 à 10:34
je travaille en vb.net et je n'arrive pas à utiliser l'api "PathCompactPath" dont l 'exemple est donné par Dalida...
Je bloque sur lblFichier.Caption = PathCourt(Path, lblFichier.Width/Screen.TwipsPerPixelX, Me.hDC)...
En particulier sur "Screen.TwipsPerPixelX" qui n'est pas reconnu en .net (le traducteur auto donne VB6.TwipsPerPixelX)
et sur Me.hDC sur lequel je bloque total
Si qqn pouvait traduire le VB6 en VB.net (avec les explications de ce à quoi correpond ME.hDC que je me couhe moins bete) je le remercie ...
Merci d'avance
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.