找回密码
 加入
搜索
查看: 2655|回复: 7

[GUI管理] 有没有即时加载子项的树图例子?

    [复制链接]
发表于 2017-6-7 18:47:50 | 显示全部楼层 |阅读模式
本帖最后由 cashiba 于 2017-6-7 18:57 编辑

记得有的编程工具里,树图采取的是即时加载子项的方法,也就是树图不是一次性全部加载,而是先加载主项目,如果某主项目有子项的话,其前面就显示"+"号,只有当点击这个加号的时候,才会读取子项数据并加载显示,这样比较节省资源。
教程里的示例好像都是一次性循环加载完全部项目的(如下)....
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiTreeView.au3>
#include <WindowsConstants.au3>

Example()

Func Example()
    Local $hItem, $hImage, $iImage, $idTreeView
    Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)

    GUICreate("TreeView 添加项目", 400, 300)

    $idTreeView = GUICtrlCreateTreeView(2, 2, 396, 268, $iStyle, $WS_EX_CLIENTEDGE)
    GUISetState(@SW_SHOW)

    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 110)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 131)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 165)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 168)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 137)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 146)
    _GUICtrlTreeView_SetNormalImageList($idTreeView, $hImage)

    _GUICtrlTreeView_BeginUpdate($idTreeView)
    For $x = 1 To Random(2, 10, 1)
        $iImage = Random(0, 5, 1)
        $hItem = _GUICtrlTreeView_Add($idTreeView, 0, StringFormat("[%02d] 新主项", $x), $iImage, $iImage)
        For $y = 1 To Random(2, 10, 1)
            $iImage = Random(0, 5, 1)
            _GUICtrlTreeView_AddChild($idTreeView, $hItem, StringFormat("[%02d] 新子项", $y), $iImage, $iImage)
        Next
    Next
    _GUICtrlTreeView_EndUpdate($idTreeView)

    ; 循环到用户退出.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>Example


谁有即时加载方法生成树图的例子呢?

比喻说,http://www.autoitx.com/thread-55348-1-1.html 这个里面的树图,采用即时加载子项的模式生成树图,该怎么改写呢。感觉需要注册消息,或用_GUICtrlTreeView_ClickItem?来完成
发表于 2017-6-8 11:12:51 | 显示全部楼层
回复 1# cashiba
子项要单个加载的话,不知如何判断?
 楼主| 发表于 2017-6-8 17:32:03 | 显示全部楼层
回复  cashiba
子项要单个加载的话,不知如何判断?
chzj589 发表于 2017-6-8 11:12

_GUICtrlTreeView_SetItemParam
_GUICtrlTreeView_GetItemParam
_GUICtrlTreeView_GetParentParam
之类的,好像可以预先设置子项参数?然后可以根据参数决定是否点击加载子项事件?
对这些函数很陌生,也不懂消息,没有头绪....
发表于 2017-6-9 10:09:07 | 显示全部楼层
回复 3# cashiba
只能一层一层加
第一层

第二层

第三层

本帖子中包含更多资源

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

×
 楼主| 发表于 2017-6-9 18:15:08 | 显示全部楼层
回复  cashiba
只能一层一层加chzj589 发表于 2017-6-9 10:09

你这个效果做的越来越漂亮了.....
 楼主| 发表于 2017-6-9 18:17:59 | 显示全部楼层
理论上感觉应该能实现,点击项目时激活加载事件
发表于 2017-6-9 20:11:28 | 显示全部楼层
回复 6# cashiba
主要是读取的显示原因,
你点击了一条主项目,下面有三个子项目,如要只显示第一个子项目,
那要如何读取显示?
 楼主| 发表于 2017-6-12 20:14:41 | 显示全部楼层
回复  cashiba
主要是读取的显示原因,
你点击了一条主项目,下面有三个子项目,如要只显示第一个子项目 ...
chzj589 发表于 2017-6-9 20:11

目前对树图还是一知半解,这个问题先放下来,等以后有机会再慢慢试了....
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-4 01:49 , Processed in 0.128883 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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