有没有即时加载子项的树图例子?
本帖最后由 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?来完成 回复 1# cashiba
子项要单个加载的话,不知如何判断? 回复cashiba
子项要单个加载的话,不知如何判断?
chzj589 发表于 2017-6-8 11:12 http://www.autoitx.com/images/common/back.gif
_GUICtrlTreeView_SetItemParam
_GUICtrlTreeView_GetItemParam
_GUICtrlTreeView_GetParentParam
之类的,好像可以预先设置子项参数?然后可以根据参数决定是否点击加载子项事件?
对这些函数很陌生,也不懂消息,没有头绪.... 回复 3# cashiba
只能一层一层加
第一层
第二层
第三层
回复cashiba
只能一层一层加chzj589 发表于 2017-6-9 10:09 http://www.autoitx.com/images/common/back.gif
你这个效果做的越来越漂亮了.....
{:face (47):} 理论上感觉应该能实现,点击项目时激活加载事件 回复 6# cashiba
主要是读取的显示原因,
你点击了一条主项目,下面有三个子项目,如要只显示第一个子项目,
那要如何读取显示? 回复cashiba
主要是读取的显示原因,
你点击了一条主项目,下面有三个子项目,如要只显示第一个子项目 ...
chzj589 发表于 2017-6-9 20:11 http://www.autoitx.com/images/common/back.gif
目前对树图还是一知半解,这个问题先放下来,等以后有机会再慢慢试了....
{:face (52):}
页:
[1]