# VB6: Unterschiedlich farbige  Zeilen in ListBox?



## Tensi (15. September 2004)

Hallo!

Gibt es eine Möglichkeit mit der standard ListBox, farbige Zeilen einzufügen, ohne die ForeColor Eigenschaft zu verwenden, die für die gesamte Liste gilt? Oder gibt es alternative Steuerelemente, die diese Funktion unterstützen?
Vielen Dank schon jetzt für die Antwort(en) ...


----------



## MAN (15. September 2004)

Das könnte dir vielleicht helfen:
http://www.wer-weiss-was.de/theme161/article1684796.html


mfG,
MAN


----------



## Tensi (16. September 2004)

Vielen Dank, MAN!

Aber das funktioniert nur bei ListView (was auch immer das sein mag ...), nicht bei der ListBox.
Trotzdem danke!


----------



## MAN (16. September 2004)

Ein Listview ist sowas, wie du im Windows Explorer auf der rechten Seite hast.

Das Control hat auch die verschiedenen Ansichten kleine Symbole, große Symbole, Liste und Details. Wenn du die Ansicht auf Details (Report) setzt, kannst du so ziemlich genauso mit dem ListView umgehen, wie auch mit der Listbox.

Das Listview-Steuerelement musst du nur noch einbinden:

*'Microsoft Windows Common Controls 5.0 (SP2)*

Dann must du nur noch beim starten des Programms folgenden Code aufrufen, damit dein Listview so aussieht wie deine Listbox:


```
ListView1.View = lvwReport
ListView1.HideColumnHeaders = True
ListView1.ColumnHeaders.Add , , ""
```
und schon kannst du das ListView wie eine ListBox benutzen.

Elemente hinzufügen schaut halt dann ein wenig anders aus, aber auch nicht viel:

```
ListView1.ListItems.Add , , "DeinListText"
```
Elemente löschen machst du mit:

```
ListView1.ListItems.Remove ZeilenIndex
```
Ich hoffe das hilft dir weiter!


mfG,
MAN


----------



## Tensi (17. September 2004)

Vielen Dank MAN!

Funktioniert fast ...
Das in dem Link beschriebene Beispiel ändert den Texthintergrund, ich bräuchte aber den Text selbst geändert. 
Deweiteren ist die Anzahl der Zeichen pro Zeile begrenzt, obwohl das Listview Element wesentlich breiter ist. Hab schon ein bischen rumprobiert, aber ohne Erfolg ...
Wäre nett, wenn Du noch ein paar Tipps für mich hast.
Danke!


----------



## MAN (19. September 2004)

Damit du den ganzen Bereich deiner Liste "ausfüllen" kannst, must du noch eine Kleinigkeit umstellen. Dafür einfach folgenden Code benutzen:

```
Private Sub Form_Load()
   ListView1.View = lvwReport
   ListView1.LabelEdit = lvwManual
   ListView1.FullRowSelect = True
   ListView1.HideColumnHeaders = True
   ListView1.ColumnHeaders.Add , , "", ListView1.Width - 60
End Sub
```
Um hier jedoch die Eigenschaft *FullRowSelect* einsetzen zu können, must du andere Steuerelemente einbinden, und zwar:

*Microsoft Windows Common Controls 6.0 (SP4)*

Das ist vielleicht nicht die eleganteste Lösung, aber um es aussehen zu lassen wie eine ListBox, warscheinlich die Beste. Man könnte ja als Alternative auch gleich die gute alte ListBox hernehmen 

Und das mit der Textfarbe statt Hitergrundfarbe wäre eigentlich auch ganz einfach, doch so funktioniert es komischerweise nicht:

```
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
   (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
   ByVal lParam As Long) As Long

Private Const LVM_FIRST As Long = &H1000
Private Const LVM_SETTEXTCOLOR As Long = (LVM_FIRST + 36)

'Aufruf dann mit:
   Call SendMessage(ListView1.hwnd, LVM_SETTEXTCOLOR, 0, vbRed)
```
Vielleicht noch ein bißchen googlen, obs was findst, sonst wüßte ich nicht, wie man die Farbe individuell einstellen kann.


mfG,
MAN


----------

