Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: SheKeL_C$ en 5 Octubre 2008, 20:34 pm



Título: Label como el de los instaladores
Publicado por: SheKeL_C$ en 5 Octubre 2008, 20:34 pm
Alguna vez cuando habeis estado instalando algo no os habeis fijado en un label del tipo

Código:
C:\...\archivo.exe

Me refiero a que corte la ruta del archivo porque es mas larga que la anchura del label.
Alguno conoce si hay alguna clase que lo haga


Título: Re: Label como el de los instaladores
Publicado por: ‭‭‭‭jackl007 en 5 Octubre 2008, 20:57 pm
porque no haces una pequeña funcion que detecte el ultimo caracterer: \
y luego recortas desde el primero le agregas los 3 puntitos y listo.
yapeeee!!


Título: Re: Label como el de los instaladores
Publicado por: seba123neo en 6 Octubre 2008, 03:26 am
Hola, pues es un metodo horrible igualmente, prefiero que se vea la ruta entera y no lo ultimo antes que se vea lo ultimo y la ruta no se sepa cual es....igualmente proba con TextWidth te informa cuan ancho es el texto contenido en un control...por ejemplo si haces:

Código
  1. Private Sub Command1_Click()
  2. MsgBox Me.TextWidth(Label1)
  3. End Sub

te tira el ancho...podes hacer que si el ancho es mas grande que un valor pues que haga eso que queres.

saludos.


Título: Re: Label como el de los instaladores
Publicado por: ‭‭‭‭jackl007 en 6 Octubre 2008, 04:23 am
bueno la funcion la acabo de hacer, es faciliisima:

Código
  1.  
  2. Function Recortar(cadena As String)
  3. Dim i As Integer
  4. i = InStrRev(cadena, "\")
  5. Recortar = Mid(cadena, 1, 3) & "..." & Mid(cadena, i, Len(cadena) - i + 1)
  6.  
  7. End Function
  8.  
  9. 'la llamas asi: MsgBox Recortar("C:\Documentos Personales\fotografia_1265.jpg")
  10. 'Resultado:  C:\...\fotografia_1265.jpg
  11.  


Título: Re: Label como el de los instaladores
Publicado por: cobein en 6 Octubre 2008, 04:36 am
Código:
Private Declare Function PathCompactPathEx Lib "shlwapi.dll" Alias "PathCompactPathExA" (ByVal pszOut As String, ByVal pszSrc As String, ByVal cchMax As Long, ByVal dwFlags As Long) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long

Private Function CompactPath(sPath As String, lChars As Long) As String
    Dim sBuff As String * 260
    PathCompactPathEx sBuff, sPath, lChars, 0
    CompactPath = Left$(sBuff, lstrlen(sBuff))
End Function



Título: Re: Label como el de los instaladores
Publicado por: ‭‭‭‭jackl007 en 6 Octubre 2008, 04:42 am
PD: cobein como te encantan usar las apis, jaja
es mas profesional... claro


Título: Re: Label como el de los instaladores
Publicado por: cobein en 6 Octubre 2008, 04:56 am
hehehe, el comportamiento de la funcion esta bastante bueno, si pones una ruta con directorios y sin archivo lo corta de otra manera y eso.

Edite arriba porque le mande fruta en el flag.


Título: Re: Label como el de los instaladores
Publicado por: SheKeL_C$ en 6 Octubre 2008, 12:48 pm
Me quedo con el metodo de cobein ;)


Título: Re: Label como el de los instaladores
Publicado por: ‭‭‭‭jackl007 en 6 Octubre 2008, 15:11 pm
normal... yo solo puse lo que tu qerias...
jeje
incluso hay un api que te devuelve la ruta corta del archivo
ShortPath creo que es, no recuerdo donde tenia un ejemplo con uso de esa api...


Título: Re: Label como el de los instaladores
Publicado por: bisualvasic en 6 Octubre 2008, 15:59 pm
io con el de jack,  parece ser mas rapido


Título: Re: Label como el de los instaladores
Publicado por: ssccaann43 © en 6 Octubre 2008, 17:40 pm
Cobein, muy bueno... Un saludo yo hubiese echo lo mismo que Jackl007, pero che vos te luciste...  ;D