Что нового

Дерево файла, динамически изменяющееся

artpluss

Новичок
Сообщения
21
Репутация
0
Здрасьте!
Нужна помощь в написании скрипта, который будет делать следующее.
Есть файл config.ini
Вот его содержимое
Код:
[Check]
  path=v:\0\Check\Check.exe
  dsc=Программа1
  WS12345678901=Иванов Л.С.
  WS12345678902=Петров Н.В.
  WS12345678903=Сидоров А.И. 


[ORL]
  path=v:\0\ORL\setup.exe
  dsc=Программа 2
  WS12345678904=Понаморенко Т.В. 
  WS12345678905=Лихачев Е.В. 


[Per]
  path=v:\0\Per\Per\Per.exe
  dsc=Программа3
  WS12345678906=Козлов.С.


[RBD]
  path=v:\0\RBD\rbd.exe
  dsc=Программа4
  WS12345678907=Понаморенко Л.А.
  WS12345678908=ПетровТ.В. 
  WS12345678909=Сидоров Е.Р.


[Cr]
  path=v:\0\Cr\Cr.exe
  dsc=Программа5
  WS12345678910=Лихачев А.И. 

[SP]
  path=v:\0\Sp\S.exe
  dsc=Программа6
  WS12345678911=Петров А.И. 

[PD]
  path=v:\0\P\P.exe
  dsc=Программа7
  WS12345678912=Потапов А.И. 

[Doc]
  path=v:\0\До\s.exe
  dsc=Программа8
  WS12345678913=Игнатьев А.И. 

[AR]
  path=v:\0\AR\Kon.msi
  dsc=Программа9
  WS12345678914=Путов А.И.

И есть такой код скрипта (извините если он покажется Вам через чур кривым)
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>

;
Dim $sHeadMsg=""
Dim $nRR=100

Opt('MustDeclareVars', 1)

_Main()

Func _Main()
	Local $maintree, $aboutitem, $setupitem, $toolsitem, $CheckXML, $styleitem
	Local $cmditem, $miscitem, $descgroup

    Local $effectsgroup, $effectstree, $effect1, $effect2, $effect3, $effect4, $effect5
	Local $effect6, $effect7, $effect8, $effect9, $effect10, $effect11, $effect12, $effect13, $effect14, $effect15
	Local $effect16, $effect17, $effect18, $effect19, $effect20, $effect21

    Local $effectsgroup, $effectstree, $effect1, $effect2, $effect3, $effect4, $effect5
	
	
	Local $stylesgroup, $stylestree, $style1, $style2, $style3, $style4, $style5
	Local $aboutlabel, $cancelbutton, $msg
	
	Local $des, $var, $menu1, $var1, $spisok1, $tree1, $label, $pingbutton, $installbutton, $button_tree

	$var = IniReadSectionNames("config.ini")

    ; главное окно программы 
	$sHeadMsg="Админ " & @UserName
	GUICreate( $sHeadMsg, 340, 200 +$nRR, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_GROUP, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU))

	; Имена пунктов дерева ...
	$maintree = GUICtrlCreateTreeView(10, 10, 120, 150 +$nRR)
	$aboutitem = GUICtrlCreateTreeViewItem("About", $maintree)
	$setupitem = GUICtrlCreateTreeViewItem("Установка", $maintree)
	
	For $i = 1 To $var[0]
		$menu1 = GUICtrlCreateTreeViewItem($var[$i], $setupitem)
	Next
		
	$toolsitem = GUICtrlCreateTreeViewItem("Tools", $maintree)
	$CheckXML = GUICtrlCreateTreeViewItem("Check", $setupitem)
	$styleitem = GUICtrlCreateTreeViewItem("МСК", $setupitem)
	$cmditem = GUICtrlCreateTreeViewItem("Commandline", $toolsitem)
	$miscitem = GUICtrlCreateTreeViewItem("Misc", $toolsitem)
	
	$descgroup = GUICtrlCreateGroup("Description", 140, 105+$nRR, 180, 55)
	GUICtrlSetState(-1, $GUI_HIDE)
	$des = GUICtrlCreateLabel("Install..." & $label, 160, 130 +$nRR, 145, 15)
	GUICtrlSetState(-1, $GUI_HIDE)
	
	; Имена пунктов списка ...
; ... 1 ... 
	$effectsgroup = GUICtrlCreateGroup($label, 140, 5, 180, 95 +$nRR)
	GUICtrlSetState(-1, $GUI_HIDE)
	$effectstree = GUICtrlCreateTreeView(150, 20, 160, 70 +$nRR, BitOR($TVS_CHECKBOXES, $TVS_DISABLEDRAGDROP), $WS_EX_CLIENTEDGE)
	GUICtrlSetState(-1, $GUI_HIDE)


	For $i = 1 To $var[0]
		If $var[$i] = "Check" Then
		$var1 = IniReadSection($var, $var[$i])
			For $j = 3 To $var1[0][0]
				$spisok1 = GUICtrlCreateTreeViewItem($var1[$j][1], $effectstree)
			Next
		EndIf
	Next

; ... 2 ...

	$stylesgroup = GUICtrlCreateGroup("МСК", 140, 5, 180, 95 +$nRR)
	GUICtrlSetState(-1, $GUI_HIDE)
	$tree1 = GUICtrlCreateTreeView(150, 20, 160, 70 +$nRR, BitOR($TVS_CHECKBOXES, $TVS_DISABLEDRAGDROP), $WS_EX_CLIENTEDGE)
	GUICtrlSetState(-1, $GUI_HIDE)

	For $i = 1 To $var[0]
		$var1 = IniReadSection($var, $var[$i])
			For $j = 3 To $var1[0][0]
				$spisok1 = GUICtrlCreateTreeViewItem($var1[$j][1], $tree1)
			Next
	Next

	; текст при запуске программы
	$aboutlabel = GUICtrlCreateLabel("По  ночам  работают" & @CRLF & "дураки  и  бездельники!", 160, 80, 160, 40)

	; кн "Cancel" ...
	$cancelbutton = GUICtrlCreateButton("Cancel", 35, 170 +$nRR, 70, 20)
	GUISetState()
	
	; кн "Ping" ...
	$pingbutton = GUICtrlCreateButton("Ping", 155, 170 +$nRR, 70, 20)
	GUISetState()
	
	; кн "Install" ...
	$installbutton = GUICtrlCreateButton("Install", 245, 170 +$nRR, 70, 20)
	GUISetState()

	; выбраны элементы ...
;~ 	GUICtrlSetState($effect1, $GUI_CHECKED)
;~ 	GUICtrlSetState($effect3, $GUI_CHECKED)
;~ 	GUICtrlSetState($style4, $GUI_CHECKED)
;~ 	GUICtrlSetState($style5, $GUI_CHECKED)

	While 1
		$msg = GUIGetMsg()
		Select
			Case $msg = -3 Or $msg = -1 Or $msg = $cancelbutton
				ExitLoop
			Case $msg = $aboutitem
				Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
				GUICtrlSetState($aboutlabel, $GUI_SHOW)

 			Case $msg = $CheckXML
				Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
				$label="CheckXML"
				GUICtrlSetState($effectsgroup, $GUI_SHOW)
				GUICtrlSetState($descgroup, $GUI_SHOW)
				GUICtrlSetState($des, $GUI_SHOW)
				GUICtrlSetState($effectstree, $GUI_SHOW)
				GUICtrlSetBkColor($effectstree, 0xD0F0F0)
;~ 				MsgBox(4096, "", $label)
				
			Case $msg = $styleitem
				Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
				GUICtrlSetState($stylesgroup, $GUI_SHOW)
				GUICtrlSetState($descgroup, $GUI_SHOW)
				GUICtrlSetState($des, $GUI_SHOW)
				GUICtrlSetState($tree1, $GUI_SHOW)
				GUICtrlSetColor($tree1, 0xD00000)
				GUICtrlSetBkColor($tree1, 0xD0FFD0)
			
			Case $msg = $button_tree
;~ 				$button_tree=$var[$i]
;~ 				Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
;~ 				GUICtrlSetState($effectsgroup, $GUI_SHOW)
;~ 				GUICtrlSetState($descgroup, $GUI_SHOW)
;~ 				GUICtrlSetState($des, $GUI_SHOW)
;~ 				GUICtrlSetState($effectstree, $GUI_SHOW)
;~ 				GUICtrlSetBkColor($effectstree, 0xD0F0F0)
;~ 				MsgBox(4096, "", $var[1])

			
			
		EndSelect
	WEnd

	GUIDelete()
	Exit
EndFunc   ;==>_Main

Func Hide_all($stylestree, $stylesgroup, $aboutlabel, $effectsgroup, $descgroup, $des, $effectstree, $tree1)
	GUICtrlSetState($stylestree, $GUI_HIDE)
	GUICtrlSetState($stylesgroup, $GUI_HIDE)
	GUICtrlSetState($aboutlabel, $GUI_HIDE)
	GUICtrlSetState($effectstree, $GUI_HIDE)
	GUICtrlSetState($effectsgroup, $GUI_HIDE)
	GUICtrlSetState($descgroup, $GUI_HIDE)
	GUICtrlSetState($des, $GUI_HIDE)
	GUICtrlSetState($effectstree, $GUI_HIDE)
	GUICtrlSetState($tree1, $GUI_HIDE)
EndFunc

Необходимо чтобы при нажатии (желательно двойное нажатие мышки) в дереве на ссылку "ORL" выводился список только тех людей которые относятся (в файле config.ini) только к "ORL". При нажатии на "RBD" выводился список тех людей которые относятся (в файле config.ini) только к "RBD" и так далее, но нужно все это сделать так, чтобы в дальнейшем можно было править только файл config.ini и не трогать код скрипта.

Тот код скрипта который я прикрепил не подходит т.к. при изменении файла config.ini скрипт перестанет работать. Два последних пункта (Chek и МСК) я сделал для примера, чтобы было понятно что мне нужно.

Так же необходимо, чтобы вот здесь
Код:
GUICtrlCreateGroup("МСК", 140, 5, 180, 95 +$nRR)
вместо МСК выводилось название пункта на который мы нажали.

И вот здесь
Код:
$descgroup = GUICtrlCreateGroup("Description", 140, 105+$nRR, 180, 55)
GUICtrlSetState(-1, $GUI_HIDE)
$des = GUICtrlCreateLabel("Install..." & $label, 160, 130 +$nRR, 145, 15)
GUICtrlSetState(-1, $GUI_HIDE)

вместо & $label писалось название из файла config.ini из секции dsc например при нажатии в дереве на "ORL" нужно чтобы написалось Программа 2

В дальнейшем планируется сделать так, чтобы при выборе людей (например я нажал в дереве на МСК скрипт выведет мне людей в правом окне, которые относятся в файле config.ini именно к МСК) и нажатии на кнопку ping производился опрос тех машин которые выведены в правом окне и если ПК доступен ставить галочку в чекбоксе, если есть возможность помогите еще и с этим.


Похожая тема была здесь http://autoit-script.ru/index.php/topic,2588.msg18694.html#msg18694 ,но она мне не помогла

И еще одна просьба сделайте как можно больше комментариев в коде т.к. я очень плохо разбираюсь в autoit
 
Автор
A

artpluss

Новичок
Сообщения
21
Репутация
0
Неужели ни кто не сможет мне помочь? Хотя бы скажите такое вообще возможно? Может быть я не правильно или не понятно задал вопрос?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
artpluss [?]
Неужели ни кто не сможет мне помочь?

Вот черновой вариант вроде делающий твои пожелания.
Разберешься и поправишь свой скрипт.
Я поправлять не стал.
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <GuiTreeView.au3>

 $GUI=GUICreate("", 340, 300)

$hTreeView = GUICtrlCreateTreeView(10, 10, 100, 250, -1, $WS_EX_CLIENTEDGE + $TVS_SINGLEEXPAND)
_GUICtrlTreeView_SetBkColor($hTreeView, 0xC0C0C0)
GUICtrlSetFont($hTreeView, 8.25, 204, 0, "MS Shell Dlg")
_GUICtrlTreeView_SetTextColor($hTreeView, 0x541414)

$aboutitem = GUICtrlCreateTreeViewItem("About", $hTreeView)
$setupitem = GUICtrlCreateTreeViewItem("Установка", $hTreeView)
$toolsitem = GUICtrlCreateTreeViewItem("Tools", $hTreeView)
$CheckXML = GUICtrlCreateTreeViewItem("Check", $setupitem)
$styleitem = GUICtrlCreateTreeViewItem("МСК", $setupitem)
$cmditem = GUICtrlCreateTreeViewItem("Commandline", $toolsitem)
$miscitem = GUICtrlCreateTreeViewItem("Misc", $toolsitem)

$aVar = IniReadSectionNames("config.ini")
For $i=1 To UBound($aVar)-1
	GUICtrlCreateTreeViewItem($aVar[$i],$setupitem)
Next
$descgroup = GUICtrlCreateGroup("Description", 140, 200, 180, 55)
$des = GUICtrlCreateLabel("Install..." , 160, 230, 145, 15,0x1000)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()

While true
	Switch GUIGetMsg()
		Case -3
			ExitLoop
	EndSwitch
Wend

Func CliCkTV($hTV,$hItem)
	$sItemText=_GUICtrlTreeView_GetText($hTV,$hItem) ; Текст кликнутой строки $hTV
	If _GUICtrlTreeView_GetFirstChild($hTV,$hItem)<>0 Then Return ; Если элемент TreeView имеет дочерние эл-ты , то вернуться
	$hParrent=_GUICtrlTreeView_GetParentHandle($hTV,$hItem); Найти Хэндли родительского элемента  
	$sParrentText=_GUICtrlTreeView_GetText($hTV,$hParrent) ; Найти текст родительского элемента
	If $sParrentText <> "Установка" Then Return ; Если  кликнутый элемент не имеет родителя с текстом :"Установка", то      вернуться
            $sText=IniRead("config.ini",$sItemText,"dsc","Defoult"); Текст программы 
	GUICtrlSetData($descgroup,$sItemText)
	GUICtrlSetData($des,"Install : " &$sText )
EndFunc

;==============================================
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
	;==================================================================
	#forceref $hWnd, $iMsg, $iwParam
	Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTreeView
	$hWndTreeView = $hTreeView
	If Not IsHWnd($hTreeView) Then $hWndTreeView = GUICtrlGetHandle($hTreeView)
	
	$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
	$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
	$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
	$iCode = DllStructGetData($tNMHDR, "Code")
	Switch $hWndFrom
		Case $hWndTreeView
			Switch $iCode
				Case $NM_DBLCLK 
					Local $tPOINT = DllStructCreate("int X;int Y")
					DllStructSetData($tPOINT, "X", MouseGetPos(0))
					DllStructSetData($tPOINT, "Y", MouseGetPos(1))
					DllCall("user32.dll", "int", "ScreenToClient", _
							"hwnd", $hWndTreeView, _
							"ptr", DllStructGetPtr($tPOINT))
					Local $iX = DllStructGetData($tPOINT, "X")
					Local $iY = DllStructGetData($tPOINT, "Y")
					$hClickedItemTV = _GUICtrlTreeView_HitTestItem($hWndTreeView, $iX, $iY)
					CliCkTV($hWndTreeView,$hClickedItemTV); =====>

			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 
Автор
A

artpluss

Новичок
Сообщения
21
Репутация
0
Огромное спасибо Вам за помощь. :laugh: :IL_AutoIt_1: :ok:

Помогите пожалста еще немного
Потратил 3 часа и получилось вот так:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <GuiTreeView.au3>

; главное окно программы 
$sHeadMsg="Админ " & @UserName
$iniFile="config.ini"
$GUI=GUICreate( $sHeadMsg, 340, 300, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_GROUP, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU))

$hTreeView = GUICtrlCreateTreeView(10, 10, 100, 250, -1, $WS_EX_CLIENTEDGE + $TVS_SINGLEEXPAND)
_GUICtrlTreeView_SetBkColor($hTreeView, 0xC0C0C0)
GUICtrlSetFont($hTreeView, 8.25, 204, 0, "MS Shell Dlg")
_GUICtrlTreeView_SetTextColor($hTreeView, 0x541414)

$vTreeView = GUICtrlCreateTreeView(150, 20, 160, 170, BitOR($TVS_CHECKBOXES, $TVS_DISABLEDRAGDROP), $WS_EX_CLIENTEDGE + $TVS_SINGLEEXPAND)
_GUICtrlTreeView_SetBkColor($vTreeView, 0xC0C0C0)
GUICtrlSetFont($vTreeView, 8.25, 204, 0, "MS Shell Dlg")
_GUICtrlTreeView_SetTextColor($vTreeView, 0x541414)

$aboutitem = GUICtrlCreateTreeViewItem("About", $hTreeView)
$setupitem = GUICtrlCreateTreeViewItem("Установка", $hTreeView)
$setupitem1= GUICtrlCreateTreeViewItem("", $vTreeView)
$toolsitem = GUICtrlCreateTreeViewItem("Tools", $hTreeView)
$cmditem = GUICtrlCreateTreeViewItem("Commandline", $toolsitem)
$miscitem = GUICtrlCreateTreeViewItem("Misc", $toolsitem)


$aVar = IniReadSectionNames($iniFile)
For $i=1 To UBound($aVar)-1
    GUICtrlCreateTreeViewItem($aVar[$i],$setupitem)
Next

$descgroup = GUICtrlCreateGroup("Description", 140, 200, 180, 55)
$usergroup = GUICtrlCreateGroup("UserList", 140, 5, 180, 195)
$des = GUICtrlCreateLabel("Install..." , 160, 230, 145, 15,0x1000)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()

; кн "Cancel" ...
$cancelbutton = GUICtrlCreateButton("Cancel", 35, 270, 70, 20)
GUISetState()
	
; кн "Ping" ...
$pingbutton = GUICtrlCreateButton("Ping", 155, 270, 70, 20)
GUISetState()
	
; кн "Install" ...
$installbutton = GUICtrlCreateButton("Install", 245, 270, 70, 20)
GUISetState()

While 1
	$msg = GUIGetMsg()
    Select
        Case $msg = -3 Or $msg = -1 Or $msg = $cancelbutton
            ExitLoop
    EndSelect
Wend

Func CliCkTV($hTV,$hItem)
    $sItemText=_GUICtrlTreeView_GetText($hTV,$hItem) ; Текст кликнутой строки $hTV
    If _GUICtrlTreeView_GetFirstChild($hTV,$hItem)<>0 Then Return ; Если элемент TreeView имеет дочерние эл-ты , то вернуться
    $hParrent=_GUICtrlTreeView_GetParentHandle($hTV,$hItem); Найти Хэндли родительского элемента  
    $sParrentText=_GUICtrlTreeView_GetText($hTV,$hParrent) ; Найти текст родительского элемента
    If $sParrentText <> "Установка" Then Return ; Если  кликнутый элемент не имеет родителя с текстом :"Установка", то      вернуться
            $sText=IniRead($iniFile,$sItemText,"dsc","Defoult"); Текст программы 

	$bVar = IniReadSectionNames($sItemText)
;~ 	MsgBox(4096, "", $sItemText)
	$cVar = IniReadSection($iniFile, $sItemText)
	For $j = 3 To UBound($cVar)-1
		GUICtrlCreateTreeViewItem($cVar[$j][1], $vTreeView)
	Next

GUICtrlSetData($usergroup,$sItemText)
;~     GUICtrlSetData($descgroup,$sItemText)
    GUICtrlSetData($des,"Install : " &$sText )
EndFunc

;==============================================
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
;==============================================
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTreeView
    $hWndTreeView = $hTreeView
    If Not IsHWnd($hTreeView) Then $hWndTreeView = GUICtrlGetHandle($hTreeView)
    
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndTreeView
            Switch $iCode
                Case $NM_DBLCLK 
                    Local $tPOINT = DllStructCreate("int X;int Y")
                    DllStructSetData($tPOINT, "X", MouseGetPos(0))
                    DllStructSetData($tPOINT, "Y", MouseGetPos(1))
                    DllCall("user32.dll", "int", "ScreenToClient", _
                            "hwnd", $hWndTreeView, _
                            "ptr", DllStructGetPtr($tPOINT))
                    Local $iX = DllStructGetData($tPOINT, "X")
                    Local $iY = DllStructGetData($tPOINT, "Y")
                    $hClickedItemTV = _GUICtrlTreeView_HitTestItem($hWndTreeView, $iX, $iY)
                    CliCkTV($hWndTreeView,$hClickedItemTV); =====>

            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Работает практически так как надо, но нужно немного доделать.

Если нажимать по очереди все пункты в левом дереве, то правое дерево наполняется людьми (до бесконечности), а мне необходимо, чтобы каждый раз после нажатия на любой пункт в левом дереве - правое дерево очищалось (в том числе снимались все "чекбоксы", если они стоят) и наполнялось только теми людьми которые относятся к нажатому пункту левого дерева.

Еще я не знаю как убрать пустой чекбокс в правом дереве, который появляется там по умолчанию

И дайте пожалуйста описание Func WM_NOTIFY я вообще не понимаю что она делает (если не трудно)
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
artpluss [?]
И дайте пожалуйста описание Func WM_NOTIFY я вообще не понимаю что она делает (если не трудно)

Ответ на самый простой вопрос :
Это основная функция для получения информации из TreeView.
В справке дана полная функцияWM_NOTIFY см. Функцию : _GUICtrlTreeView_Create )
Не буду загромождать излишней информацией (почитаешь в справке)

Здесь я беру только то,что необходимо в твоем скрипте :
Выявить двойной клик по элементу дерева
Код:
Switch $iCode
           Case $NM_DBLCLK; Двойной клик
;;;;;;;;;;;;;;;


Определить Хэндли кликнутого элемента :
Код:
;;;;;;;;;;;;;;;
 $hClickedItemTV = _GUICtrlTreeView_HitTestItem($hWndTreeView, $iX, $iY)
;;;;;;;;;;;;;;


При выявлении двойного клика следует переход на ф-ю :
Код:
CliCkTV($hTV,$hItem);  $hTV - это Handly  $hTreeView
$hItem-  Handly  кликнутой ветки $hTreeView
Далее вроде все расписано
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
artpluss [?]
мне необходимо, чтобы каждый раз после нажатия на любой пункт в левом дереве - правое дерево очищалось

Для этого есть ф-я:
Код:
_GUICtrlTreeView_DeleteAll($vTreeView)
Ставишь ее в ф-ю : CliCkTV
Код:
;;;;;;;;;;;;;;;;;;
_GUICtrlTreeView_DeleteAll($vTreeView)
For $j = 3 To UBound($cVar)-1
     GUICtrlCreateTreeViewItem($cVar[$j][1], $vTreeView)
Next
;;;;;;;;;;;;;;;;;;;;;;;



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

artpluss [?]
Еще я не знаю как убрать пустой чекбокс в правом дереве, который появляется там по умолчанию
Надо убрать в голове скрипта :
Код:
;$setupitem1= GUICtrlCreateTreeViewItem("", $vTreeView)
И изменить :
Код:
Func CliCkTV($hTV,$hItem)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
_GUICtrlTreeView_BeginUpdate($vTreeView)
_GUICtrlTreeView_DeleteAll($vTreeView)
$setupitem1= GUICtrlCreateTreeViewItem("aa", $vTreeView)
	
	For $j = 3 To UBound($cVar)-1
		ConsoleWrite($cVar[$j][1]& @LF)
		GUICtrlCreateTreeViewItem($cVar[$j][1], $setupitem1)
	Next
_GUICtrlTreeView_EndUpdate($vTreeView)
_GUICtrlTreeView_Expand($vTreeView)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




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

Если во 2-м дереве родительская папка не нужна , то можно огород не городить
и оставить только :
Код:
_GUICtrlTreeView_DeleteAll($vTreeView)

,удалив папку из головы скрипта.
 
Автор
A

artpluss

Новичок
Сообщения
21
Репутация
0
ОГРОМНОЕ СПАСИБО все получилось так как я и хотел.
 
Верх