Seite 1 von 1

[VB6] Überprüfen ob Objekt ein ListItem ist

Verfasst: 23.09.2011, 10:30
von Condottiero
Hallo Zusammen,

hab' nur eine kurze Frage, die sich mit Sicherheit einfach beantworten lässt ... aber ich komme gerade nicht drauf. ;-)

Ich bewege meine Mouse innerhalb eines ListView-Controls und möchte im MouseMove-Event immer das ListItem "abfangen", über dem ich mich gerade befinde. Das ListView-Control ist nicht vollständig gefüllt. Demzufolge gibt es auch eine Föäche im Control, in der ich kein ListItem "treffen" kann. Nun ist es so, dass ich beim bewegen der Mouse immer currentItem = ListView1.HitTest(x, y) ausführe, was aber zu Fehlern führt, wenn ich gerade kein ListItem berühre.

Wie kann ich an dieser Stelle überprüfen, ob ich ein ListItem unter dem Cursor habe, oder nicht?

Ich dachte an soetwas wie

Code: Alles auswählen

If ListView1.HitTest(x, y) Is ListItem Then ......... End If
Funktioniert so aber nicht. ^^

Hat jemand eine andere Idee oder kann mir den Fehler in meinem Lösungsansatz aufdecken?

Viele Grüße,
Chris

Re: [VB6] Überprüfen ob Objekt ein ListItem ist

Verfasst: 23.09.2011, 13:10
von Stephan Theisgen
Hi!
Ich hab nicht viel Zeit und VB ist sehr lange her, aber wie wäre es mit:

Code: Alles auswählen

If Not ListView1.HitTest(x,y) Is Nothing Then ... End If
nur so ins Blaue...

Viele Grüße
Stephan

Re: [VB6] Überprüfen ob Objekt ein ListItem ist

Verfasst: 24.09.2011, 07:17
von RazorX
- War schwachsinn -

Re: [VB6] Überprüfen ob Objekt ein ListItem ist

Verfasst: 24.09.2011, 09:06
von Stephan Theisgen
Guten Morgen!
- War schwachsinn -
Ich hoffe das war jetzt nicht auf meine Antwort bezogen!

Trotzdem habe ich in der Eile vergessen das richtig zu schreiben (man beachte das ".Item"):

Code: Alles auswählen

If Not ListView1.HitTest(e.X, e.Y).Item Is Nothing Then
So klappts aber auf jedenfall. Ich habs jetzt in einem schnelle VB-Projekt getestet...

Re: [VB6] Überprüfen ob Objekt ein ListItem ist

Verfasst: 24.09.2011, 10:45
von RazorX
Nein, war nicht auf dich bezogen. Ich hatte genau das gleiche wie du geschrieben (mit dem .Item) unter der Annahme es würde sich um das .NET Framework handeln. HitTest liefert dort ja ein ListViewHitTestInfo struct zurück. Doch als ich dann gesehen hatte das im Titel ja VB6 steht war ich mir nicht mehr sicher ob das auch dort funktioniert.

LG

Re: [VB6] Überprüfen ob Objekt ein ListItem ist

Verfasst: 24.09.2011, 14:00
von Stephan Theisgen
Oh!

Dann muß ich Dir aber vielleicht doch Recht geben... Denn auf das VB6 habe ich jetzt gar nicht geachtet. Aber so oder so ähnlich ging das damals schon. Ob das jetzt wirklich VB6 kompatibel ist, ist ne gute Frage!

Edit: In VB6 müßte es tatsächlich ohne das ".Item" gehen, da dort HitTest tatsächlich ein Item-Objekt zurückliefert oder eben Nothing, wenn kein Item an der Position ist...

Re: [VB6] Überprüfen ob Objekt ein ListItem ist

Verfasst: 27.09.2011, 10:55
von Condottiero
Hallo Zusammen und danke für die Antworten. :-)

Ich habe den Teil meines Projektes, aus dem dieses Problem hier entstanden ist, zwar nun erstmal hinten angestellt, aber das Problem, worum es hier ging, habe ich noch wie folgt gelöst:

Code: Alles auswählen

If TypeName(ListView1.HitTest(x, y)) = "IListItem" Then
Danke und viele Grüße :-)

Chris