找回密码
 注册
Simdroid-非首页
查看: 66|回复: 3

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

[复制链接]
发表于 2013-1-25 13:38:09 | 显示全部楼层 |阅读模式 来自 山东烟台
关于treeview用法,google一下是可以可以找到一些应用的,但关于左右键判断却好像没有介绍,自己试了一下,利用MouseDown和nodeclick两个方法来实现,MouseDown先获取左右键“值”,然后利用setappdata存储该值,在nodeclick方法里再用getappdata获取此致,并且判断点击的是哪一个node。
  1. function treeviewdemo()
  2. hf=figure('NumberTitle','off','name','TreeView演示','Position',[300 300 500 300],'menubar','none');
  3. hfpos=get(hf,'position');
  4. pos=[0 hfpos(2)*0.02 hfpos(3)*0.3 hfpos(4)*0.98];
  5. axes('parent',hf,'position',[0.4 0.1,0.6 0.8]);
  6. h_tv=actxcontrol('MSComctlLib.TreeCtrl.2',pos,hf);
  7. h_nodes=h_tv.Nodes;
  8. h_node=h_nodes.Add;
  9. h_node.Text='分析(一)';
  10. h_node.Key='R1';
  11. h_node.Expanded=true;
  12. h_node(1)=h_nodes.Add('R1',4,'R1C1','分析');
  13. h_node(2)=h_nodes.Add('R1C1',4,'R1C1C1','小波包分解');

  14. h_node(3)=h_nodes.Add('R1C1',4,'R1C1C2','SOM神经网络');
  15. h_node(4)=h_nodes.Add('R1C1',4,'R1C1C3','BP神经网络预测');
  16. h_node(5)=h_nodes.Add('R1',4,'R1C2','分析');
  17. h_node(6)=h_nodes.Add('R1C2',4,'R1C2C1','小波包分解');
  18. h_node(7)=h_nodes.Add('R1C2',4,'R1C2C2','SOM神经网络');
  19. h_node(8)=h_nodes.Add('R1C2',4,'R1C2C3','BP神经网络预测');
  20. h_node=h_nodes.Add;
  21. h_node.Text='分析(二)';
  22. h_node.Key='R2';
  23. h_node.Expanded=true;
  24. h_node(9)=h_nodes.Add('R2',4,'R2C1','分析');
  25. h_node(10)=h_nodes.Add('R2C1',4,'R2C1C1','小波包分解');
  26. h_node(11)=h_nodes.Add('R2C1',4,'R2C1C2','SOM神经网络');
  27. h_node(12)=h_nodes.Add('R2C1',4,'R2C1C3','BP神经网络预测');

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


  30. function nodeclick_event(varargin)
  31. %ev=varargin{end};
  32. para=varargin{end-1};

  33. t=0:10;
  34. button=getappdata(gcf,'button');
  35. switch button
  36.     case 1
  37.         switch para.Node.text
  38.             case 'SOM神经网络'
  39.                 plot(t,t);
  40.             case 'BP神经网络预测'
  41.                 plot(t,t.^2)
  42.         end
  43.     case 2
  44.         msgbox('yeah')
  45. end


  46. function MouseDown_event(varargin)

  47. button=varargin{7}.Button;

  48. switch button
  49.     case 1
  50.         setappdata(gcf,'button',1);
  51.     case 2
  52.         setappdata(gcf,'button',2);
  53. end


复制代码


评分

1

查看全部评分

发表于 2013-1-25 15:08:03 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
我在官方网站上面看了看,应该有个uitree的函数,和uitreenode的函数是可以实现树形结构
回复 不支持

使用道具 举报

发表于 2013-2-17 17:00:47 | 显示全部楼层 来自 上海
还有一个办法,就是检测鼠标事件,figure的SelectionType属性,判断是左键还是右键。

uitree的功能确实比较强,有这些属性:
                           Class: [1x1 java.lang.Class]
                      DndEnabled: 0
                 FigureComponent: [1x1 javax.swing.JScrollPane]
                           Model: [1x1 javax.swing.tree.DefaultTreeModel]
        MultipleSelectionEnabled: 0
                        Position: [4x1 double]
                            Root: [1x1 com.mathworks.hg.peer.UITreeNode]
                      ScrollPane: [1x1 javax.swing.JScrollPane]
                   SelectedNodes: [1x1 com.mathworks.hg.peer.UITreeNode[]]
                            Tree: [1x1 com.mathworks.mwswing.MJTree]
                           Units: 'pixels'
                         Visible: 1
             NodeDroppedCallback: []
         NodeDroppedCallbackData: []
          NodeWillExpandCallback: []
      NodeWillExpandCallbackData: []
            NodeExpandedCallback: []
        NodeExpandedCallbackData: []
        NodeWillCollapseCallback: []
    NodeWillCollapseCallbackData: []
           NodeCollapsedCallback: []
       NodeCollapsedCallbackData: []
            NodeSelectedCallback: []
        NodeSelectedCallbackData: []

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

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2013-2-17 18:08:32 | 显示全部楼层 来自 上海
给大家看一个我们做的目录树的效果,供参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-30 10:42 , Processed in 0.030736 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表