找回密码
 加入
搜索
查看: 11182|回复: 11

[AU3基础] TreeView怎么获取父项id

  [复制链接]
发表于 2014-7-31 11:50:11 | 显示全部楼层 |阅读模式
本帖最后由 qsy666888 于 2014-7-31 12:55 编辑

我看了以前的水木子大侠的示例,但我还是没有弄出来
http://61.153.183.105/thread-44332-1-1.html

我提到的这种跟水木子大侠的示例似同非同,一直没有弄出来,不知道用什么代码去获取这种情况的id。
在此感谢谢大大们对我的耐心的帮助。
  1. #include <GUIConstantsEx.au3>
  2. #include <TreeViewConstants.au3>
  3. #include <WindowsConstants.au3>
  4. Local $ini, $htv, $csname = "class", $hClass = 0
  5. GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
  6. Global $Form1 = GUICreate("获取父项id及文本示例", 216, 358, 525, 139)
  7. Global $htv = GUICtrlCreateTreeView(8, 8, 201, 337, -1, $WS_EX_CLIENTEDGE)
  8. GUISetState(@SW_SHOW)
  9. readinfo("data.ini", $htv)


  10. Do
  11.         Sleep(10)
  12. Until GUIGetMsg() = -3
  13. Func readinfo($ini, $htv, $csname = "class", $hClass = 0)
  14.         If Not $hClass Then $hClass = $htv
  15.         $aSec = IniReadSection($ini, $csname)
  16.         If @error Then Return False
  17.         For $i = 1 To $aSec[0][0]
  18.                 $child = IniReadSection($ini, $aSec[$i][0])
  19.                 If @error Then;频道
  20.                         $hItem = GUICtrlCreateTreeViewItem($aSec[$i][0], $hClass)
  21.                 Else;子类
  22.                         $hClass1 = GUICtrlCreateTreeViewItem($aSec[$i][0], $hClass)
  23.                         readinfo($ini, $hClass, $aSec[$i][0], $hClass1)
  24.                 EndIf;频道或分类
  25.         Next
  26.         Return True
  27. EndFunc   ;==>readinfo
  28. Func WM_NOTIFY($hWndGUI, $MsgID, $WParam, $LParam)
  29.     Local $tagNMHDR, $Event, $hWndFrom, $IDFrom
  30.     ;Dim $bb,$cc
  31.     Local $tagNMHDR = DllStructCreate("int;int;int", $LParam)
  32.         If @error Then Return $GUI_RUNDEFMSG
  33.                 $IDFrom = DllStructGetData($tagNMHDR, 2)
  34.                
  35.                 $Event = DllStructGetData($tagNMHDR, 3)
  36.                 $tagNMHDR = 0
  37.                 Switch $IDFrom
  38.                         Case $htv
  39.                 Switch $Event
  40.                                         Case $TVN_SELCHANGEDW
  41.                                                 $ix = GUICtrlRead($htv)
  42.                         If $ix > 0 Then
  43.                                 $aa =  GUICtrlRead($ix,1)                       
  44.                                 MsgBox(0,'被点击的文本','被点击的文本' & $aa &',父项文本是:  ' & ',父项ID是:  ')                               
  45.                                                 EndIf
  46.                 EndSwitch
  47.             EndSwitch                       
  48.     Return $GUI_RUNDEFMSG
  49. EndFunc  ;==>WM_NOTIFY       

复制代码

本帖子中包含更多资源

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

×
发表于 2014-7-31 13:35:40 | 显示全部楼层
回复 1# qsy666888
  1. #include <GUIConstantsEx.au3>
  2. #include <TreeViewConstants.au3>
  3. #include <WindowsConstants.au3>
  4. #include <StaticConstants.au3>
  5. #include <GUITreeView.au3>

  6. Local $ini, $treeview, $hTreeView
  7. GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
  8. Global $Form1 = GUICreate("获取父项id及文本示例", 216, 358, 525, 139)
  9. Global $treeview = GUICtrlCreateTreeView(8, 8, 201, 337, -1, $WS_EX_CLIENTEDGE)
  10. $hTreeView = GUICtrlGetHandle(-1)
  11. GUISetState(@SW_SHOW)
  12. readinfo("data.ini", $treeview)
  13. Do
  14.         Sleep(10)
  15. Until GUIGetMsg() = -3
  16. Func readinfo($ini, $htv, $csname = "class", $hClass = 0)
  17.         If Not $hClass Then $hClass = $htv
  18.         $aSec = IniReadSection($ini, $csname)
  19.         If @error Then Return False
  20.         For $i = 1 To $aSec[0][0]
  21.                 $child = IniReadSection($ini, $aSec[$i][0])
  22.                 If @error Then;频道
  23.                         $hItem = GUICtrlCreateTreeViewItem($aSec[$i][0], $hClass)
  24.                 Else;子类
  25.                         $hClass1 = GUICtrlCreateTreeViewItem($aSec[$i][0], $hClass)
  26.                         readinfo($ini, $hClass, $aSec[$i][0], $hClass1)
  27.                 EndIf;频道或分类
  28.         Next
  29.         Return True
  30. EndFunc   ;==>readinfo
  31. Func WM_NOTIFY($hWndGUI, $MsgID, $WParam, $LParam)
  32.         Local $tNMHDR, $IDFrom, $code
  33.         Local $iPos_X, $iPos_Y, $uFlags
  34.         $tNMHDR = DllStructCreate($tagNMHDR, $LParam)
  35.         $IDFrom = DllStructGetData($tNMHDR, "IDFrom")
  36.         $code = DllStructGetData($tNMHDR, "Code")
  37.         Switch $code
  38.                 Case $NM_CLICK ; 点击鼠标左键
  39.                         If $IDFrom = $treeview Then ; 点击 TreeView 控件时,获取点击到的控件句柄
  40.                                 $iPos_X = _WinAPI_GetMousePosX(True, $hTreeView)
  41.                                 $iPos_Y = _WinAPI_GetMousePosY(True, $hTreeView)
  42.                                 $uFlags = _GUICtrlTreeView_HitTest($hTreeView, $iPos_X, $iPos_Y)
  43.                                 If BitAND($uFlags, $TVHT_ONITEM) Then
  44.                                         Local $hItem, $hParent, $sText_I, $sText_P = '无父项目'
  45.                                         $hItem = _GUICtrlTreeView_HitTestItem($hTreeView, $iPos_X, $iPos_Y)
  46.                                         MsgBox(0, '', _GUICtrlTreeView_GetTree($hTreeView, $hItem))
  47.                                         $sText_I = _GUICtrlTreeView_GetText($treeview, $hItem)
  48.                                         $hParent = _GUICtrlTreeView_GetParentHandle($hTreeView, $hItem)
  49.                                         If $hParent Then $sText_P = _GUICtrlTreeView_GetText($treeview, $hParent)
  50.                                         MsgBox(0, '父项目:' & $sText_P, '子项目:' & $sText_I)
  51.                                 EndIf

  52.                         EndIf
  53.         EndSwitch
  54.         Return $GUI_RUNDEFMSG
  55. EndFunc   ;==>WM_NOTIFY
复制代码
 楼主| 发表于 2014-7-31 13:40:35 | 显示全部楼层
回复 2# user3000

user3000大侠,父项的 id 能不能获取
发表于 2014-7-31 13:53:26 | 显示全部楼层
回复 3# qsy666888

_GUICtrlTreeView_GetParentParam

有了句柄,还要ID来作什么?

还有,你应该要多花一些时间和耐心去观看帮助的众多示例, 多多测试之!
 楼主| 发表于 2014-7-31 14:05:23 | 显示全部楼层
回复 4# user3000
我想获取它的id来展开指定的父项,我试过好多代码,必须要父项的id才行
 楼主| 发表于 2014-7-31 14:07:40 | 显示全部楼层
回复 4# user3000
我想获取它的id来展开指定的父项,我试过好多代码,必须要父项的id才行
这些疑难杂症,我们这些鼠辈肯定弄不出来
 楼主| 发表于 2014-7-31 14:47:05 | 显示全部楼层
回复 4# user3000

还是没有弄得出来,哎!谢谢你
发表于 2014-7-31 20:20:29 | 显示全部楼层
回复 7# qsy666888

_GUICtrlTreeView_GetParentParam
此函数可以获取到父项目的ID,如果有父项目的吧!
 楼主| 发表于 2014-7-31 20:22:24 | 显示全部楼层
回复 8# user3000
我试过了,不得行
发表于 2014-7-31 20:36:10 | 显示全部楼层
回复 9# qsy666888
你把下面代码加入到2楼代码的51行后面测试.
  1.                                         Local $Id_P = _GUICtrlTreeView_GetParentParam($hTreeView, $hItem)
  2.                                         MsgBox(0, '父项目ID(0为根项目):' & $Id_P, GUICtrlRead($Id_P, 1))
复制代码
发觉很难与你交流;似乎是我在提问?!你还有问题,应该详细描述出来吧,单单回个"不行",算是什么回事呢!
 楼主| 发表于 2014-7-31 21:00:19 | 显示全部楼层
回复 10# user3000
谢谢谢谢,不好意思,心里太着急了
发表于 2014-8-1 18:56:57 | 显示全部楼层
回复 11# qsy666888

别急!这些东西急不来的,。

参考函数:_GUICtrlTreeView_Expand
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2026-9-22 09:02 , Processed in 0.072846 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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