Programación General > Visual Basic 6.0 e inferiores
justificar un listbox
(1/1)
master33:
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:
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:
me ayudo bastante tu idea gracias
seba123neo:
Hola, proba este ejemplo, es algo extenso para lo que queres, pero es lo mejor...
--- Código: Visual Basic ---Option Explicit Private Const LB_SETTABSTOPS As Long = &H192Private Const WM_GETFONT = &H31 Private Type RECT Left As Long Top As Long Right As Long Bottom As LongEnd Type Private Type SIZE cx As Long cy As LongEnd Type Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Declare Function GetDialogBaseUnits Lib "user32" () As LongPrivate Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hDC As Long, ByVal lpString As String, ByVal cbString As Long, lpSize As SIZE) As LongPrivate Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As LongPrivate Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As LongPrivate Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As LongPrivate Declare Function GetClientRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long Private Sub Form_Load() List1.AddItem vbTab & "123"End Sub Private Sub Command1_Click() Dim hwndLB As Long Dim rc As RECT ReDim tabarray(0 To 0) As Long hwndLB = List1.hWnd Call GetClientRect(hwndLB, rc) tabarray(0) = -((rc.Right - rc.Left) / CalcPixelsPerDlgUnit(hwndLB)) Call SendMessage(List1.hWnd, LB_SETTABSTOPS, 0&, ByVal 0&) Call SendMessage(List1.hWnd, LB_SETTABSTOPS, 1&, tabarray(0)) List1.RefreshEnd Sub Private Function CalcPixelsPerDlgUnit(hwndLB As Long) As Single Dim hFont As Long Dim hFontOld As Long Dim hDC As Long Dim sz As SIZE Dim cxAvLBChar As Long Dim cxDlgBase As Long Const sChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" hDC = GetDC(hwndLB) If hDC Then hFont = SendMessage(hwndLB, WM_GETFONT, 0, ByVal 0&) hFontOld = SelectObject(hDC, hFont) If GetTextExtentPoint32(hDC, sChars, Len(sChars), sz) Then cxAvLBChar = sz.cx / Len(sChars) cxDlgBase = GetDialogBaseUnits And &HFFFF& CalcPixelsPerDlgUnit = (2 * cxAvLBChar) / cxDlgBase End If Call SelectObject(hDC, hFontOld) Call ReleaseDC(hwndLB, hDC) End IfEnd Function
saludos.
Navegación
Ir a la versión completa