Raccourcir l'affichage du chemin d'un fichier

Soyez le premier à donner votre avis sur cette source.

Vue 6 223 fois - Téléchargée 305 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

Messages postés
33
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2013

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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
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
Messages postés
33
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2013

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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
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
Messages postés
33
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2013

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
Afficher les 13 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.