Listview Zeilen selektieren

Hallo,

wenn ich in einem Listview abfrage, ob eine Zeile selektiert ist, bekomme ich bei der ersten Zeile immer TRUE, obwohl dies gar nicht selektiert ist. Bei allen anderen Zeilen funktioniert es bestens:

If ListView1.ListItems(m).Selected = True

Was mach ich falsch?

Gruß
Gunter

Moin, Gunter,

If ListView1.ListItems(m).Selected = True

soweit ich weiß, schreibt sich das ohne ListItems. Getestetes Beispiel: (hängt die selektierten Werte aneinander):

For Each element In Listbox.ItemsSelected
 Wert = Listbox.ItemData(element)
 Liste = Liste & "'" & Wert & "',"
 Listbox.Selected(element) = False
Next element

Gruß Ralf

Hallo Ralf,

leider funktioniert dies nicht.

Bekomme bei der Zeile

For Each element In ListView1.SelectedItem

einen Laufzeitfehler:

Objekt unterstützt diese Methode nicht.

Gruß
Gunter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin, Gunter,

For Each element In ListView1.SelectedItem

zum Vergleich:

For Each element In Listbox.ItemsSelected

:smile:))

Denk auch dran, element als varying zu erklären.

Gruß Ralf

Hallo Ralf,

ich habe ein Listview und keine Listbox, deshalb müßte

For Each element In ListView1.SelectedItem

richtig sein, oder?

Gruß
Gunter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Ralf, Gunter,

Hi Gunter,

ich habe ein Listview und keine Listbox,

vertan, vertan, sprach der Hahn Igel und
stieg von der Klobürste

deshalb müßte

For Each element In ListView1.SelectedItem

richtig sein, oder?

nö, wenn, dann SelectedItem s
(http://msdn2.microsoft.com/en-us/library/system.wind…)

Böses Spiel, was Microsoft da treibt:
ItemsSelected und
SelectedItems :frowning:((

@ Ralf

Dein Link bezieht sich auf VB.NET, was nicht VB6 ist, wovon ich mal ausgehe.
Gunter sein gezeigter Weg ist Richtig und sollte auch klappen.
Nur muesste man wissen, wie er das Listview eingestellt hat und welchen Wert M hat!

Gruß Ralf

MfG Alex

Moin, Alex,

Dein Link bezieht sich auf VB.NET, was nicht VB6 ist, wovon
ich mal ausgehe.

dass ein Control namens Listview je nach VB-Version mal die eine, mal die andere Definition hat, traue ich nicht einmal Microsoft zu.

Nur muesste man wissen, wie er das Listview eingestellt hat

Wie wird eine Listview eingestellt?

und welchen Wert M hat!

Dazu muss man wissen, dass VB nicht bei 1 zu zählen anfängt, sondern bei 0.

Gruß Ralf

Moin Ralf,

dass ein Control namens Listview je nach VB-Version mal die
eine, mal die andere Definition hat, traue ich nicht einmal
Microsoft zu.

Oh doch, wenn du dich da mal nicht irrst :wink:
Ich habe leider kein VB6 mehr drauf, sondern VB 9, von daher kann ich nicht mehr nachschauen. Aber soweit ich weiss, geht es so wie es der Fragesteller gepostet hat!

Aber auch wenn ich mal kurz google befrage, so bekomme ich als Ergebnis.

ListView1.ListItems(x).Selected = True

Wenn wir nun einmal nachdenken, so koennte man das umbauen in

if ListView1.ListItems(x).Selected then
 'Dein Source
end if

Aber wenn wir einmal dabei sind …
Ein kleiner Auszug, was ich gerade gelesen habe :wink:

Common Controls von VB5 nach VB6
Die Windows Common Controls (comctl32) werden nicht automatisch in die neuen Versionen (mscomctl) überführt, wenn ein VB5 Projekt mit der VB6 IDE geladen wird. Auch nicht wenn die Option "ActiveX Steuerelemente aktualisieren" aktiviert ist - so wie es in der Online Dokumentation zu VB6 beschrieben ist.

Die Erklärung und Anweisungen, um die Projekte zu aktualisieren sind im Microsoft Knowledge Base Artikel Q190952 zu finden.
Microsoft bietet ein kleines Tool an, um die notwendigen Änderungen automatisch vornehmen zu lassen.

Ich habe festgestellt, daß beim ListView Steuerelement die Spaltenbreiten kaputt gehen. :frowning: Die Zahlen für die Breiten sind zwar noch korrekt, aber die Anzeige ist falsch. Das muß wohl daran liegen, daß die VB6 Version, die Breiten anders interpretiert.
Zu jeder Spaltenbreite müssen ca. 280 Twips hinzuaddiert werden. Da ich sowieso für jedes ListView die ganzeZeile Prozedur (s. höher auf dieser Seite) aufrufe, habe ich dort eine Korrektur eingefügt, damit ich nicht massig ListView Controls ändern muß. 

Wie wird eine Listview eingestellt?

Du kannst auf Report umschalten, Mehrfachauswahl und und und

und welchen Wert M hat!

Dazu muss man wissen, dass VB nicht bei 1 zu zählen anfängt,
sondern bei 0.

Auch da irrst du dich gewaltig! Ich sage mal sehr waage… nur bei „Objecten“

Was meinst du denn wieviele Felder du in dem Falle hast?

Option Base 1
Dim x(9) as String

Aber mal abgesehen davon. Gehen wir mal von einen der folgenden Faelle aus. Du hast eine Schleife (M) sie wird von 0 bis Count -1 durchlaufen. In der Schleife, tritt ein Fehler auf und aus irgendein Grund wird M wieder zurueckgesetzt. Sprich du bleibst haengen.
Nehmen wir mal an, der Fehler tritt auf wenn die Zeile makiert ist. Die erste Zeile ist makiert, was passiert in dem Falle?

Ist es da verkehrt nach dem Wert von M zu fragen ?

Gruß Ralf

MfG Alex

Moin, Alex,

Anmerkung vorab: Dies könnte meine letzte Antwort in diesem Forum sein, an das Klickibunti werde ich mich nicht mehr gewöhnen. Zweibelschneiden ist angenehmer.

ListView1.ListItems(x).Selected = True

Wenn wir nun einmal nachdenken, so koennte man das umbauen in

if ListView1.ListItems(x).Selected then
'Dein Source
end if

Da erschließt sich mir die syntaktische Verbesserung absolut nicht.

Aber wenn wir einmal dabei sind …
Ein kleiner Auszug, was ich gerade gelesen habe :wink:

(…)
DAs spricht für einen andere Darstellung auf dem Bildschirm, aber nicht für einen neue Syntax.

Wie wird eine Listview eingestellt?

Du kannst auf Report umschalten, Mehrfachauswahl und und und

Und was hat das mit dem aktuellen Problem zu tun? Die Ansicht kann doch nichts dafür, dass ein Index bammelt.

und welchen Wert M hat!

Dazu muss man wissen, dass VB nicht bei 1 zu zählen anfängt,
sondern bei 0.

Auch da irrst du dich gewaltig! Ich sage mal sehr waage… nur
bei „Objecten“

Da irre ich mich nicht, wir sprechen gerade von einem Objekt namens Listview resp. den Elementen einer Listview.

Was meinst du denn wieviele Felder du in dem Falle hast?

Keine Ahnung, ich lese kein fremdes Coding :wink:))

Ist es da verkehrt nach dem Wert von M zu fragen ?

Fragen ist nie verkehrt - habe ich das behauptet?

Gruß Ralf