Solved

VB6 and vbTab

Posted on 2003-10-28
9
3,890 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
Comment Utility
Have you tried Tab(#)?
0
 
LVL 1

Expert Comment

by:mahesh_mp
Comment Utility
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
Comment Utility
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
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 
LVL 3

Accepted Solution

by:
daffyduck14mil earned 50 total points
Comment Utility
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
Comment Utility
Hi,
From the looks of it, a typical hit and run action.
D.
0
 
LVL 3

Expert Comment

by:daffyduck14mil
Comment Utility
Dan,

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

Grtz.©

D.
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
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…

772 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

12 Experts available now in Live!

Get 1:1 Help Now