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