VB 5/6-Tipp 0280: Arbeiten mit dem ListView-Control
von Björn Kirsch
Beschreibung
Dieser Tipp zeigt die grundsätzlichen Methoden und Ereignisse des ListView Controls in der Detailansicht. Auf die Einbindung von Grafiken wurde hier verzichtet; dafür bietet der nächste Tipp genügend Material.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'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 ------------- ' Die Komponente 'Microsoft Windows Common Controls 5.0 (SP2) (comctl32.ocx)' wird benötigt. '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Kontrollkästchen-Steuerelement "Check3" ' Steuerelement: Kontrollkästchen-Steuerelement "Check2" ' Steuerelement: Kontrollkästchen-Steuerelement "Check1" ' Steuerelement: Listenansichtsetuerelement "ListView1" Option Explicit Private Sub Form_Load() Dim x% With ListView1 x = Int(.Width / 3.42) .ColumnHeaders.Add , , "Vorname und Name", x .ColumnHeaders.Add , , "Strasse und Hausnummer", x .ColumnHeaders.Add , , "Plz und Wohnort", x .View = lvwReport For x = 1 To 10 .ListItems.Add , "Zeile " & x, Chr$(Rnd * 26 + 65) & _ " Zeile " & (x - 1) & "...Spalte 1" .ListItems(x).SubItems(1) = Chr$(Rnd * 26 + 65) & " Zeile " _ & (x - 1) & "...Spalte 2" .ListItems(x).SubItems(2) = Chr$(Rnd * 26 + 65) & " Zeile " _ & (x - 1) & "...Spalte 3" Next x End With End Sub Private Sub Check1_Click() If Check1.Value = vbChecked Then ListView1.SortKey = 0 ListView1.SortOrder = lvwAscending ListView1.Sorted = True End If End Sub Private Sub Check2_Click() Dim x% If Check2.Value = vbChecked Then ListView1.MultiSelect = True For x = 1 To 3 ListView1.ListItems(x).Selected = True Next x ListView1.ListItems(7).Selected = True Else For x = 1 To ListView1.ListItems.Count ListView1.ListItems(x).Selected = False Next x ListView1.MultiSelect = False ListView1.ListItems(1).Selected = True End If ListView1.SetFocus End Sub Private Sub Check3_Click() If Check3.Value = vbChecked Then ListView1.HideColumnHeaders = True Else ListView1.HideColumnHeaders = False End If ListView1.SetFocus End Sub Private Sub ListView1_AfterLabelEdit(Cancel As Integer, _ NewString As String) Dim x% x = MsgBox("Soll die geänderte Zelle wirklich " & _ "übernommen werden?", vbYesNo) If x = 7 Then Cancel = 1 ListView1.SetFocus End Sub Private Sub ListView1_BeforeLabelEdit(Cancel As Integer) Dim x% x = MsgBox("Wollen die Zelle wirklich editieren?", _ vbYesNo) If x = 7 Then Cancel = 1 ListView1.SetFocus End Sub Private Sub ListView1_ColumnClick(ByVal ColumnHeader As _ ComctlLib.ColumnHeader) Me.Caption = ColumnHeader.Text If Check1.Value = vbChecked Then ListView1.SortKey = ColumnHeader.Index - 1 If ListView1.SortOrder = lvwAscending Then ListView1.SortOrder = lvwDescending Else ListView1.SortOrder = lvwAscending End If ListView1.Sorted = True End If End Sub Private Sub ListView1_DblClick() Me.Caption = "DblClick: Text = '" & ListView1.SelectedItem.Text & _ "' Key = '" & ListView1.SelectedItem.Key & _ "' Index = '" & ListView1.SelectedItem.Index & "'" End Sub Private Sub ListView1_ItemClick(ByVal Item As ComctlLib.ListItem) Me.Caption = "Click: Text = '" & Item.Text & "' Key = '" & _ Item.Key & "' Index = '" & Item.Index & "'" End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
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.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 6 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 Peter am 09.03.2010 um 08:57
Jedesmal, wenn ich durch Google auf diese Seite komme, frage ich mich warum die Tipps immer "so kompliziert" sind. 90% der hier angebotenen Tipps kann man viel einfacher coden.
Kommentar von Franz am 18.02.2006 um 08:19
Hallo,
wer weis wie in einer ListView (MSCOMCTL.OCX 6.0(SP6), Einstellung: 3-lvwReport, AllowColumnReorder = True) die AllowColumnReorder unter VB 6, SP 6 funktioniert? Wenn ich versuche eine Spalte umzupositionieren (mit Drag & Drop), bekomme ich den Fehler "Integer Divide By Zero". Sollte es ohne weiteres funktionieren oder muss programmiert werden, wenn Ja wie am besten?
mfg
Franz
Kommentar von Dennis B. am 02.08.2005 um 10:05
Hi,
benutzt mal folgendes dann müsste es gehen..
Private Sub ListView1_ItemClick(ByVal Item As _
[quote]MSComctlLib.ListItem)[/quote]
vielleicht ist hier nur ein Schreibfehler entstanden..
cu Dennis B.
Kommentar von Albert2000 am 11.05.2004 um 14:51
Warum schreibt ihr oftmals nur Code in die Tipps? Wenn die Beispiele besser kommentiert wären, würd das den anderen Usern schon die Arbeit erleichtern.
So muss man dann jeden unbekannten Befehl im MSDN nachschlagen.
Kommentar von rfrese am 18.07.2003 um 11:49
Hallo,
ich finde es ja sehr gut, das ihr euch so viel Arbeit mit den Beispielen macht, aber leider funktioniert z.B. das mit dem Listview auf meinem Rechner überhaupt nicht, und die Angaben im Sourcecode stimmen einfach nicht. Z.B. wird im Listview-Beispiel angegeben, das 'Microsoft Windows Common Controls 5.0 (SP2)' benötigt wird, kann schon sein, aber wofür ? Das Listview-Control ist über 'Microsoft Windows Common Controls 6.0 (SP4=' implementiert.
Ansonsten funktioniert es eben nicht, 'ComctlLib.ColumnHeader' wird z.B. nicht als Benutzerdefinierter Typ erkannt.
wäre schön, wenn ihr schon diese Beispiele veröffentlicht, umfassende nachvolluiehbare Angaben zur Umgebung zu machen.
mfg,
r. frese
Kommentar von Michi S. am 16.06.2001 um 11:33
ich weiss zwar nich was diese notizen funktion hier an sich hat also probier ich sie mal aus : Frage: und wie kriegt man alle items heraus die mit multiselect selektiert wurden ?