TVX

作者: majkinetor 最近更新时间: 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)

关于函数的参数和返回值, 请参阅其源码或 此文档.

备注

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.

关于此函数(集)的更新细节和注意事项, 请参见 AutoHotkey 论坛: http://www.autohotkey.com/forum/viewtopic.php?t=19021

许可

不存在

示例

#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