• Lunes 27 de Junio de 2022, 19:43

Autor Tema:  justificar un listbox  (Leído 1783 veces)

master33

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
justificar un listbox
« en: Viernes 13 de Febrero de 2009, 17:51 »
0
tengo varios listbox los cuales son cargados con numeros y lo que necesito es justificarlos a la derecha lo que no he podido hacer

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: justificar un listbox
« Respuesta #1 en: Sábado 14 de Febrero de 2009, 01:27 »
0
Pues la verdad no hay manera pero te podria servir agregarle espacios o tabuladores al texto algo asi

For i = 0 To List1.ListCount - 1
    List1.List(i) = vbTab & vbTab & List1.List(i) 'o tambien List1.List(i) = "         " & List1.List(i)
Next

master33

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: justificar un listbox
« Respuesta #2 en: Martes 24 de Febrero de 2009, 16:12 »
0
me ayudo bastante tu idea  gracias

seba123neo

  • Miembro activo
  • **
  • Mensajes: 36
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.neovisualbasic.com.ar/
Re: justificar un listbox
« Respuesta #3 en: Miércoles 25 de Febrero de 2009, 02:28 »
0
Hola, proba este ejemplo, es algo extenso para lo que queres, pero es lo mejor...

Código: Visual Basic
  1. Option Explicit
  2.  
  3. Private Const LB_SETTABSTOPS As Long = &H192
  4. Private Const WM_GETFONT = &H31
  5.  
  6. Private Type RECT
  7.    Left As Long
  8.    Top As Long
  9.    Right As Long
  10.    Bottom As Long
  11. End Type
  12.  
  13. Private Type SIZE
  14.    cx As Long
  15.    cy As Long
  16. End Type
  17.  
  18. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  19. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  20. Private Declare Function GetDialogBaseUnits Lib "user32" () As Long
  21. Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hDC As Long, ByVal lpString As String, ByVal cbString As Long, lpSize As SIZE) As Long
  22. Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
  23. Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
  24. Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
  25. Private Declare Function GetClientRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
  26.    
  27. Private Sub Form_Load()
  28.    List1.AddItem vbTab & "123"
  29. End Sub
  30.  
  31. Private Sub Command1_Click()
  32.    Dim hwndLB As Long
  33.    Dim rc As RECT
  34.    ReDim tabarray(0 To 0) As Long
  35.    hwndLB = List1.hWnd
  36.    Call GetClientRect(hwndLB, rc)
  37.    tabarray(0) = -((rc.Right - rc.Left) / CalcPixelsPerDlgUnit(hwndLB))
  38.    Call SendMessage(List1.hWnd, LB_SETTABSTOPS, 0&, ByVal 0&)
  39.    Call SendMessage(List1.hWnd, LB_SETTABSTOPS, 1&, tabarray(0))
  40.    List1.Refresh
  41. End Sub
  42.  
  43. Private Function CalcPixelsPerDlgUnit(hwndLB As Long) As Single
  44.    Dim hFont As Long
  45.    Dim hFontOld As Long
  46.    Dim hDC As Long
  47.    Dim sz As SIZE
  48.    Dim cxAvLBChar As Long
  49.    Dim cxDlgBase As Long
  50.    Const sChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
  51.  
  52.    hDC = GetDC(hwndLB)
  53.  
  54.    If hDC Then
  55.       hFont = SendMessage(hwndLB, WM_GETFONT, 0, ByVal 0&)
  56.       hFontOld = SelectObject(hDC, hFont)
  57.       If GetTextExtentPoint32(hDC, sChars, Len(sChars), sz) Then
  58.         cxAvLBChar = sz.cx / Len(sChars)
  59.         cxDlgBase = GetDialogBaseUnits And &HFFFF&
  60.         CalcPixelsPerDlgUnit = (2 * cxAvLBChar) / cxDlgBase
  61.       End If
  62.    
  63.       Call SelectObject(hDC, hFontOld)
  64.       Call ReleaseDC(hwndLB, hDC)
  65.   End If
  66. End Function
  67.  
  68.  

saludos.
Todos somos ignorantes;lo que pasa es que no todos ignoramos las mismas cosas - Albert Einstein