treeview控件用后其他表单控件不能激活各自事件

dbLenis
博客专家认证
2009-03-20 08:02:49
treeview控件用后其他表单控件不能激活各自事件,我在VFP9 SP2中,使用TREEVIEW控件后,可以正确使用他,但是点击另一个COMMAND控件来退出,却始终也退不出去
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbLenis 2009-03-20
  • 打赏
  • 举报
回复
我做的这个是工厂的绩效考核评分系统,有一张表包含了类似数据仓库的维度表结果的数据,分为4层,现在需要用一个treeview来展现,treeview的init代码是这样的:
oTreeView=thisform.oleTreeView
nArrRows=ALEN(Nodes,1)
nArrCols=ALEN(Nodes,2)
PUBLIC cParentKey,cNowKey,cPreviousKey


** 创建单个顶层节点
oTreeView.Nodes.Add(,,'ALL','全部对象')
FOR j=1 TO nArrCols
FOR i=1 TO nArrRows
IF i=1 AND j=1 && 创建第一个节点
cParentKey='ALL'
cNowKey=cParentKey+"_"+ALLTRIM(Nodes[i,j])
oTreeView.Nodes.add(oTreeView.Nodes.Item('ALL'),oTvwChild,cNowKey,ALLTRIM(Nodes[i,j]))
cPreviousKey=cNowKey
ELSE
IF i=1 && 创建每个层次的第一个节点
cParentKey='ALL'
FOR g=1 TO j-1
cParentKey=cParentKey+"_"+ALLTRIM(Nodes[i,g])
ENDFOR
cNowKey=cParentKey+"_"+ALLTRIM(Nodes[i,j])
oTreeView.Nodes.add(oTreeView.Nodes.Item(cParentKey),oTvwChild,cNowKey,ALLTRIM(Nodes[i,j]))
cPreviousKey=cNowKey
ELSE && 创建每个层次的非第一个节点
cParentKey='ALL'
FOR g=1 TO j-1
cParentKey=cParentKey+"_"+ALLTRIM(Nodes[i,g])
ENDFOR
cNowKey=cParentKey+"_"+ALLTRIM(Nodes[i,j])
IF cNowKey==cPreviousKey
LOOP
ELSE && 假如是层次中的其他点
cParentKey='ALL'
FOR g=1 TO j-1
cParentKey=cParentKey+"_"+ALLTRIM(Nodes[i,g])
ENDFOR
cNowKey=cParentKey+"_"+ALLTRIM(Nodes[i,j])
oTreeView.Nodes.add(oTreeView.Nodes.Item(cParentKey),oTvwChild,cNowKey,ALLTRIM(Nodes[i,j]))
cPreviousKey=cNowKey
ENDIF
ENDIF
ENDIF
ENDFOR
ENDFOR

这样的代码主要是为了以后可以对多层进行支持,我的TREEVIEW直接就是拖到表单上的,所以一时弄不清楚为什么退不出去了,哎,实在没办法,OOP没有学好哇
dbLenis 2009-03-20
  • 打赏
  • 举报
回复
如果准备分发添加了要求许可键的 ActiveX 控件(例如, Microsoft Treeview 和 Listview 控件)的运行时应用程序, 不要用 AddObject(.....cOLEClass) 方法。代替以创建并保存一个你的 ActiveX 控件子类到一个 VCX 类库中。然后, 在运行时可以用 AddObject (或 NewObject) 方法来添加该包含你的控件的 OleControl 类。

请教这个原理是什么?
根据OOP的思想,ActiveX控件在表单中应用时,是属于表单的一个子对象,子对象没有被释放之前,是否该对象就不能被释放了呢?
dbLenis 2009-03-20
  • 打赏
  • 举报
回复
原来是没有先释放ACTIVEX控件对象引用,加入release oTreeView就可以成功退出了
xy111222333 2009-03-20
  • 打赏
  • 举报
回复
如果准备分发添加了要求许可键的 ActiveX 控件(例如, Microsoft Treeview 和 Listview 控件)的运行时应用程序, 不要用 AddObject(.....cOLEClass) 方法。代替以创建并保存一个你的 ActiveX 控件子类到一个 VCX 类库中。然后, 在运行时可以用 AddObject (或 NewObject) 方法来添加该包含你的控件的 OleControl 类。

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧