找回密码
 加入
搜索
查看: 12524|回复: 20

[GUI管理] 如何动态创建treeview并捆绑click事件?

 火.. [复制链接]
发表于 2010-5-7 15:30:43 | 显示全部楼层 |阅读模式
各位:

目前项目要求动态创建一个treeview组件,并根据点击不同的item做不同的动作。
为了今后的扩展,我用ini文件保存item之间的逻辑关系,ini结构如下:
[Products]
100 = 男用化妆品
101 = 洗面乳
102 = 醒肤露
103 = 沐浴露
……
200 = 女用化妆品
201 = 眼霜
202 = 口红
……
treeview的结构如下:
-男用化妆品
----洗面乳
----醒肤露
----沐浴露
-女用化妆品
----眼霜
----口红
现在要求点击每个item,会根据不同的item做不同的操作。我把treeview生成好了,但是不知如何为每个item绑定click事件,查了很多资料,还是一头雾水,请大家帮帮忙,指点一下。
谢谢
发表于 2010-5-7 22:30:43 | 显示全部楼层
论坛有许多例子,搜treeview就能找到啊。
也可参考这一贴中我的回复例子呵:http://www.autoitx.com/forum.php ... ;highlight=treeview
发表于 2010-5-8 18:04:54 | 显示全部楼层
本帖最后由 lynfr8 于 2010-5-8 19:07 编辑


以下关键函数楼主是必须好好看看帮助文件认真研究下,代码是死的,思路才是关键:
IniReadSection:读取ini
StringSplit:分割字符串
_GUICtrlTreeView_Add:添加子项
_GUICtrlTreeView_AddChild:添加子项
Func WM_NOTIFY:响应鼠标点击
GUIRegisterMsg:注册事件

本帖子中包含更多资源

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

×

评分

参与人数 2金钱 +35 收起 理由
kodin + 10
afan + 25

查看全部评分

发表于 2010-5-10 07:52:30 | 显示全部楼层
以下关键函数楼主是必须好好看看帮助文件认真研究下,代码是死的,思路才是关键:
IniReadSection:读取 ...
lynfr8 发表于 2010-5-8 18:04

读取配置文件后创建treeview如何让他选择如下图的项目?

本帖子中包含更多资源

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

×
发表于 2010-5-10 09:03:04 | 显示全部楼层
学习,学习!
 楼主| 发表于 2010-5-10 10:40:30 | 显示全部楼层
非常感谢,这几天本本坏了,今天拿了同事mac的来用,所以无法测试。
还是要感谢大家的帮助。
发表于 2010-5-11 03:03:42 | 显示全部楼层
顶起求助!
发表于 2010-5-11 20:50:04 | 显示全部楼层
帮忙顶起,4楼的问题我也想知道。
发表于 2010-5-12 19:31:20 | 显示全部楼层
沉得太快了!再次顶起,希望有高手帮忙解决4楼的问题。
发表于 2010-5-12 19:35:41 | 显示全部楼层
回复 9# qq342252004


    我我我,想知道,帮助文件于你有何意义?
发表于 2010-5-12 20:11:01 | 显示全部楼层
回复  qq342252004


    我我我,想知道,帮助文件于你有何意义?
pusofalse 发表于 2010-5-12 19:35

帮助文件里有吗?
发表于 2010-5-12 20:16:09 | 显示全部楼层
回复 11# qq342252004


    _GUICtrlTreeView_SetChecked("- -|||", "^_^")
发表于 2010-5-12 20:29:12 | 显示全部楼层
回复  qq342252004


    _GUICtrlTreeView_SetChecked("- -|||", "^_^")
pusofalse 发表于 2010-5-12 20:16


父项目可以选中,子项目不会怎么勾选。
发表于 2010-5-12 20:43:51 | 显示全部楼层
本帖最后由 lynfr8 于 2010-5-12 20:45 编辑

其实说真的,尝试自己去找答案会学到更多
我举个例子也是为了举一反三
纯属为了代码的话就失去了自学的意义了
就以_GUICtrlTreeView这个UDF而言
里面包含函数超过100个
例如:
_GUICtrlTreeView_Create
_GUICtrlTreeView_GetChecked
_GUICtrlTreeView_Delete
_GUICtrlTreeView_DeleteAll
_GUICtrlTreeView_Destroy
_GUICtrlTreeView_EditText
_GUICtrlTreeView_EndEdit
_GUICtrlTreeView_GetChecked
_GUICtrlTreeView_GetCount
.....
这些都是常用的函数
并且常常结合数组、文档读写、字符串处理、循环语句、判断语句、运算、GUI控件更新等等几乎所有au3技巧
而且很多情况下都经常会用到这部分UDF
希望更多的新手能下点功夫去静心学习里面的例子
帮助文件例子觉得不够学再到论坛搜索些实际应用例子
如何更快更准确的搜索本论坛资料?!! (传送门)
http://autoitx.com/forum.php?mod=viewthread&tid=5827&highlight
在这里
我不赞成随便一句“去看帮助文件”
但更反对随便一句“帮助文件里有吗?”
这个已经是老话题了,就不啰嗦了
关于回帖的“看帮助文件去”的问题建议(传送门)
http://autoitx.com/forum.php?mod=viewthread&tid=7088&highlight
如果qq342252004这位朋友你自己尝试去写一下
哪怕是花了一些时间还是搞不定
这个时候再把你完成的代码贴上来
相信得到帮助的机会更大,你说是吧?

评分

参与人数 1金钱 +30 收起 理由
afan + 30

查看全部评分

 楼主| 发表于 2010-5-13 15:09:48 | 显示全部楼层
本帖最后由 digibread 于 2010-5-13 15:12 编辑

99.9999%的同意楼上所说的有关自学的方法,看完后还真有点不敢提问题了,呵呵。
斗胆再问个问题吧,但愿高手们不要生气。
这几天研读了lynfr8元老的实例代码,只能说看懂了一半,最关键的部分没有懂,还有一个我在实际运用中遇到的一个问题,特此请教
问题一:
我发现很多有关treeview的官方例子,以及lynfr8元老的例子都在$NM_DBLCLK上做文章。一开始我认为只要简单的将$NM_DBLCLK换成$NM_CLICK就可以了,实时上我错了。
我发现当单击一个item时,首先触发的是$NM_CLICK事件,但这时item的焦点(focus)还是在原先那个item上。
举个楼上lynfr8元老的例子,见下图:

当我点击“醒肤露”时,这时焦点还是在“洗面乳”上,这样的话无论使用_GUICtrlTreeView_GetSelection还是_GUICtrlTreeView_GetSelected或者_GUICtrlTreeView_FindItem都无法获得点击时的那个item(这里指的是“醒肤露”)的句柄,最终的效果是我点击了“醒肤露”弹出框上显示的是“你单击的是 洗面乳”。
不知这如何解决呢?
问题二:
我尝试逐字逐句的分析lynfr8元老的例子,其中有关WM_NOTIFY函数中$WParam, $LParam这两个参数是什么不太清楚。后面的Local $tagNMHDR = DllStructCreate("int;int;int", $LParam)这句话更是难以理解,$tagNMHDR是怎么样的一种结构?其中是不是包含了我上一个问题所说的点击时的item句柄?这些内容可能是属于windows编程的范畴,我想不是一两天能学会的,所以还是想问问

谢谢了,希望能得到帮助。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 03:32 , Processed in 0.090421 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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