SealAlbinos
Продвинутый
- Сообщения
- 154
- Репутация
- 57
данная программа при выделение группы получает текст подгрупп и ее
суть изменить этот текст, но проблема заключается в том что изменяет она именно во группах, а нужно именно в выделенной
p.s таких групп будет еще 12 и для каждой прописывать input не вариант
суть изменить этот текст, но проблема заключается в том что изменяет она именно во группах, а нужно именно в выделенной
p.s таких групп будет еще 12 и для каждой прописывать input не вариант
Код:
#include <GuiConstants.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>
$GUI = GUICreate("TreeView Find Item", 530, 300)
$TreeView = GUICtrlCreateTreeView(15, 20, 200, 230, -1, $WS_EX_CLIENTEDGE+$WS_EX_DLGMODALFRAME)
$Input1 = GUICtrlCreateInput("",300, 10, 100, 20)
$Input2 = GUICtrlCreateInput("",300, 50, 100, 20)
Global $aItems[11]
$item1 = GUICtrlCreateTreeViewItem("Weapon 1", $TreeView)
$subitem1 = GUICtrlCreateTreeViewItem("Old ID: 0", $item1)
$subitem2 = GUICtrlCreateTreeViewItem("New ID: 0", $item1)
$item2 = GUICtrlCreateTreeViewItem("Weapon 2", $TreeView)
$subitem1 = GUICtrlCreateTreeViewItem("Old ID: 1", $item2)
$subitem2 = GUICtrlCreateTreeViewItem("New ID: 1", $item2)
GUICtrlSetImage(-1, "Shell32.dll", -5, 3)
GUICtrlSetImage(-1, "Shell32.dll", -4, 4)
$GetIndex_Button = GUICtrlCreateButton("Get Index", 20, 270, 60, 20)
$GetIndex_Button2 = GUICtrlCreateButton("Get Index", 300, 270, 60, 20)
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $GetIndex_Button2
GUICtrlSetData($subitem1, GuiCtrlRead($Input1))
Case $GetIndex_Button
$iIndex = 0
$hItem = _GUICtrlTreeView_GetFirstItem($TreeView)
For $i = 0 To _GUICtrlTreeView_GetCount($TreeView)-1
If _GUICtrlTreeView_GetSelected($TreeView, $hItem) Then $iIndex = $i+1
$hItem = _GUICtrlTreeView_GetNext($TreeView, $hItem)
Next
;MsgBox(64, "", StringFormat("Selected Text: %s\nSelected Index: %i", GUICtrlRead($TreeView, 1), $iIndex), 0, $GUI)
_GetGroupsChildren()
EndSwitch
WEnd
Func _GetGroupsChildren()
Local $hWnd, $hTV, $hTMP, $sText
$hWnd = WinGetHandle("[CLASS:AutoIt v3 GUI; TITLE:TreeView Find Item]", "")
$hTV = ControlGetHandle($hWnd, "", "[CLASS:SysTreeView32; INSTANCE:1]")
$hTMP = _GUICtrlTreeView_FindItem($hTV, GUICtrlRead($TreeView, 1))
If $hTMP Then
$hTMP = _GUICtrlTreeView_GetFirstChild($hTV, $hTMP)
If $hTMP Then
$sText = _GUICtrlTreeView_GetText($hTV, $hTMP)
While 1
$hTMP = _GUICtrlTreeView_GetNextSibling($hTV, $hTMP)
If $hTMP Then
$sText &= @CRLF & _GUICtrlTreeView_GetText($hTV, $hTMP)
Else
; MsgBox(64, "Done", $sText)
$aRegExpValue = StringRegExp($sText, "Old ID: ((?s).*?)New", 3)
GUICtrlSetData($Input1, $aRegExpValue[0])
$aRegExpValue = StringRegExp($sText, "New ID: ((?s).*?)$", 3)
GUICtrlSetData($Input2, $aRegExpValue[0])
ExitLoop
EndIf
WEnd
EndIf
EndIf
EndFunc