Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TTreeView RightClickSelect funktioniert nicht


O'rallY - Do 01.08.02 15:09
Titel: TTreeView RightClickSelect funktioniert nicht

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure Tform_Main.TreeView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

var
        CPos: TPoint;
begin
        GetCursorPos(Cpos);

        if Button = mbRight then
        begin;
           Button := mbLeft;

          //Abfrage ob bestimmter Node gedrückt wurde und Reaktion



           PopupMenu1.Popup(CPos.X, CPos.Y)
        end;
end;


Ich will bei, drücken der rechten Maustaste auf eine Komponente TTreeView, feststellen, ob was für ein Node selektiert ist und dementsprechend ein modifiziertes PopupMenu aufpopen lassen. Nur das Problem ist, wenn ich ein Node in der Kompo anklicke (mit der rechten Mt.), wird dieser nicht selektiert und dem entsprechend kann ich nicht auswerten, welcher selktiert wurde. Ich habe die Eigenschaft RightClickSelect schon auf TRUE gestellt.
Ich hab auch schon probiert bei klicken der rechten Maustaste der Komponente "vorzugaukeln", dass die linke Maustaste gedrückt wurde,

Quelltext
1:
2:
3:
...
Button := mbLeft;
...


doch auch das funktioniert nicht.
Bitte um Hilfe!


Tpercon - Do 01.08.02 19:36

Hi

Schau mal in der Hilfe nach: TreeView1.GetNodeAt

Das müßte dir weiter helfen.

Gruß


O'rallY - Mo 26.08.02 11:32

Ok, das hat mir schon mal weitergeholfen. Doch richtig funktionieren tut es noch nicht (jedenfalls nicht so wie ich es anwende). Ich habs mal so versucht:

Quelltext
1:
TreeView1.GetNodeAt({Mausposition X}, {Mausposition Y}).Selected := true;                    


Wenn ich nun ein Item zur Laufzeit mit der rechten Maustaste anklicke, erscheint folgende Fehlermeldung:
Access violation at address ...... in module .......


toms - Mo 26.08.02 11:42

http://www.swissdelphicenter.ch/de/showcode.php?id=1145


O'rallY - Mo 26.08.02 11:46

Sper, so funktionierts. Vielen Dank!