Solved

VB6 and vbTab

Posted on 2003-10-28
9
3,981 Views
Last Modified: 2009-07-29
I am using a listbox to display a number of items separated by vbTab. The first vbTab seems to jump approx 20 spaces where subsequent ones jump approx 5 spaces.
How can I change the first vbTab to be 5 spaces also ?
Anyone any ideas ?
0
Comment
Question by:JimScott
9 Comments
 
LVL 8

Expert Comment

by:ampapa
ID: 9632889
Have you tried Tab(#)?
0
 
LVL 1

Expert Comment

by:mahesh_mp
ID: 9632893
hello jimscott
 you use space your problem will be solved


List1.AddItem Space(5) & "sss" & Space(5) & "cc" & Space(5) & "cc" & Space(5) & "cc" & Space(5) & "cc"
0
 
LVL 15

Expert Comment

by:SRigney
ID: 9633365
The tab character goes from one tabstop to the next tabstop.   Tabstops are set up as 8 spaces, if the first word is 8 characters, then the tab will move the next item to offset 16.  

If the first word on row 2 is 3 characters then tab will move the next item to offset 8.  Tab doesn't put a fixed amount of space between each item, it moves to the next tabstop.  You could use your own formatting like mahesh suggests with spaces instead of tabs.  Another option is to use the ListView instead of the listbox.  It is designed for multiple columns and you can add items to each column as opposed to trying to format them.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 3

Accepted Solution

by:
daffyduck14mil earned 50 total points
ID: 9633711
Hi,

Both Mahesh_mp and SRigney are correct, tabs are very poor at getting a list very straight. However, you can manipulate the distance of the tabstops themselfs with the SendMessage API.

There is a message specific for Listbox controls, it is named LB_SETTABSTOPS. This is used to specify tab stops in a listbox control. Tab stops are specified in dialog base units, which represent one-forth of the average character width.

For our example, I have chosen to use four tabs to demonstrate things. The code below will set tab stops at specified intervals.

Private Declare Function winSendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Const LB_SETTABSTOPS = &H192

Private Sub Form_Load()
  Dim aTabs(3) As Long
  Dim lReturn As Long
  Dim lCounter As Long
 
  aTabs(0) = 20
  aTabs(1) = 40
  aTabs(2) = 60
  aTabs(3) = 80
 
  lReturn = winSendMessageLong(List1.hwnd, LB_SETTABSTOPS, 4, aTabs(0))
 
  For lCounter = 0 To 9
    List1.AddItem "Text that is long" & vbTab & "with some more" & vbTab & "Tabs!" & vbTab & "!" & vbTab & "!"
  Next
End Sub

In this example, the first tabstop is set at about 5 characters (20 divided by 4), the second at about 10 characters and so on. So, you can set the first tabstop to a reasonable large size, so it will look better.

Grtz.©

D.
0
 
LVL 3

Expert Comment

by:daffyduck14mil
ID: 10163528
Hi,
From the looks of it, a typical hit and run action.
D.
0
 
LVL 3

Expert Comment

by:daffyduck14mil
ID: 10623075
Dan,

How can I object to your suggestion... ;-)

Grtz.©

D.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now