Что нового

TVExplorer UDF - Создание дерева папок и файлов

Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Максимум, что я на данный момент могу сделать, это добавить возможность создавать TreeView Explorer не с корневой папкой, а со списком всех доступных в системе дисков (как было в твоем примере). Позже выложу.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Yashied [?]
Максимум, что я на данный момент могу сделать...
Да , это нужно конечно.
А что разве нет возможности в одном окне показать 2-3 папки из разных дисков.
Ведь вроде вполне реальна ф-я добавления папки.




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

Yashied [?]
Да, конечно можно напихать сколько угодно несвязанных папок (и это даже будет работать), но при этом возникнут проблемы при получении полного пути к выбранному элементу дерева
Да ведь можно учесть путь до корневой папки и при обращении к элементу дерева добавлять его
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Обновил библиотеку до версии 1.1.

Список изменений:
  • Теперь при подключении/отключении внешних дисков, они будут автоматически появляться/исчезать в списке (только для режима "список дисков", т.е., если вы создали TreeView Explorer c $sRoot равным "").
  • Исправлено множество серьезных и не очень ошибок.
  • Добавлены следующие сообщения:

    TV_NOTIFY_DISKMOUNTED
    TV_NOTIFY_DISKUNMOUNTED

  • Добавлены следующие флаги:

    TV_FLAG_DIRTREE

  • Добавлены следующие функции:

    _GUICtrlTVExplorer_AttachFolder
    _GUICtrlTVExplorer_Expand
    _GUICtrlTVExplorer_UpdateIcon

  • Удалена функция _GUICtrlTVExplorer_Get32BitBitmap().
  • Изменен пример.

Теперь эта библиотека выглядит так, как я ее и хотел видеть с самого начала. А вообще, интересный момент получился: из простого вопроса на форуме родилась целая UDF...

P.S

TVExplorer.au3 требует наличия WinAPEx версии 3.2 и выше.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Очень большая работа и очень полезная!
Теперь необходима UDF по поиску и построению списокв папок и файлов: с вложениями, поиску по маске и т.д. ;D
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Yashied [?]
из простого вопроса на форуме родилась целая UDF...
Да теперь широкие возможности ее применения :
Можно обойтись в скриптах без системных диалоговых окон, а можно делать и свои диалоговые окна на свой вкус. :beer:
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
А как корректно задать стиль срабатывания на однократный клик ?
Вроде в UDF это заложено (Стиль <>-1) , но...
Чтоб при этом оставалась открытой только одна папка ?
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
TVS_SINGLEEXPAND некорректно работает, если TreeView создается с помощью родной AutoIt функции GUICtrlCreateTreeView(). Поэтому, я его принудительно отключил.

Код:
$iStyle = BitAND($iStyle, BitNOT(BitOR($TVS_EDITLABELS, $TVS_SINGLEEXPAND)))
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Обновил библиотеку до версии 1.2.

Список изменений:
  • Исправлена ошибка, связанная с некорректной обработкой списка файлов при использовании флага TV_FLAG_DIRTREE или отсутствии флага TV_FLAG_SHOWFILES.
 

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Извините, что поднимаю эту тему, но всплывает ошибка...

 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
С тех пор обновилась библиотека WinAPIEx UDF, нужно добавить

Код:
#Include <APIConstants.au3>


в начало скрипта.
 

StarEdik

Новичок
Сообщения
365
Репутация
4
Yashied
Поднимаю этот вопрос потому что при запуске выдается ошибка. Что нужно делать.
C:\Program Files\AutoIt3\Include\TVExplorer.au3(833,66) : WARNING: $SEM_FAILCRITICALERRORS: possibly used before declaration.
Local $Mode = _WinAPI_SetErrorMode(BitOR($SEM_FAILCRITICALERRORS,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(833,91) : WARNING: $SEM_NOOPENFILEERRORBOX: possibly used before declaration.
Local $Mode = _WinAPI_SetErrorMode(BitOR($SEM_FAILCRITICALERRORS, $SEM_NOOPENFILEERRORBOX)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(945,39) : WARNING: $SHGFI_SMALLICON: possibly used before declaration.
Local $Flags = BitOR($SHGFI_SMALLICON,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(945,60) : WARNING: $SHGFI_SYSICONINDEX: possibly used before declaration.
Local $Flags = BitOR($SHGFI_SMALLICON, $SHGFI_SYSICONINDEX)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(949,33) : WARNING: $SHGFI_OPENICON: possibly used before declaration.
$Flags = BitOR($SHGFI_OPENICON,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(994,61) : WARNING: $SHGFI_ICON: possibly used before declaration.
$hIL = _WinAPI_ShellGetFileInfo($sPath, BitOR($SHGFI_ICON,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(994,82) : WARNING: $SHGFI_OVERLAYINDEX: possibly used before declaration.
$hIL = _WinAPI_ShellGetFileInfo($sPath, BitOR($SHGFI_ICON, $SHGFI_OVERLAYINDEX,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(994,108) : WARNING: $SHGFI_USEFILEATTRIBUTES: possibly used before declaration.
$hIL = _WinAPI_ShellGetFileInfo($sPath, BitOR($SHGFI_ICON, $SHGFI_OVERLAYINDEX, $SHGFI_USEFILEATTRIBUTES,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1082,40) : WARNING: $SSF_SHOWALLOBJECTS: possibly used before declaration.
Local $Param[3] = [$SSF_SHOWALLOBJECTS,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1082,64) : WARNING: $SSF_SHOWEXTENSIONS: possibly used before declaration.
Local $Param[3] = [$SSF_SHOWALLOBJECTS, 0, $SSF_SHOWEXTENSIONS]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1362,28) : WARNING: $SIID_DOCNOASSOC: possibly used before declaration.
$ID[0] = $SIID_DOCNOASSOC
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1363,24) : WARNING: $SIID_FOLDER: possibly used before declaration.
$ID[1] = $SIID_FOLDER
~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1364,28) : WARNING: $SIID_FOLDEROPEN: possibly used before declaration.
$ID[2] = $SIID_FOLDEROPEN
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1366,69) : WARNING: $SHGSI_ICON: possibly used before declaration.
$tIcon = _WinAPI_ShellGetStockIconInfo($ID[$i], BitOR($SHGSI_ICON,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1366,87) : WARNING: $SHGSI_SMALLICON: possibly used before declaration.
$tIcon = _WinAPI_ShellGetStockIconInfo($ID[$i], BitOR($SHGSI_ICON, $SHGSI_SMALLICON)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1404,28) : WARNING: $SIID_DRIVEFIXED: possibly used before declaration.
$ID[0] = $SIID_DRIVEFIXED
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1405,29) : WARNING: $SIID_DRIVEREMOVE: possibly used before declaration.
$ID[1] = $SIID_DRIVEREMOVE
~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1406,26) : WARNING: $SIID_DRIVERAM: possibly used before declaration.
$ID[2] = $SIID_DRIVERAM
~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1407,25) : WARNING: $SIID_DRIVECD: possibly used before declaration.
$ID[3] = $SIID_DRIVECD
~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1408,26) : WARNING: $SIID_DRIVENET: possibly used before declaration.
$ID[4] = $SIID_DRIVENET
~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(833,66) : ERROR: $SEM_FAILCRITICALERRORS: undeclared global variable.
Local $Mode = _WinAPI_SetErrorMode(BitOR($SEM_FAILCRITICALERRORS,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

Новую 3.5 версию WinAPIEx.au3 скачал.То же самое.
В TVExplorer.au3 добавил
Global $SEM_FAILCRITICALERRORS, $SEM_NOOPENFILEERRORBOX ,$SHGFI_SMALLICON
Global $SHGFI_SYSICONINDEX, $SHGFI_OPENICON, $SHGFI_ICON, $SHGFI_OVERLAYINDEX
Global $SHGFI_USEFILEATTRIBUTES,$SSF_SHOWALLOBJECTS, $SSF_SHOWEXTENSIONS, $SIID_DOCNOASSOC
Global $SIID_FOLDER, $SIID_FOLDEROPEN, $SHGSI_ICON, $SHGSI_SMALLICON, $SIID_DRIVEFIXED, $SIID_DRIVEREMOVE
Global $SIID_DRIVERAM, $SIID_DRIVECD, $SIID_DRIVENET, $SEM_FAILCRITICALERRORS
Скрипт запустился но иконки не те .
 

StarEdik

Новичок
Сообщения
365
Репутация
4
gregaz
Ваш скрипт сообщает это
C:\Program Files\AutoIt3\Include\TVExplorer.au3(839,66) : WARNING: $SEM_FAILCRITICALERRORS: possibly used before declaration.
Local $Mode = _WinAPI_SetErrorMode(BitOR($SEM_FAILCRITICALERRORS,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(839,91) : WARNING: $SEM_NOOPENFILEERRORBOX: possibly used before declaration.
Local $Mode = _WinAPI_SetErrorMode(BitOR($SEM_FAILCRITICALERRORS, $SEM_NOOPENFILEERRORBOX)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(951,39) : WARNING: $SHGFI_SMALLICON: possibly used before declaration.
Local $Flags = BitOR($SHGFI_SMALLICON,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(951,60) : WARNING: $SHGFI_SYSICONINDEX: possibly used before declaration.
Local $Flags = BitOR($SHGFI_SMALLICON, $SHGFI_SYSICONINDEX)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(955,33) : WARNING: $SHGFI_OPENICON: possibly used before declaration.
$Flags = BitOR($SHGFI_OPENICON,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1000,61) : WARNING: $SHGFI_ICON: possibly used before declaration.
$hIL = _WinAPI_ShellGetFileInfo($sPath, BitOR($SHGFI_ICON,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1000,82) : WARNING: $SHGFI_OVERLAYINDEX: possibly used before declaration.
$hIL = _WinAPI_ShellGetFileInfo($sPath, BitOR($SHGFI_ICON, $SHGFI_OVERLAYINDEX,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1000,108) : WARNING: $SHGFI_USEFILEATTRIBUTES: possibly used before declaration.
$hIL = _WinAPI_ShellGetFileInfo($sPath, BitOR($SHGFI_ICON, $SHGFI_OVERLAYINDEX, $SHGFI_USEFILEATTRIBUTES,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1088,40) : WARNING: $SSF_SHOWALLOBJECTS: possibly used before declaration.
Local $Param[3] = [$SSF_SHOWALLOBJECTS,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1088,64) : WARNING: $SSF_SHOWEXTENSIONS: possibly used before declaration.
Local $Param[3] = [$SSF_SHOWALLOBJECTS, 0, $SSF_SHOWEXTENSIONS]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1368,28) : WARNING: $SIID_DOCNOASSOC: possibly used before declaration.
$ID[0] = $SIID_DOCNOASSOC
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1369,24) : WARNING: $SIID_FOLDER: possibly used before declaration.
$ID[1] = $SIID_FOLDER
~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1370,28) : WARNING: $SIID_FOLDEROPEN: possibly used before declaration.
$ID[2] = $SIID_FOLDEROPEN
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1372,69) : WARNING: $SHGSI_ICON: possibly used before declaration.
$tIcon = _WinAPI_ShellGetStockIconInfo($ID[$i], BitOR($SHGSI_ICON,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1372,87) : WARNING: $SHGSI_SMALLICON: possibly used before declaration.
$tIcon = _WinAPI_ShellGetStockIconInfo($ID[$i], BitOR($SHGSI_ICON, $SHGSI_SMALLICON)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1410,28) : WARNING: $SIID_DRIVEFIXED: possibly used before declaration.
$ID[0] = $SIID_DRIVEFIXED
~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1411,29) : WARNING: $SIID_DRIVEREMOVE: possibly used before declaration.
$ID[1] = $SIID_DRIVEREMOVE
~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1412,26) : WARNING: $SIID_DRIVERAM: possibly used before declaration.
$ID[2] = $SIID_DRIVERAM
~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1413,25) : WARNING: $SIID_DRIVECD: possibly used before declaration.
$ID[3] = $SIID_DRIVECD
~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(1414,26) : WARNING: $SIID_DRIVENET: possibly used before declaration.
$ID[4] = $SIID_DRIVENET
~~~~~~~~~~~~~~~~~~~~~~~^
C:\Documents and Settings\Loner\Рабочий стол\Au3\Prosess1.au3(5,10) : ERROR: can't open include file <[email protected]>
#Include <[email protected]>
~~~~~~~~~^
C:\Program Files\AutoIt3\Include\TVExplorer.au3(839,66) : ERROR: $SEM_FAILCRITICALERRORS: undeclared global variable.
Local $Mode = _WinAPI_SetErrorMode(BitOR($SEM_FAILCRITICALERRORS,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
А где взят [email protected] ?
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Yashied
AutoIt 3.3.8.1, взял за основу TVExplorer_Ex_OnEvent.au3, использую только дерево папок со всеми смонтированными дисками с флагами
Код:
BitOR($TV_FLAG_SHOWLIKEEXPLORER, $TV_FLAG_SHOWSYSTEM, $TV_FLAG_SHOWHIDDEN, $TV_FLAG_SHOWFOLDERICON)

Заметил, что сортировка по алфавиту, но каталоги с именем вроде "_name" оказываются в конце, хотя в Проводнике как и задумывалось - вверху. Это как-то настраивается? В описании функций в UDF ничего не нашёл (или проглядел нечаянно), смотрел флаги TreeView - тоже ничего похожего.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Никак не настраивается. Насколько я помню, там вообще нет сортировки. Файлы выводятся в том порядке, в котором их возвращают FileFind... функции.
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Доброго времени суток!

Очень хорошая библиотека, очень сильно выручает :smile:

Но есть один вопрос, сам к сожалению не разобрался
Используя _GUICtrlTVExplorer_Create с параметром $sTemplate предположим "*.MP3;*.WAV", можно ли сделать так, чтоб в TreeView не отображались пути по которым отсутствуют файлы с данными расширениями?

Заранее извиняюсь, если ответ лежит на поверхности и я зря потратил ваше время :smile:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
SECTOR сказал(а):
Используя _GUICtrlTVExplorer_Create с параметром $sTemplate предположим "*.MP3;*.WAV", можно ли сделать так, чтоб в TreeView не отображались пути по которым отсутствуют файлы с данными расширениями?
Нет.
 
Верх