Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0025: Tabulatoren in Listboxen setzen

 von 

Beschreibung 

Von Hause aus ist es nicht möglich in einem Listenfeld Tabs einzubauen. Hier wird gezeigt wie es doch machbar ist. Zudem lässt sich die Tabulatorweite beliebig verändern.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

SendMessageA (SendMessage)

Download:

Download des Beispielprojektes [2,27 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias FORM1.FRM  ---------
' Steuerelement: Schaltfläche "Command2"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Listen-Steuerelement "List1"

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 Const LB_SETTABSTOPS = &H192

'### Hier die Anzahl der maximal aufretenen Tabs eintragen (hier 3)
Const OGrenze = 3

'### Feld reservieren
Dim Tabulator(1 To OGrenze) As Long

Private Sub Form_Load()
  '### Die einzelnen Tabs mit konkreten Werten belegen
  Tabulator(1) = 50
  Tabulator(2) = 100
  Tabulator(3) = 150
 'Tabulator(4) = 200
 'Tabulator(5) = 250
 '          ...
 
  Call MakeList
End Sub

Private Sub MakeList()
  '### Liste leeren, neue Tabs via API senden & Liste neu füllen
  List1.Clear
  
  SendMessage List1.hwnd, LB_SETTABSTOPS, OGrenze, Tabulator(1)
  
  List1.AddItem "Heinrich" & vbTab & "Gumpertisch" & vbTab & "12345" _
                & vbTab & "Otzlingen"
  List1.AddItem "Gundi" & vbTab & "Gumpertisch" & vbTab & vbTab _
                & "Futzkirchen"
  List1.AddItem "Fritz" & vbTab & vbTab & "12345" & vbTab _
                & "Rotzbach"
  List1.AddItem "Lisel" & vbTab & "Krauter" & vbTab & "12345"
End Sub

Private Sub Command1_Click()
  '### Tabs aufwärts schieben
  Tabulator(1) = Tabulator(1) + 1
  Tabulator(2) = Tabulator(2) + 2
  Tabulator(3) = Tabulator(3) + 3
 'Tabulator(4) = Tabulator(4) + 4
 'Tabulator(5) = Tabulator(5) + 5
 '          ...

  Call MakeList
End Sub

Private Sub Command2_Click()
  '### Tabs abwärts schieben
  If Tabulator(1) < 0 Then Exit Sub
  
  Tabulator(1) = Tabulator(1) - 1
  Tabulator(2) = Tabulator(2) - 2
  Tabulator(3) = Tabulator(3) - 3
 'Tabulator(4) = Tabulator(4) - 4
 'Tabulator(5) = Tabulator(5) - 5
 '          ...
 
  Call MakeList
End Sub
'---------- Ende Formular "Form1" alias FORM1.FRM  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Methode oder Datenobjekt nicht gefunden - Bö 09.10.12 20:12 7 Antworten

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 7 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Olaf am 27.01.2008 um 13:04

Das habe ich schon lange gesucht!

Kommentar von Klaus am 01.06.2005 um 13:28

Das habe ich schon lange gesucht!

Kommentar von Volker am 13.03.2003 um 23:09

Leider funktioniert das nicht mit einer ComboBox. Hat jemand eine Idee, wie es dort zu verwirklichen ist.

Kommentar von Anton Erhard am 07.01.2003 um 12:41

Die Lösung ist für meinen Bedarf gerade richtig

Kommentar von Alfred C. Knoll-Harsanyi am 16.05.2002 um 12:29

Ups! Fehler gefunden! Der Datentyp für Tab war falsch. Das wirkt sich wohl unter W2K und XP unterschiedlich aus.

Kommentar von Alfred C. Knoll-Harsanyi am 16.05.2002 um 12:12

Mir ist nicht klar, welche Maßeinheit dem Tab zu Grunde liegt. Ich habe zwei Tabs mit 50 und 150 belegt, die erste Spalte passt, die zweite Spalte wird nicht angezeigt.
List1.Width: 6435
Sind das Twips, Pixels, ...?
Unter W2K (zu Hause)funktioniert die selbe Routine allerdings überhaupt nicht im Gegensatz zu unter XP (Firma). Warum?

Kommentar von k.doblander am 14.07.2001 um 00:10

Mir fiel beim experimentieren auf, dass negative TAB-Werte eine rechtsbündige Ausrichtung zur Folge haben. Kann das jemand bestätigen oder ist das wieder unter 'its not a bug - ist a feature' einzuordnen ?