Link to home
Start Free TrialLog in
Avatar of Xperl
Xperl

asked on

right click...

I am using a treeview with a popup menu assigned to it.  When i right click on the treeview the popup menu works ok but the problem is i want to be able to right click on a node, highlight it and get the node selected.index returned so that when i choose a command on the popup menu it knows what node i am working with.

any ideas?
Avatar of kretzschmar
kretzschmar
Flag of Germany image

set the option rightclickselect or similar to true in the tree option propertys
Avatar of Epsylon
Epsylon

Use the TTreeView.OnContextPopup event:

procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin
  TreeView1.Selected := TreeView1.GetNodeAt(MousePos.x, MousePos.y);
  Menu1.Caption := TreeView1.GetNodeAt(MousePos.x, MousePos.y).Text;
end;
Avatar of Xperl

ASKER

kretzschmar, i checked for a rightclickselect in the property but there isn't one.
Avatar of Xperl

ASKER

epsylon, there is no OnContextPopup event either.

I'm using delphi 2 if that makes a difference.
delphi2, yes this makes sure a difference :-)

but i guess you can use eps code in the mousedown-event,
just check the mousebutton-before
> I'm using delphi 2 if that makes a difference.

>> Sigh <<

Why do people never say which version they use when they ask a question? It is trivial information.
I guess the GetNodeAt() method is not there eighter in D2..?
don't know, eps, long time ago as i used d2
ASKER CERTIFIED SOLUTION
Avatar of Epsylon
Epsylon

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Xperl

ASKER

sorry epsylon - it's late here and sleep has been knocking on the door for hours but i have tried to ignore it to get a few bugs in my program sorted out.

i have arranged to have myself smacked around the head with a wet lettuce at a leter date as punishment for not giving the version number in the original question.

the good news of course is that the code you gave me seems to have worked when i put it into the mousedown event and changed the code to:

TreeView1.Selected := TreeView1.GetNodeAt(x, y);
label1.Caption := TreeView1.GetNodeAt(x, y).Text;

one thing though, what does the MousePos do and am losing something by removing it?
>one thing though, what does the MousePos do and am losing something by removing it?
what mousepos?

if you mean x,y you need it only to select the rightclicked node, maybe you should check, if a node if afterwards really selected

TreeView1.Selected := TreeView1.GetNodeAt(x, y);
if assigned(TreeView1.Selected) then
  label1.Caption := TreeView1.selected.Text;

Avatar of Xperl

ASKER

thanks kretzschmar.  I will accept the answer eps gave but i shall post some points for you too for your help.

is that ok?  
if you want, then its ok for me too :-)
>i have arranged to have myself smacked around the head with a wet lettuce at a leter date as punishment
for not giving the version number in the original question.

with a wet lettuce..?  :o)
Thanks a lot for the points, Xperl.