TTreeView und GetNodeAt
-
Hallo,
ich muß in einem TreeView sicher stellen, das immer der Knoten selektiert ist, auf dem sich der Mauszeiger um Moment des Popup Events befindet. Das TCustomTreeView::RightClickSelect habe ich auf false gesetzt.
Folgenden Code im BCB5 gebastelt:
void __fastcall TForm1::PopupTree1Popup(TObject *Sender) { TPoint P = Mouse->CursorPos; P = Form1->ScreenToClient(P); TreeView1->Selected=TreeView1->GetNodeAt(P.x,P.y); // ... }
Nun tritt folgendes Bild auf:
Es wird immer der Knoten unterhalb dessen wo die Maus ist geöffnet.
Der Wert von P.y ist um 19 Pixel verschoben. Ist das die Höhe des horizontalen Scrollbars, oder habe ich was grundsätzlich übersehen?
-
Das sind vermutlich die 18 Pixel der Form-Caption plus 1 Pixel Offest für den Rand des TreeViews.
Vielleicht solltest du es mal mit TreeView1->ScreenToClient versuchen, schliesslich möchtest du doch dessen Koordinaten umgerechnet bekommen, nicht die der Form!?
-
Jansen schrieb:
Vielleicht solltest du es mal mit TreeView1->ScreenToClient versuchen, schliesslich möchtest du doch dessen Koordinaten umgerechnet bekommen, nicht die der Form!?
Klassischer Fall von "Boah, bin ich blöd!"
Villeicht sollte ich nicht mehr 40 Tassen Kaffee am Tag trinken. Könnte sein das ich das dann selber sehe!Danke!!