VB and VBA Users Source Code: Setting the tab positions in a listbox
[
Home
|
Contents
|
Search
|
Reply
| Previous | Next ]
VB/VBA Source Code
Setting the tab positions in a listbox
By:
Andrew Baker
Email (spam proof):
Email the originator of this post
Date:
Monday, February 26, 2001
Hits:
565
Category:
Windows API
Article:
To set the tab positions of a listbox use the following code: Option Explicit 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 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 'Purpose : Sets the tab positions in a listbox 'Inputs : lbListbox The listbox to set the tab positions ' alColWidths A zero based one dimension array of longs containing ' the new tab positions. Note, element zero must be 0 and ' the tab positions are cummulative. ' [lNumCols] The number of columns to alter the tab positions of. ' If this is less than the number of columns visible, the ' additional columns may be painted over. 'Outputs : Returns True on success, else returns False. 'Author : Andrew Baker 'Date : 11/09/2000 'Notes : When adding data to the listbox you must delimit your columns with ' the vbTab character eg. Me.List1.AddItem "Column1" & vbTab & "Column2" ' ' Example: For a listbox with three columns use equally spaced at 30 chars ' Dim lThisCol As Long, lSumColWidths As Long ' Dim alColWidths(0 To 2) As Long ' Const clMyColTabWidth as Long = 30 ' For lThisCol = 1 To UBound(alColWidths) ' alColWidths(lThisCol) = lSumColWidths + clMyColTabWidth 'Tab stops are cummulative ' lSumColWidths = lSumColWidths + alColWidths(lThisCol) ' Next ' ListboxSetTabStops Me.List1, alColWidths 'Revisions : Public Function ListboxSetTabStops(lbListbox As ListBox, alColWidths() As Long, Optional lNumCols As Long = -1) As Boolean Const LB_SETTABSTOPS = &H192, WM_PAINT = &HF On Error GoTo ErrFailed If lNumCols = 0 Then 'Calculate the number of columns lNumCols = UBound(alColWidths) - LBound(alColWidths) + 1 End If 'Clear any existing tabs Call SendMessage(lbListbox.hwnd, LB_SETTABSTOPS, 0&, ByVal 0&) 'Set new tabs Call SendMessage(lbListbox.hwnd, LB_SETTABSTOPS, lNumCols, alColWidths(0)) 'Refresh Listbox lbListbox.Refresh 'Return success code ListboxSetTabStops = True Exit Function ErrFailed: Debug.Print "Error in ListboxSetTabStops: " & Err.Description ListboxSetTabStops = False End Function
Terms and Conditions
Support this site
Download a trial version of the Excel Workbook Rebuilder