【已解决】如何实现TreeView项目单选?
本帖最后由 277203359 于 2023-9-20 13:15 编辑#include <GuiTreeView.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $sTest
Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)
$hGUI = GUICreate("Treeview", 400, 300)
$Treeview = GUICtrlCreateTreeView(2, 2, 180, 294, $iStyle, $WS_EX_CLIENTEDGE)
$Fonts1 = GUICtrlCreateTreeViewItem("项目1", $Treeview)
GUICtrlCreateTreeViewItem("项目1-1", $Fonts1)
GUICtrlCreateTreeViewItem("项目1-2", $Fonts1)
GUICtrlCreateTreeViewItem("项目1-3", $Fonts1)
GUICtrlSetState($Fonts1, $GUI_EXPAND)
$Fonts2 = GUICtrlCreateTreeViewItem("项目2", $Treeview)
GUICtrlCreateTreeViewItem("项目2-1", $Fonts2)
GUICtrlCreateTreeViewItem("项目2-2", $Fonts2)
GUICtrlCreateTreeViewItem("项目2-3", $Fonts2)
GUICtrlSetState($Fonts2, $GUI_EXPAND)
$Button1 = GUICtrlCreateButton("获取", 264, 96, 75, 25, $WS_GROUP)
GUISetState()
While 1
Switch GUIGetMsg()
Case - 3
Exit
Case $Button1
$sTest = ''
For $i = 4 To 11
If BitAND(GUICtrlRead($i), $GUI_CHECKED) Then $sTest &= _GUICtrlTreeView_GetText($Treeview, $i) & @CRLF
Next
MsgBox(0, '被选项目文本', $sTest)
EndSwitch
WEnd
277203359 发表于 2023-9-20 09:07
开始也是使用清除的方式考虑的,但是不知道怎么Case复选框打钩
另外,TreeView可以用Radio吗 ...
1.添加TreeViewItem时用for to定义每一个数据的变量,判断的时候再用item to
2.整个改成Radio
3.用ListVeiw,这个也是单选的 点击时先清除整组的选中再选这个???
另外单选用Radio是不是更好一些??? 邪恶海盗 发表于 2023-9-20 08:02
点击时先清除整组的选中再选这个???
另外单选用Radio是不是更好一些???
开始也是使用清除的方式考虑的,但是不知道怎么Case复选框打钩:face (13):
另外,TreeView可以用Radio吗?可以也行,希望赐教。 邪恶海盗 发表于 2023-9-20 09:58
1.添加TreeViewItem时用for to定义每一个数据的变量,判断的时候再用item to
2.整个改成Radio
3. ...
感谢指教,但是我还是用了最笨的方法解决。
#include <GUIConstantsEx.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 387, 437, 845, 387)
Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)
$TreeView1 = GUICtrlCreateTreeView(0, 32, 377, 393,$iStyle)
$TreeView1_1=GUICtrlCreateTreeViewItem("项目",$TreeView1)
$TreeView1_1_1=GUICtrlCreateTreeViewItem("项目1",$TreeView1_1)
$TreeView1_1_2=GUICtrlCreateTreeViewItem("项目2",$TreeView1_1)
$TreeView1_1_3=GUICtrlCreateTreeViewItem("项目3",$TreeView1_1)
$TreeView1_2=GUICtrlCreateTreeViewItem("项目",$TreeView1)
$TreeView1_2_1=GUICtrlCreateTreeViewItem("项目1",$TreeView1_2)
$TreeView1_2_2=GUICtrlCreateTreeViewItem("项目2",$TreeView1_2)
$TreeView1_2_3=GUICtrlCreateTreeViewItem("项目3",$TreeView1_2)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $TreeView1_1_1
GUICtrlSetState($TreeView1_1_1, $GUI_CHECKED)
GUICtrlSetState($TreeView1_1_2, $GUI_UNCHECKED)
GUICtrlSetState($TreeView1_1_3, $GUI_UNCHECKED)
Case $TreeView1_1_2
GUICtrlSetState($TreeView1_1_1, $GUI_UNCHECKED)
GUICtrlSetState($TreeView1_1_2, $GUI_CHECKED)
GUICtrlSetState($TreeView1_1_3, $GUI_UNCHECKED)
Case $TreeView1_1_3
GUICtrlSetState($TreeView1_1_1, $GUI_UNCHECKED)
GUICtrlSetState($TreeView1_1_2, $GUI_UNCHECKED)
GUICtrlSetState($TreeView1_1_3, $GUI_CHECKED)
EndSwitch
WEnd 277203359 发表于 2023-9-20 13:13
感谢指教,但是我还是用了最笨的方法解决。
一会afan看到了会喷的,不过我觉得能正常运行就行...:face (1): 邪恶海盗 发表于 2023-9-20 14:43
一会afan看到了会喷的,不过我觉得能正常运行就行...
LZ 都解决了,说明够用了,不就欧了~ afan 发表于 2023-9-20 16:03
LZ 都解决了,说明够用了,不就欧了~
你给来个高效的呗,展现一个优化80%代码的实力让我们学习下...:face (23): 邪恶海盗 发表于 2023-9-20 16:25
你给来个高效的呗,展现一个优化80%代码的实力让我们学习下...
如果只有这几条项目,那没什么优化的。如果项目有几千几万那优化代码及效率90%都没问题。
比如一个方案:点击后勾选点击项并记录该项,下次点击时先取消该项勾选即可。 afan 发表于 2023-9-20 18:51
如果只有这几条项目,那没什么优化的。如果项目有几千几万那优化代码及效率90%都没问题。
比如一个方案 ...
有道理啊...
============
页:
[1]