Пиши пожалуйста названия своими именами, ну или как минимум “переводя” на русский “произноси” правильно: «Айтем» , хотя по русский это «Пункт».Как можно убрать CheckBox у итемов
ПоправилПиши пожалуйста названия своими именами...
ДаЭто GUI от AutoIt?
Подождем еще ответовмне кажется убрать один пункт не получится
Всёравно он уж больно глаза мозолитлучше его сделать недоступным для нажатия
Ответ #2: можно попробовать это сделать через TristateTreeView, в качестве отключённой галочки нарисовать там пустой (белый) квадрат, ну или продолжительную линию.Подождем еще ответов
продолжительную линию
Линия отпадает, найден вариант получше (галочки вовсе не будет, т.е без следа ):Приведи пример
; ----------------------------------------------------------------------------
;
; Script: Tristate TreeView
; Version: 0.3
; AutoIt Version: 3.2.0.X
; Author: Holger Kotsch, Mod. by G.Sandler a.k.a CreatoR
;
; Script Function:
; Demonstrates a tristate treeview control -> just more like a fifthstate treeview ;)
;
; 6 item checkbox! states are usable:
; (can only used with TreeView with TVS_CHECKBOXES-style)
; - $GUI_NOCHECKBOX
; - $GUI_CHECKED
; - $GUI_UNCHECKED
; - $GUI_INDETERMINATE
; - $GUI_DISABLE + $GUI_CHECKED
; - $GUI_DISABLE + $GUI_UNCHECKED
;
; ----------------------------------------------------------------------------
#include <ComboConstants.au3>
#include "TristateTreeViewLib.au3"
Global $sStateIconFile = @ScriptDir & "\modern.bmp"
;Global $sStateIconFile = @ScriptDir & "\colorful.bmp"
;Global $sStateIconFile = @ScriptDir & "\simple.bmp"
GUICreate("Tristate Treeview", 400, 300)
$nTV = GUICtrlCreateTreeView(150, 50, 200, 200, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
$nProgs_Item = GUICtrlCreateTreeViewItem("Programs", $nTV)
_TTV_CtrlSetItemState($nTV, $nProgs_Item, $GUI_NOCHECKBOX)
$nItem1 = GUICtrlCreateTreeViewItem("Notepad", $nProgs_Item)
$nItem2 = GUICtrlCreateTreeViewItem("Calc", $nProgs_Item)
_TTV_LoadStateImage($nTV, $sStateIconFile)
$nBtn = GUICtrlCreateButton("Test", 10, 200, 70, 20)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $nBtn
Msgbox(0, "Info ABC-item", "State:" & _TTV_CtrlGetItemState($nTV, $nItem1))
EndSwitch
WEnd
Упс, это я забыл про файл изображения. Хотя сейчас покапаю, видимо можно обойтись без библиотеки...Убрал строку
#include <GUIConstantsEx.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
GUICreate("_GUICtrlTreeView_HideCheckBox", 400, 300)
$nTV = GUICtrlCreateTreeView(150, 50, 200, 200, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
$nProgs_Item = GUICtrlCreateTreeViewItem("Programs", $nTV)
_GUICtrlTreeView_HideCheckBox($nTV, $nProgs_Item)
$nItem1 = GUICtrlCreateTreeViewItem("Notepad", $nProgs_Item)
$nItem2 = GUICtrlCreateTreeViewItem("Calc", $nProgs_Item)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Func _GUICtrlTreeView_HideCheckBox($hTV, $nID)
Local $hWnd = GUICtrlGetHandle($hTV)
If $hWnd = 0 Then $hWnd = $hTV
Local $hItem = GUICtrlGetHandle($nID)
If $hItem = 0 Then $hItem = $nID
Local $tvItem = DllStructCreate("uint;dword;uint;uint;ptr;int;int;int;int;int;int")
DllStructSetData($tvItem, 1, $TVIF_STATE)
DllStructSetData($tvItem, 2, $hItem)
DllStructSetData($tvItem, 3, 0)
DllStructSetData($tvItem, 4, $TVIS_STATEIMAGEMASK)
$nResult = DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, "int", $TVM_SETITEMA, "int", 0, "int", DllStructGetPtr($tvItem))
EndFunc
Всё оказалось намного проще