梦幻诛仙手游21套 7月21日,在线等!!!!!!!!!!!!!

每周点击量文章排行
新网游资讯var sogou_ad_id=731545;
var sogou_ad_height=90;
var sogou_ad_width=980;高手帮忙啊,问一个关于treeview的简单问题!!!!!!!!!!!!!!!!!!!!!!!!!!在线等待!!
高手帮忙啊,问一个关于treeview的简单问题!!!!!!!!!!!!!!!!!!!!!!!!!!在线等待!!
发布时间: 23:37:11
编辑:www.fx114.net
本篇文章主要介绍了"高手帮忙啊,问一个关于treeview的简单问题!!!!!!!!!!!!!!!!!!!!!!!!!!在线等待!!
0",主要涉及到高手帮忙啊,问一个关于treeview的简单问题!!!!!!!!!!!!!!!!!!!!!!!!!!在线等待!!
0方面的内容,对于高手帮忙啊,问一个关于treeview的简单问题!!!!!!!!!!!!!!!!!!!!!!!!!!在线等待!!
0感兴趣的同学可以参考一下。
表的字段为
ID&&&&&&NAME&&&&&&&&FULLPATH
**************************
001&&&&&&海运出口一&&&HYCK.CK1
002&&&&&&第一组&&&&&&HYCK.CK1.CK11
003&&&&&&第二组&&&&&&HYCK.CK1.CK12
004&&&&&&海运出口二&&HYCK.CK2
005&&&&&&财务部&&&&&&CW
006&&&&&&财务一部&&&&CW.TR
007&&&&&&海运出口部&&HYCK
008&&&&&&电脑部&&&&&&IT
*************************
在窗体OPEN的时候,我想让树以下面的形式展开
*************************************
&&&&财务一部
-海运出口部
&&&&-海运出口一
&&&&&&&&第一组
&&&&&&&&第二组
&&&&海运出口二
************************************
树的层数是不固定的,好象应该用循环递归,哪位高手帮小弟写一下代码好吗,谢谢!!!!!!!!!!!树的层数是不固定的,所以你缺少一个层次列,或者用编码表达层次。上面所列举的数据只是一部分,那些部门是在另一个窗口里添加的,数据表已经固定了,不可能再加一个字段,高手们帮忙啊upup可以根据字段&“FULLPATH”字段来建树.用递归循环做.
先建个DATASTORE,然后从DATASTORE里提取数据,利用字符串函数,寻找到第一层,不包含“.“的字段,然后递归调用,寻找第二层的,以此类推,应该可以建出来。例如
建立一个窗口函数&&&tree_additem()//参数可以设置,或不可设置,根据具体的情况而定
datastore&datatree
datatree&=&create&datatree
datatree.dataobject&=&'数据窗口名'
datatree.settransobject(sqlca)
datatree.retrieve
long&ll_count
for&ll_count&=&1&to&datatree.rowcount()
&&&中间过程简单,自己可以搞定的
post&tree_additem()谢谢楼上大哥指点,大概思路我知道的,但代码怎么写啊,大哥,你可不可以帮我写一下啊??????upup表的字段为
ID&&&&&&LEVELNAME&&&&&&&&FULLPATH
**************************
001&&&&&&海运出口一&&&HYCK.CK1
002&&&&&&第一组&&&&&&HYCK.CK1.CK11
003&&&&&&第二组&&&&&&HYCK.CK1.CK12
004&&&&&&海运出口二&&HYCK.CK2
005&&&&&&财务部&&&&&&CW
006&&&&&&财务一部&&&&CW.TR
007&&&&&&海运出口部&&HYCK
008&&&&&&电脑部&&&&&&IT
*************************建议分级,个体做法:
表的字段改为
ID&&&&&&LEVEL&&&&NAME&&&&&&&&FULLPATH
**************************
001&&&&&&2&&&&&&&海运出口一&&&HYCK.CK1
002&&&&&&3&&&&&&&第一组&&&&&&HYCK.CK1.CK11
003&&&&&&3&&&&&&&第二组&&&&&&HYCK.CK1.CK12
004&&&&&&2&&&&&&&海运出口二&&HYCK.CK2
005&&&&&&1&&&&&&&财务部&&&&&&CW
006&&&&&&2&&&&&&&财务一部&&&&CW.TR
007&&&&&&1&&&&&&&海运出口部&&HYCK
008&&&&&&1&&&&&&&电脑部&&&&&&IT
*************************不可能改表的结构啊,而且级别也不固定,肯定要用递归遍历的,可我数据结构没学好,不知道怎么写这样的算法啊再加点分我帮你写!好的,分不是问题,可是我这个帐号的分就剩下10分了,等问题搞定后,我多申请几个ID号,然后给你好吗,我现在好着急啊,我绝不食言楼主如果用的是PFC就比较简单了
这棵树用PFC中的u_tvs很好实现可惜我用的不是PFC啊很简单,就是用递归,我写过一个。可惜你给的分太少我说过了,我现在就剩下10分了,等问题一解决,我一定另外再给你分&的upup好!
我开始帮你写了!好的,把代码贴在下面的帖子里,我给了100分
http://community.csdn.net/Expert/topic/.xml?temp=.2543909各位高手,我已经开了100分的帖子啊,http://community.csdn.net/Expert/topic/.xml?temp=.2543909我出了100分怎么没人回答呢?????????????????????我顶!!!!!!!!!!!!数据存储:
select&id,name&,FULLPATH,1&as&level
from&talble
//窗口函数:
uf_get_level()//参数:string&as_code
//返回:long&ll_level
long&ll_level
long&ll_pos
ll_level=1
ll_pos=pos(as_code,'.')
do&while&ll_pos&0
&&&ll_level++
&&&ll_pos=pos(as_code,'.',ll_pos+1)
return&ll_level
//树的数据
lds_1.retrieve()
for&i=1&to&lds_1.rowcount()
ls_code=lds_1.getitemstring(i,'FULLPATH')
lds_1.setitem(i,'level',uf_get_level(ls_code))
uf_draw_tv(0,0,'',lds_1)
//树绘制函数uf_draw_tv(long&al_parenthandle,long&al_parentlevel,string&
as_parentcode,datastroe&ads_1)
treevievitem<v_1
long&ll_newhandle
long&ll_newlevle
string&ls_newcode
//设置图片等属性
ltv_1.xxxxx=xxx
//------------
ll_newlevel=al_parentlevel+1
ads.setfilter("(FULLPATH&like&'"+as_parentcode+"%')&and&leve="+string(ll_newlevel))
ads.filter()
for&i=1&to&ads_1.rowcount()
ltv_1.data=ads.getitemstring(i,'FULLPATH')
ltv_1.label=ads_1.getitemstring(i,'name')
ll_newhandle=tv_1.InsertItemLast&(&al_parenthandle,<v_1&)
uf_draw_tv(ll_newhandle,ll_newlevel,ltv_1.data,ads_1)
//说明:所有函数的所有参数都用值传递[value]//-----------------------------------------------------------------
//&&&&功能:把数据窗口中的记录以节点加入树形中
//&&&&参数:1.al_handle&&&&&要加入的父节点句柄&就是你的FULLPATH
//&&&&&&&&&2.al_parent_id&&要加入的父节点号
//&&返回值:1.true&&&加入完毕正常展开&
//&&&&&&&&&2.false&&数据窗口中没有要加入的节点或加入中出现错误
//-------------------------------------------------------------------
&istr_pass&是一个结构,含有l1,s1,l2,s2,l3,s3等一些属性。
treeviewitem&<vi_new
integer&&&&&&&li_rowcount
integer&&&&&&&li_i
string&&&&&&&&ls_name
datastore&ds_1
ds_1&=&create&datastore&
ds_1.dataobject&=&"数据窗口对象"
ds_1.settransobject(sqlca)
li_rowcount&=&ds_1.retrieve(al_parent_id)
if&li_rowcount&=&0&or&isnull(li_rowcount)&then&return&false
//开始在树形中加入节点
for&li_i&=&1&to&li_rowcount&
ls_name&=&ds_1.object.name[li_i]
ltvi_new.label&=&ls_name
ltvi_new.pictureindex&=&2
&&<vi_new.selectedpictureindex&=&3
&&&istr_pass.pass_l1&=&ds_1.object.id[li_i]
&&&istr_pass.pass_s1&=&ls_name
&&&istr_pass.pass_l2&=&al_parent_id
&&&istr_pass.pass_s2&=&ds_1.object.parent_path[li_i]
&&&istr_pass.pass_s3&=&ds_1.object.remark_memo[li_i]
If&this.event&ue_has_children(istr_pass.pass_l1)&Then
ltvi_new.Children&=&True
ltvi_new.Children&=&False
&&<vi_new.data&=&istr_pass
if&¬(tv_1.insertitemlast(al_handle,ltvi_new)&&&0)&then&return&false
this.setredraw(true)
return&true
//-------------------------------------------
//&名称:ue_has_children
//&功能:&一个区域下面是否还有下属区域
//&参数:&al_area_id&&FULLPATH&,&其格式例为:‘HYCK.CK1%’
//&返回:&boolean&&true&&有下级区域
//&&&&&&&&&&&&&&&&false&没有下级区域
//--------------------------------------------
long&ll_count
ll_count&=&0&
SELECT&count(T_Area.ID)
INTO&:ll_count
WHERE&表.FULLPATH&like&:al_area_id&using&sqlca&&;
if&sqlca.sqlcode&=&0&and&ll_count&&&0&then
&&&commit&using&
return&true
rollback&using&
return&false
end&if如果实在还搞不定,给个E-Mail&,我穿一个例子给你。liujiaqiang(阿毛)
研究研究,跟你学两招
你的ds_1的数据窗口对象怎么定义的,贴出来好不好?SELECT&&ID&&&,&&&NAME&&&&,&&&&FULLPATH&&&&
&&&&&&&&FROM&表&&
&&&&&&&&WHERE&(&FULLPATH&like&:al_parent_id&)TO&&sun1976(关羽观雨)&:您写的不对啊,只能把2条记录检索出来,后面的没有了到楼主开的另外那个贴子找去
在函数里create一个数据存储lds,取传入的数据存储的dataobject,然后rowscopy所有数据,然后过滤lds,用lds画节点不好意思,早两天出差了,昨天才回来
刚刚已写玩,而且经过了测试
你要的话就加我qq:
或E_Mail:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:

参考资料

 

随机推荐