ListView Item mittels Maus auswählen
-
Ich hab ein kleines Problem mit dem Auswählen eines Elements aus einer ListView mit der Maus. Jetzt werde ich sicher geschimpft, dass ich suchen soll, oder in der FAQ nachschaue, jedoch hab ich das gemacht und leider nichts gefunden. Also ich wäre sehr froh, wenn mir jemand eine Antwort auf diese sicher triviale Frage geben könnte. Mein Code sieht folgendermaßen aus:
TPoint point; int x, y; x = Main->Left + Main->ListView->Left + Main->GBResKM->Left; y = Main->Top + Main->ListView->Top + Main->GBResKM->Top; point.x = Mouse->CursorPos.x - x; point.y = Mouse->CursorPos.y - y; TListItem* current = ListView->GetNearestItem(point, sdAll);Irgendwie muss es ja so funktionieren, hier stimmen die Werte für x und y nicht, hab ich irgendwas vergessen?
-
Servus!
hast Du mal überlegt, wozu der ganze Firlefanz hier dienen soll:
int x, y; x = Main->Left + Main->ListView->Left + Main->GBResKM->Left; y = Main->Top + Main->ListView->Top + Main->GBResKM->Top; point.x = Mouse->CursorPos.x - x; point.y = Mouse->CursorPos.y - y;Das sollte eigentlich reichen:
TPoint point; ListView->GetNearestItem(point, sdAll);In point.x und point.y stehen dann hoffentlich die Koordinaten ...

-
Mit Mouse->CursorPos bekomme ich die globale Position oder? Da mein Element in einer Groupbox ist und ich die relative Position in diesem Element brauche, muss ich doch die anderen Abstände wegzählen?
-
Nö, die Funktion GetNearestItem() bezieht sich doch auf die lokalen ListView-Koordinaten.
-
Andererseits ist es doch einfachen das ListView-Ereignis OnSelectItem zu behandeln. Da bekommst Du doch gleich einen Zeiger auf das aktuell gewählte Item.
-
Ja, und mit Mouse->CursorPos bekomme ich die globalen, deshalb muss ich sie auf die lokalen umrechnen? Gibts eine einfachere Methode?
-
Danke, das ist genau das was ich gesucht habe.