zccbest 发表于 2013-1-25 13:38:09

关于treeview控件的一个简单方法判断鼠标左右键

关于treeview用法,google一下是可以可以找到一些应用的,但关于左右键判断却好像没有介绍,自己试了一下,利用MouseDown和nodeclick两个方法来实现,MouseDown先获取左右键“值”,然后利用setappdata存储该值,在nodeclick方法里再用getappdata获取此致,并且判断点击的是哪一个node。function treeviewdemo()
hf=figure('NumberTitle','off','name','TreeView演示','Position',,'menubar','none');
hfpos=get(hf,'position');
pos=;
axes('parent',hf,'position',);
h_tv=actxcontrol('MSComctlLib.TreeCtrl.2',pos,hf);
h_nodes=h_tv.Nodes;
h_node=h_nodes.Add;
h_node.Text='分析(一)';
h_node.Key='R1';
h_node.Expanded=true;
h_node(1)=h_nodes.Add('R1',4,'R1C1','分析');
h_node(2)=h_nodes.Add('R1C1',4,'R1C1C1','小波包分解');

h_node(3)=h_nodes.Add('R1C1',4,'R1C1C2','SOM神经网络');
h_node(4)=h_nodes.Add('R1C1',4,'R1C1C3','BP神经网络预测');
h_node(5)=h_nodes.Add('R1',4,'R1C2','分析');
h_node(6)=h_nodes.Add('R1C2',4,'R1C2C1','小波包分解');
h_node(7)=h_nodes.Add('R1C2',4,'R1C2C2','SOM神经网络');
h_node(8)=h_nodes.Add('R1C2',4,'R1C2C3','BP神经网络预测');
h_node=h_nodes.Add;
h_node.Text='分析(二)';
h_node.Key='R2';
h_node.Expanded=true;
h_node(9)=h_nodes.Add('R2',4,'R2C1','分析');
h_node(10)=h_nodes.Add('R2C1',4,'R2C1C1','小波包分解');
h_node(11)=h_nodes.Add('R2C1',4,'R2C1C2','SOM神经网络');
h_node(12)=h_nodes.Add('R2C1',4,'R2C1C3','BP神经网络预测');

h_tv.registerevent({'nodeClick' @nodeclick_event});
h_tv.registerevent({'MouseDown' @MouseDown_event});


function nodeclick_event(varargin)
%ev=varargin{end};
para=varargin{end-1};

t=0:10;
button=getappdata(gcf,'button');
switch button
    case 1
      switch para.Node.text
            case 'SOM神经网络'
                plot(t,t);
            case 'BP神经网络预测'
                plot(t,t.^2)
      end
    case 2
      msgbox('yeah')
end


function MouseDown_event(varargin)

button=varargin{7}.Button;

switch button
    case 1
      setappdata(gcf,'button',1);
    case 2
      setappdata(gcf,'button',2);
end




qibbxxt 发表于 2013-1-25 15:08:03

我在官方网站上面看了看,应该有个uitree的函数,和uitreenode的函数是可以实现树形结构

cwit 发表于 2013-2-17 17:00:47

还有一个办法,就是检测鼠标事件,figure的SelectionType属性,判断是左键还是右键。

uitree的功能确实比较强,有这些属性:
                           Class:
                      DndEnabled: 0
               FigureComponent:
                           Model:
      MultipleSelectionEnabled: 0
                        Position:
                            Root:
                      ScrollPane:
                   SelectedNodes: ]
                            Tree:
                           Units: 'pixels'
                         Visible: 1
             NodeDroppedCallback: []
         NodeDroppedCallbackData: []
          NodeWillExpandCallback: []
      NodeWillExpandCallbackData: []
            NodeExpandedCallback: []
      NodeExpandedCallbackData: []
      NodeWillCollapseCallback: []
    NodeWillCollapseCallbackData: []
         NodeCollapsedCallback: []
       NodeCollapsedCallbackData: []
            NodeSelectedCallback: []
      NodeSelectedCallbackData: []

没有看到右键菜单怎么设置?

cwit 发表于 2013-2-17 18:08:32

给大家看一个我们做的目录树的效果,供参考。
页: [1]
查看完整版本: 关于treeview控件的一个简单方法判断鼠标左右键