treeview使用右键菜单的时候,如何使焦点也落在点击的节点上?(20分)

  • 主题发起人 主题发起人 tongki_8
  • 开始时间 开始时间
T

tongki_8

Unregistered / Unconfirmed
GUEST, unregistred user!
对treeview使用右键菜单的时候,使焦点也落在点击的节点上,并对该节点进行删除操作。 
  想用TreeView的GetNodeAt获得鼠标位置是否有节点,若有,设置TreeView的Selected就可以了,若无则弹出的上浮菜单项中的“删除”不可用。

  以下代码为什么焦点还是不会改变??


procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var dd:TTreeNode;
begin
if button= mbRight then
if treeView1.GetNodeAt(x,y)<>nil then
begin
ShowMessage('yyyyyyyyyyyy');
dd:=TreeView1.GetNodeAt(x,y);
dd:=TreeView1.Selected;
 end
else
ShowMessage('nnnnnnnnnnnn');

end;
 
if button= mbRight then
if treeView1.GetNodeAt(x,y)<>nil then
begin
ShowMessage('yyyyyyyyyyyy');
dd:=TreeView1.GetNodeAt(x,y);
dd.selected := true;//这样才设定选中
 end
else
ShowMessage('nnnnnnnnnnnn');

end
 
不能用右健选中属性吗?
 
procedure TForm.TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
CNode : TTreeNode;
begin
CNode := TreeView.GetNodeAt(X, Y);
if CNode = nil then Exit;
TreeView.Selected := CNode;
...
end;
 
我在用Listview时,直接在
procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
里添加 listview1.Selected<>nil 就可以了,鼠标左右键都没问题.
Treeview应该差别不大
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
532
import
I
D
回复
0
查看
844
DelphiTeacher的专栏
D
后退
顶部