回 帖 发 新 帖 刷新版面

主题:如何把树形控件内的东东,弄到grid中??

如何把树形控件内的东东,弄到grid中??

回复列表 (共10个回复)

沙发

就是我建立树形控件以后,鼠标选择树形控件的东西以后,怎么添加到grid中,
我想应该是控件内click事件,请教click中的代码应该怎么写?

板凳

首先你要掌握如何取得树型控件中各对象及属性的引用.
thisform.tree1.nodes(index).text&&这是节点文本
thisform.tree1.selectitem.text&&这是当前选定节点的文本
thisform.tree1.selectitem.key&&选定节点的键值.
等等.....

3 楼

[quote]首先你要掌握如何取得树型控件中各对象及属性的引用.
thisform.tree1.nodes(index).text&&这是指定索引节点文本
thisform.tree1.selectitem.text&&这是当前选定节点的文本
thisform.tree1.selectitem.key&&选定节点的键值.
等等.....

[/quote]

4 楼

[quote]首先你要掌握如何取得树型控件中各对象及属性的引用.
thisform.tree1.nodes(index).text&&这是节点文本
thisform.tree1.selectitem.text&&这是当前选定节点的文本
thisform.tree1.selectitem.key&&选定节点的键值.
等等.....

[/quote]

我按照你的方法做了一遍,系统提示说找不到tree1,我是在nodeclick中写的代码,请帮我看看哪里出错了!
This.LineStyle= 1  && tvwRootLines 
This.Style= 7  && tvwTreelinesPlusMinusPictureText 
This.Nodes.Add(,,"Sport","体育")
This.Nodes.Add("Sport",4,"Ball","球类")
This.Nodes.Add("Ball",4,,"足球")
This.Nodes.Add("Ball",4,,"篮球")
This.Nodes.Add("Ball",4,,"排球")
This.Nodes.Add("Sport",4,"Swim","游泳")
This.Nodes.Add("Swim",4,,"蛙泳")
This.Nodes.Add("Swim",4,,"自由泳")
This.Nodes.Add(,,"Army","军事")
This.Nodes.Add("Army",4,"Kinds","军种")
This.Nodes.Add("Kinds",4,,"海军")
This.Nodes.Add("Kinds",4,,"陆军")
This.Nodes.Add("Kinds",4,,"空军")
This.Nodes.Add("Army",4,"Weapon","武器")
This.Nodes.Add("Weapon",4,,"枪")
This.Nodes.Add("Weapon",4,,"大炮")

上面是init中的代码
下面是nodeclick中的代码
WITH thisform
DO case
    CASE thisform.tree1.selectitem.text="篮球"
     append blank 
     replace 序号 with "1/1",图号 with "TGS38001-2005",名称 with "Ⅰ10;L=",数值 with "s"
ENDCASE
endwith     

5 楼

你的树型控件引用对象名是什么?是不是"TREE1"名称?如果不是,肯定出现"系统提示说找不到tree1".
下面是我的一个程序中树型控件INIT方法的代码:

LOCAL cDAcaseAlias
cDAcaseAlias="树型记录表"
***此表字段有:父节点键值 C,键值 C,文本 C,图标值 I,单击命令 C,子节点数 I
***关键是要用到,前面四个字段,
THIS.Nodes.Clear
This.Indentation=26
This.HotTracking=.T.
THIS.PathSeparator="_"
This.HideSelection=.F.
This.LabelEdit= 1
THIS.ImageList=THISFORM.LISTIMAGE1&&这是树型控件显示图标的图标源!!!!
This.lineStyle=1
This.Nodes.Add(,,"N_1","分类表",1)
***在此我有一段对树型记录处理的代码,没必要打上来.
GOTO TOP IN (cDAcaseAlias)
DO WHILE RECCOUNT(cDAcaseAlias)>=RECNO(cDAcaseAlias)    
    This.Nodes.Add(ALLTRIM(UPPER(&cDAcaseAlias..父节点键值)),4,ALLTRIM(UPPER(&cDAcaseAlias..键值)),ALLTRIM(UPPER(&cDAcaseAlias..文本)),&cDAcaseAlias..图标值)
    IF  RECCOUNT(cDAcaseAlias)>RECNO(cDAcaseAlias) 
        SKIP 1 IN (cDAcaseAlias)
    ELSE
        EXIT
    ENDIF
ENDDO
This.Nodes(1).Expanded=.T.

6 楼

我得树形控件是微软得第3方控件,不知道你用得是什么?
还有在哪里设置控件得引用名。。。


树形表得设计我基本成功了,我要的目的是如何把控件内子节点的内容做为鼠标事件得判断条件以进行后面得代码,请指教!

7 楼

"引用名"就是指定控件的NAME属性是什么.

但首先你要懂得如何生成树型控件的各节点??

如果你要得到某节点的单击事件就是在树型控件的nodeclick中取得:
*** ActiveX 控件事件 ***
LPARAMETERS node
local cNodeName
cNodeName=node.TEXT
do case
   case cNodeName=="产品管理"&&如果选定节点名为:产品管理 就运行相应程序或代码
        ....
   case cNodeName=="成本设置"
        ....
   case cNodeName=="系统管理"
        ....
   case cNodeName=="车间管理"
        ....
endcase

8 楼

问题基本解决~~非常感谢hw2007name!!
只是不明白
LPARAMETERS node
local cNodeName
这两句是什么意思,是不是定义NodeClick 事件的参数??

9 楼

[quote]问题基本解决~~非常感谢hw2007name!!
只是不明白
LPARAMETERS node
local cNodeName
这两句是什么意思,是不是定义NodeClick 事件的参数??[/quote]
LPARAMETERS node&&这句是控件事件中本来就存在的当前所点击节点引用对象的参数
local cNodeName&&这是我加的一个变量定义.

10 楼

俄罗斯人编的,纯vfp代码,可以在grid中显示树形数据:

[img]http://static8.photo.sina.com.cn/middle/4998a42bx670d7c1df0e7&690[/img]

我来回复

您尚未登录,请登录后再回复。点此登录或注册