像Windows 的资源管理器,当Treeview 的一个节点获得焦点时,如果我们用右键点击另一个节点,查看属性等,看到的是右键点击的那个节点的信息,并不是之前焦点所在的节点的信息。---这个是正常的,Treeview 就是这个特性。
我想请教,在用 Delphi 编程时,怎样做成这个特性,我好像只能得到焦点所在的节点的信息,每次必须把焦点定到一个节点,才能按鼠标右键。
我想请教,在用 Delphi 编程时,怎样做成这个特性,我好像只能得到焦点所在的节点的信息,每次必须把焦点定到一个节点,才能按鼠标右键。
procedure TfrmView.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
trend: TTreeNode;
begin
if Button = mbRight then
begin
trend := TreeView1.GetNodeAt(X, Y);
if trend <> nil then
begin
//做你想做的。
ShowMessage(trend.Text);
end;
end;
end;
但是,如果打开一个窗口,在窗口里取 treeview 里的节点的值的时候,用 ...Treeview1.Selected...,就不对了,不能取到右键点击的节点的有关信息。
procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
oNode: TTreeNode;
begin
if Button=mbRight then
begin
oNode := TreeView1.GetNodeAt(X, Y);
if oNode<>nil then
begin
//做你想做的。
//ShowMessage(oNode.Text);
OKBottomDlg.ShowModal;
end;
end;
end;--OKBottomDlg的相关代码:----------------------
procedure TOKBottomDlg.FormActivate(Sender: TObject);
begin
Edit1.Text := Form1.TreeView1.Selected.Text;
end;Edit1.Text 的内容不是点击右键时的节点的 Text,而是另一个先前点击鼠标左键选择的节点的 Text。
但是,ShowMessage(oNode.Text) 语句显示的是点击右键时的节点的 Text!
begin
oNode.Selected:=true; //选中它
oNode.Focused:=true; //获取焦点
//做你想做的。
end;