Author: majkinetor Last Modified: 20070508
TVX is extension for TreeView control to support moving, inserting and deleting. Once you call TVX function your tree view will become extended.
TVX( pTree, pSub, pOptions="", pUserData="" )
TVX_CopyItem(destc, destp, source)
TVX_CopyProc(iType, item)
TVX_Move(item, direction)
TVX_OnItemSelect(pItemId)
TVX_OnKeyPress(pKey)
TVX_Walk(root, label, ByRef event_type, ByRef event_param)
For the functions's parameters and return value, please see it's source code or the document.
This is not stdlib conform, because it uses global variables. Aloso it does have some global subroutines. These routines are g labels. The script must be included after global return, the auto-exection section.
There are some modifications around. Look at discussion page 2.
For update's details and remarks related to the functions, please see the AutoHotkey Forum: http://www.autohotkey.com/forum/viewtopic.php?t=19021
nonexistent
#NoEnv
#SingleInstance force
gosub CreateGui
gosub FillTV
TVX("MyTree", "Handler", "HasRoot CollapseOnMove ", "aTooltip") ;!!!!!
Gui, Show, h410 w430
return
Handler:
if A_GuiEvent = S
Tooltip % aTooltip%A_EventInfo%, 0, 0
return
;-------------------------------------------------------------------------------
Save:
TVX_Walk(root, "SaveHandler", Event, Item)
return
SaveHandler:
TV_GetText(txt, Item)
if Event = +
{
FileDelete, _out.txt
FileAppend %txt%`n, _out.txt
line := "|-"
}
if Event = E
StringTrimRight, line, line, 2
if Event in I,M
{
FileAppend %line%%txt%, _out.txt
FileAppend % " " aTooltip%item% "`n", _out.txt
}
if Event = M
line .= "--"
if Event = -
Msgbox, TVX saved in _out.txt
return
;---------------------------------------------------------------------------------
OnButton:
ControlSend, SysTreeView321, {SHIFT down}
ControlSend, SysTreeView321, {%A_GuiControl%}
sleep 50
ControlSend, SysTreeView321, {SHIFT up}
; h := TVX_Move(TV_GetSelection(), A_GuiControl="Up" ? "u" : "d")
; TV_Modify(h, "Select")
return
Modify:
if A_GuiControl=Delete
ControlSend, SysTreeView321, {DELETE}
if A_GuiControl=Insert
ControlSend, SysTreeView321, {INSERT}
if A_GuiControl=Insert Submenu
{
ControlSend, SysTreeView321, {SHIFT down}
ControlSend, SysTreeView321, {INSERT}
Sleep 50
ControlSend, SysTreeView321, {SHIFT up}
}
return
;---------------------------------------------------------------------------------
FillTV:
root := TV_Add("Root", "" , "Expand")
TV_Modify( root, "", A_Index " " root)
loop, 10 {
P := TV_Add("", root)
TV_Modify( P, "", A_Index " " P)
aTooltip%P% := "My Tooltip " A_Index
}
P2 := TV_Add("", P), aTooltip%P2% := "My Tooltip 2.1"
TV_Modify( P2, "", "2.1 " P2)
P2 := TV_Add("", P), aTooltip%P2% := "My Tooltip 2.2"
TV_Modify( P2, "", "2.2 " P2)
P3 := TV_Add("", P2), aTooltip%P3% := "My Tooltip 2.2.1"
TV_Modify( P3, "", "2.2.1 " P3)
P3 := TV_Add("", P2), aTooltip%P3% := "My Tooltip 2.2.2"
TV_Modify( P3, "", "2.2.2 " P3)
P3 := TV_Add("", P2), aTooltip%P3% := "My Tooltip 2.2.3"
TV_Modify( P3, "", "2.2.3 " P3)
return
;---------------------------------------------------------------------------------
CreateGui:
Gui, Add, TreeView, h400 w300 vMyTree
Gui, Add, Button, w100 gOnButton x+10 , Up
Gui, Add, Button, wp gOnButton,Down
Gui, Add, Button, y+20 wp gModify, Insert
Gui, Add, Button, wp gModify, Insert Submenu
Gui, Add, Button, y+20 wp gModify, Delete
Gui, Add, Edit, y+50 wp vMyEdit gEdit,
Gui, Add, Text, yp-30 wp, Change tooltip for selection
Gui, Add, Button, y+150 w100 gSave, Save to file
return
;---------------------------------------------------------------------------------
Edit:
Gui, Submit, Nohide
c := TV_GetSelection()
aTooltip%c% := MyEdit
return
GuiClose:
GuiEscape:
ExitApp
return
; #include TVX.ahk