Что нового

Создать гибридный объект из TreeView и ListView

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Re: TreeList

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"TreeList" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Администратор.
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
Re: Объект TreeList

А можно пример, я ни где на форуме не нашел?
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
Re: Создать объект TreeList

AZJIO а у вас ссылка не открылась?

меня интересует вот такой объект
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Re: Создать объект TreeList

lorents
Т.е. Вам нужен железно гибрид ListView и TreeView?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Тогда так и надо сразу говорить и темы называть так же. Мы тут не телепаты и не гадалки что бы понять что Вы задумали.
На AutoIT если это и существует, то это будет выглядеть очень накладно.
OffTopic:
Могу предложить решение на C# http://www.codeproject.com/Articles/3225/TreeListView



Добавлено:
Сообщение автоматически объединено:

lorents
Мой Вам совет. Не заморачивайтесь со сложностями. Начните с малого. Пишите исходя из того что в AutoIT есть. А потом просто будете изменять участки кода, на придуманное новое.
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
Medic84 вышло так, что есть люди которые решили помочь. С вашим советом согласен, я так делал скрипт на batch.

А такой вопрос, а в Autoit нет возможности создавать свои объекты?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
lorents [?]
в Autoit нет возможности создавать свои объекты?
Есть, в нём можно создать практический любой графический элемент, вопрос в том, насколько сложно будет его обрабатывать.
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
Вроде нашел
http://www.autoitscript.com/forum/topic/69433-treelistview/
но у меня не получается запустить пример
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
CreatoR понятно, буду искать дальше.
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
madmasles
т.к. в проекте у меня есть функция добавления папок с поиском вложенных папок, было бы отлично, чтобы пользователь видел какую папку добавил и какие там файлы.
Например, есть папку C:\images и там есть папки, допустим C:\images\dir1 и C:\images\dir2. В каждой папке есть изображения. Пользователь добавил в проект папку "images", было бы отлично, если в объекте TreeList он увидит папку "images" и вложенные папки "dir1" и "dir2" и файлы которые там есть.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
lorents
Для этого не нужен TreeListView, можно использовать обычный TreeView, в котором отображать папки с иконками папок, а файлы с их иконками, выше дали ссылку на нужную для этого библиотеку.
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
CreatoR
забыл сказать, ListView мне нужен для того, чтобы я мог показать оригинальный размер изображения, оптимизированный размер и т.д.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
lorents [?]
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


Основные предвиденные проблемы:

* Размер (ширина) элементов.
* Сворачиваемость элементов списка (ListView) вместе с дочерними элементами дерева (TreeView).
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
CreatoR отличная работа, а можно ли убрать данные недочеты, и сделать возможность выделять несколько строчек?
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
CreatoR понятно, будет время посмотрите пожалуйста. :IL_AutoIt_1:
 
Верх