Что нового

Как удалить CheckBox на определенном TreeViewItem

SECTOR

Продвинутый
Сообщения
398
Репутация
58
TreeView создан со стилем $TVS_CHECKBOXES
Вот скрин:



Как можно убрать CheckBox у item'ов: Конверторы и Кодировщики, FTP-Downloads ...
А у SubItem'ов (KillCopy, GetRight ...) оставить.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
SECTOR [?]
Как можно убрать CheckBox у итемов
Пиши пожалуйста названия своими именами, ну или как минимум “переводя” на русский “произноси” правильно: «Айтем» :smile:, хотя по русский это «Пункт».

Это GUI от AutoIt? В любом случае, мне кажется убрать один пункт не получится, лучше его сделать недоступным для нажатия.
 
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
398
Репутация
58
CreatoR

Пиши пожалуйста названия своими именами...
Поправил :smile:

Да

мне кажется убрать один пункт не получится
Подождем еще ответов :smile:

лучше его сделать недоступным для нажатия
Всёравно он уж больно глаза мозолит :smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
SECTOR [?]
Подождем еще ответов
Ответ #2: можно попробовать это сделать через TristateTreeView, в качестве отключённой галочки нарисовать там пустой (белый) квадрат, ну или продолжительную линию.

Вот ак:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
SECTOR [?]
Линия отпадает, найден вариант получше (галочки вовсе не будет, т.е без следа :smile:):

Код:
; ----------------------------------------------------------------------------
;
; 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


«TristateTreeViewLib.au3» прикрепил к сообщению.
 
Автор
SECTOR

SECTOR

Продвинутый
Сообщения
398
Репутация
58
Линия отпадает, найден вариант получше
Это шутка такая? :laugh:



Ошибка возникает при клике на CheckBox у SubItem'ов

Убрал строку:
Код:
_TTV_LoadStateImage($nTV, $sStateIconFile)

И всё заработало! Спасибо за помощь!
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 471
Репутация
2 401
SECTOR [?]
Упс, это я забыл про файл изображения. Хотя сейчас покапаю, видимо можно обойтись без библиотеки...


Добавлено:
Сообщение автоматически объединено:

:laugh:
Всё оказалось намного проще чем я думал:

Код:
#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
 

degid

Новичок
Сообщения
15
Репутация
1
как удалить все Item'мы у TreeView?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
degid
Смотрите в справке функции _GUICtrlTreeView_DeleteAll(), _GUICtrlTreeView_Delete(), _GUICtrlTreeView_DeleteChildren().
 

degid

Новичок
Сообщения
15
Репутация
1
madmasles
спасибо, понял
юзал русский хелп для v3.2.5.4 (beta). Там такого нету :-[
 
Верх