Добрый вечер!
Подскажите, можно ли, используя AutoIt, создать объект TreeList/TreeListView?
Подскажите, можно ли, используя AutoIt, создать объект TreeList/TreeListView?
Есть, в нём можно создать практический любой графический элемент, вопрос в том, насколько сложно будет его обрабатывать.в Autoit нет возможности создавать свои объекты?
Можно вот так поизвращаться:ListView мне нужен для того, чтобы я мог показать оригинальный размер изображения, оптимизированный размер и т.д.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>
#include <GUITreeView.au3>
$hGUI = GUICreate("TreeListView Test", 400, 300)
$nTV = GUICtrlCreateTreeView(20, 40, 200, 220, BitOr($GUI_SS_DEFAULT_TREEVIEW, $TVS_HASLINES, $TVS_SINGLEEXPAND))
$nLV = GUICtrlCreateListView("Name|Type|Size", 10, 10, 380, 280, BitOr($GUI_SS_DEFAULT_LISTVIEW, $WS_CLIPSIBLINGS, $LVS_NOSORTHEADER))
_GUICtrlListView_SetColumnWidth($nLV, 0, 210)
_GUICtrlListView_SetColumnWidth($nLV, 1, 80)
_GUICtrlListView_SetColumnWidth($nLV, 2, 80)
GUISetState(@SW_SHOW, $hGUI)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
$anTV_Item = _GUICtrlCreateTreeViewItem("Script.au3", $nTV, "|File|2.3 kb", $nLV)
$anTV_SubItem = _GUICtrlCreateTreeViewItem("My Folder", $anTV_Item[0], "|Folder|2 mb", $nLV)
GUICtrlSetState($anTV_Item[0], $GUI_EXPAND)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _GUICtrlCreateTreeViewItem($sTVText, $nTVCtrl, $sLVText, $nLVCtrl)
Local $anLV_TV_Item[2], $aSplit, $iItem, $sLV_IDs
$anLV_TV_Item[0] = GUICtrlCreateTreeViewItem($sTVText, $nTVCtrl)
$aSplit = StringSplit($sLVText, '|')
$iItem = _GUICtrlListView_AddItem($nLVCtrl, "")
For $i = 1 To $aSplit[0]
$sLV_IDs &= _GUICtrlListView_AddSubItem($nLVCtrl, $iItem, $aSplit[$i], $i - 1) & '|'
Next
$anLV_TV_Item[1] = StringRegExpReplace($sLV_IDs, '\|+$', '')
Return $anLV_TV_Item
EndFunc
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $hLV_Header, $tInfo
$hWndListView = $nLV
If Not IsHWnd($nLV) Then
$hWndListView = GUICtrlGetHandle($nLV)
EndIf
Local $hLV_Header = GUICtrlSendMsg($nLV, $LVM_GETHEADER, 0, 0)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hLV_Header
Switch $iCode
Case $HDN_ITEMCHANGING, $HDN_ITEMCHANGINGW
Return 1
EndSwitch
Case $hWndListView
Switch $iCode
Case $LVN_ITEMCHANGING, $LVN_BEGINDRAG, $LVN_MARQUEEBEGIN
Return 1
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Можно попробовать, но это не просто.можно ли убрать данные недочеты
Сомневаюсь.сделать возможность выделять несколько строчек