这个控件应该有一个“Right Click Select”选项,可我的VFP中的TreeView属性卡中不能显示全部的属性(因为是中文Win2000的缘故)。

解决方案 »

  1.   

    liujianjun_ (流星尔), 你能看到TreeView属性卡全部的属性吗?
      

  2.   

    我用tab切换焦点可以知道露一点的属性有一个,完全没有露出的属性还有一个,都不知道名称。以前用英文win95下看过,现在已经忘了。主菜单访问表单中的控件可以用下面的形式:? application->forms(1)->text4->value
    ? application->forms('form1')->text4->value
      

  3.   

    1.在nodeclick里面判断右键就不可以吗?
    2.treeview.node.child.count
      

  4.   

    第二个问题:   用node.CHILDREN>0来判断是否有子节点
     按钮“删除节点”的CLICK代码:
     O = THISFORM.OLETREE
     IF  .NOT. ISNULL(O.SELECTEDITEM)   &&先判断是否选中了节点
         if o.SELECTEDITEM.Children>0   &&再判断其下是否有子节点
            O.NODES.REMOVE(O.SELECTEDITEM.KEY)
         endif
     ENDIF 第一个问题在关注之中
      

  5.   

    上面的代码搞反了,应该是:
     O = THISFORM.OLETREE
     IF  .NOT. ISNULL(O.SELECTEDITEM)   &&先判断是否选中了节点
         if o.SELECTEDITEM.Children>0   &&再判断其下是否有子节点
            =messagebox('有子节点,请先删除子节点',64,'')
            return
         else
            O.NODES.REMOVE(O.SELECTEDITEM.KEY)
         endif
     ENDIF 
      

  6.   

    第一个问题:用treeview1.mousedown事件可加以解决,LPARAMETERS button, shift, x, y
    if button=1
       wait wind 'button=1,用户按了鼠标左键'
    else
       wait wind 'button=2, 用户按了鼠标右键'
       * 调用快捷菜单(执行操作时也要先判断是否选中了节点)
       
       **********下面的代码应在菜单处理**********
       *   IF  .NOT. ISNULL(THISFORM.TREEVIEW1.SELECTEDITEM)   &&先判断是否选中了节点
       *      * 相应的处理语句(增加子节点或删除子节点)
       *   ELSE
       *      =MESSAGEBOX('请先选中一个节点再操作',64,'')
       *   ENDIF
       ******************************************
    endif
      

  7.   

    第一个问题,我也是用mousedown事件来处理的。但发现直接在结点点右键的时候,并没有跳到当前结点上。它触发的实际上是整个treeview控件的该事件。
      

  8.   

    第一个问题: 在mousedown event代码中要首先加上this.click,可保持原来按鼠标左键的功能不变,即:LPARAMETERS button, shift, x, y
    this.click
    showtext=iif(IsNull(this.selecteditem),'没有选择节点',this.selecteditem.text)
    if button=1
       wait wind 'button=1,用户按了鼠标左键:'+showtext nowait
    else
       wait wind 'button=2, 用户按了鼠标右键:'+showtext nowait
       * 调用快捷菜单(执行操作时也要先判断是否选中了节点)
    endif
      

  9.   

    从上面的测试可以看出,确实点右键时,选定的键值(selecteditem)未改变,为了修正为一错误,我用这样的方法:
    1、在表单的Load代码段中加上 publlic m_mousebutton
    2、在treeview控件的mousedown代码段加上 m_mousebutton=button
    3、在treeview控件的Nodeclick代码段中对鼠标按键进行判断,如下代码:
       showtext=iif(IsNull(this.selecteditem),'没有选择节点',this.selecteditem.text)
       if m_mousebutton=1
          wait window '用户按了鼠标左键:'+showtext nowait
       else
          wait window '用户按了鼠标右键:'+showtext nowait
          * 调用快捷菜单(执行操作时也要先判断是否选中了节点)
       endif经测试,这样处理很正常。