Raccourcir l'affichage du chemin d'un fichier

0/5 (13 avis)

Vue 6 596 fois - Téléchargée 325 fois

Description

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 !)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
farrakis Messages postés 32 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 12 mai 2013
4 juin 2008 à 08:55
Merci beaucoup ca marche impec :)

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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 75
4 juin 2008 à 04:23
on donne cette reference pour que l'API puisse connaitre la police que nous utilisons




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
farrakis Messages postés 32 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 12 mai 2013
3 juin 2008 à 18:56
merci renfield.. mais là ça depasse de bcp mes pauvres capacités en programmation ..

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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 75
3 juin 2008 à 10:52
pas besoin, .Net cause en pixels
faut pas faire du copier coller, ni "traduire", faut adapter...

hDc => Device Context Handle
identifiant de la surface de rendu, en gros
farrakis Messages postés 32 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 12 mai 2013
3 juin 2008 à 10:34
Bonjour,

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.