Hi,
ich habe es über MouseUp realisiert:
Delphi-Quellcode:
procedure TFRMMain.doNavTreeViewMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Var
ANode: TTreeNode;
R: TRect;
begin
// Navigator mit Click
// Doppelte Ausführung verhindern...
// FTreeViewLocked is Private Field der Unit!
if FTreeViewLocked
then
Exit;
FTreeViewLocked := True;
try
with TTreeView(Sender)
do
begin
ANode := GetNodeAt(x, y);
if Assigned(ANode)
and ANode.Selected
and Assigned(ANode.Data)
then
begin
R := ANode.DisplayRect(True);
// den Klick links oder rechts neben den Text verhindern
if (x >= R.Left - 16)
and (x <= r.Right)
then
if TObject(ANode.Data)
is TAction
then
TAction(ANode.Data).Execute;
end;
end;
finally
Application.ProcessMessages;
FTreeViewLocked := False;
end;
end;
Beim Erzeugen der Nodes habe ich mit ANode.Data := MeineAction eine Action aus einer ActionList zugewiesen.
Ansonsten lieber Doppelklick, da ist es einfacher...
Gruß, Frank