Описание вспомогательной функции


_ArrayDisplay

Отображает массив в ListView.

_ArrayDisplay($var_array[,$var_stitle])

Параметры

$var_array Массив для отображения
$var_stitle [необязательный] Заголовок окна, в котором отображается массив

65500 - максимальное количество строк 1D массива отображаемых в диалоге. При этом исходный массив не изменяется.

При просмотре данных массива можно скопировать в буфер обмена все ячейки, а так же удерживая клавишу CTRL выделить нужные.

В версии 10.4 добавлена возможность после просмотра массива передавать значения всех или выделенных ячеек другим командам, с помощью кнопки:

При этом выбранные ячейки будут записаны в глобальный массив GLOBALARRAY и окно просмотра будет закрыто.
Массив GLOBALARRAY в других командах можно использовать так же как и другие глобальные переменные см. Дополнение №23
В версии 21.2 добавлен глобальный массив GLOBALARRAY1 в который записываются номера выбранных ячеек.

В связи с тем, что имеется ограничение в ~4000 символов на длину одной ячейки, в версии 12.0 добавлена возможность:
- обрезать строку для отображения
- устанавливать красный шрифт для таких строк
- устанавливать красный значок напротив такой ячейки

В версии 13.9 добавлено:
- для скорости появления таблицы убраны значки, если массив более 3000 элементов.
- в $var_stitle добавлен тег :CHECKBOX:, позволяющий отображать check-boxes для элементов.

В версии 21.4 добавлены к тегу :CHECKBOX: необязательные параметры :CHECKBOX:MODE:NUMBERS:HINT:
  MODE - режим выбора check-boxes в таблице:
    0 - могут быть выбраны все пункты (по умолчанию).
    1 - может быть выбран только один пункт.
  NUMBERS - строка номеров, которые будут отмечены в check-boxes, возможны варианты:
    - номер (будет отмечен один заданный пункт)
    - номера через запятую. Пример: 1,5,8
    - диапазон номеров. Пример: 1~-1. Пример: 3~8. Пример: 1,2,3,6~11,10~-1.
    - при отрицательных значениях позиция отсчитывается с конца списка.
    - при MODE=0 - если NUMBERS указан или значение пустое, то пункты не отмечаются (по умолчанию).
    - при MODE=1 - по умолчанию отмечается первый пункт.
  HINT - временная подсказка на кнопке
    - подсказки прописываются в TCIMG_.lng в ключах CheckBoxHint1, CheckBoxHint2, ... , CheckBoxHint_Name
    - в шаблоне прописывается окончание Hint1, Hint2, ... , Hint_Name

Горячие клавиши:
  CTRL+A - выделяет все пункты.
  CTRL+S - инвертирует выделенные пункты.
  CTRL+Q - снимает выделение с пунктов.
  CTRL+C - копирует выделенные пункты в буфер обмена.
  ENTER или SPACE (пробел) - редактирует выбранный пункт.

В версии 16.8 справа от таблицы добавлены кнопки навигации и выделения.

Дополнительные настройки внешнего вида диалога в TCIMG.ini в секции [Infolist]



В версии 19.4 в $var_stitle добавлен тег :ICON|Letter|Column|iNameKey|kNameKey: , позволяющий устанавливать свои значки пунктам, где:
  Letter - режим, буква:
    e - значок устанавливается, относительно ассоциации типа файла/папки в системе.
    v - значок устанавливается из самого файла (exe, dll, ...).
    z - значок устанавливается из шаблона NameKey.
    w - значок устанавливается из файла и номера иконки (xxx.dll,n).
    g - значки устанавливаются для информации реестра.
    s - значки устанавливаются для информации INI файла.
  Column - номер колонки в которой находятся объекты в 2D массиве.
    актуально для режимов "e" и "v"
    по умолчанию 0
  iNameKey - имя ключа с приставкой i в котором прописан шаблон со значками в секции [Infolist]

    В ключах прописывается: Title,N||BasicItem,N||ErrorItem,N||ZiroItem,N||CHECKBOX||Header,N||MODE||NUMBERS||HINT , где:
    Title,N - путь к библиотеке значков и номер значка для заголовка окна.
    BasicItem,N - путь к библиотеке значков и номер значка для основных пунктов.
    ErrorItem,N - путь к библиотеке значков и номер значка для пунктов при различных "ошибках".
         при длине элемента более 4000 символов для режимов "v" и "z"
         если в файле нет значка в режиме "v"
    ZiroItem,N - путь к библиотеке значков и номер значка для нулевого элемента.
    CHECKBOX - 1 отображение check-boxes для элементов, 0 - обычный список.
    Header,N - путь к библиотеке значков и номер значка для заголовка колонок.
         для заголовка колонок могут быть установлены несколько значков, пути и номера значков прописываются через разделитель |
    MODE - 0 - могут быть выбраны все пункты check-boxes (по умолчанию), 1 - может быть выбран только один пункт.
    NUMBERS - номер или номера, которые будут отмечены в check-boxes.
    HINT - временна подсказка.

    имена ключей могут быть любыми (с приставкой i).
    все параметры в шаблоне необязательные, могут быть пропущены (кроме разделителя ||).
    недостающее значение будет взято из шаблона по умолчанию.
    шаблона по умолчанию прописан в ключе 1
    все цифровые ключи 1, 2, 3, ... секции [Infolist] используются внутренними командами утилиты.
    если значок или библиотека находится в той же папке, что и TCIMG.exe или в папке ...\Files\Img\ , то достаточно указать имя.
    некоторые DLL могут иметь значок извлекаемый только отрицательным числом.
    вместо иконки ICO, DLL, EXE, ICL ... может использоваться рисунок BMP, DIB, CUR, ANI

Пример записи:

[Infolist]
iA_A=User.dll,272||User.dll,266||User.dll,124||User.dll,57
iXX=TCIMG.dll,34||||TCIMG.dll,33||TCIMG.dll,36||1


  kNameKey - имя ключа с приставкой k в котором прописан шаблон шрифта и цвета в секции [Infolist]

    В ключах прописывается: FontSize|FontWeight|FontAttribute|FontName|TextColor|BkColor|AltColor|EditBkColor|EditTextColor
    FontSize - размер шрифта таблицы.
    FontWeight - толщина шрифта: 400 - нормальный, 700 - жирный.
    FontAttribute - стиль шрифта: 0 - обычный, 2 - курсив, 4 - подчёркнутый, 8 - зачёркнутый (объединение стилей: 2+4 = курсив и подчёркнутый).
    FontName - имя шрифта.
    TextColor - RGB цвет текста.
    BkColor - RGB цвет чётных строк.
    AltColor - RGB цвет нечётных строк.
    EditBkColor - RGB цвет фона поля редактирования (F2, Пробел или двойной клик на пункте).
    EditTextColor - RGB цвет текста поля редактирования (F2, Пробел или двойной клик на пункте).

    имена ключей могут быть любыми (с приставкой k).
    все параметры в шаблоне необязательные, могут быть пропущены (кроме разделителя |).

Пример записи:

[Infolist]
kS1=15|700|0|Consolas|3C9257
kS2=12|400|0|Lucida Console|BB0033







Функцию можно подключить через команду exect

См. также

_ViewValues

Примеры:
 Как создать кнопку?


exect=$var_aa=_ArrayCreate(5,2)||_ArrayDisplay($var_aa) ;; пример создания пустого массива

exect=$var_aa=_ArrayCreate(8,1,'A')||_ArrayDisplay($var_aa) ;; пример создания и заполнения массива

exect=$var_aa=StringSplit('1a|2a|3a|4a|5a|6a|7a|8a|9a','|',2)||_ArrayDisplay($var_aa)||_ArrayAdd($var_aa,'88888')||_ArrayDisplay($var_aa) ;; пример создания массива и добавление в конец значения

exect=$var_aa=StringSplit('1a|2a|3a|4a','|',2)||_ArrayDisplay($var_aa)||$var_a2=StringSplit('5b|6b|7b|8b|9b','|',2)||_ArrayDisplay($var_a2)||_ArrayConcatenate($var_aa,$var_a2)||__ArrayDisplay($var_aa) ;; пример создания 2-х массивов и присоединение 2-го к первому

exect=$var_aa=StringSplit('1a|2a|3a|4a','|',2)||_ArrayDisplay($var_aa)||_ArrayDelete($var_aa,2)||_ArrayDisplay($var_aa) ;; пример создания массива и удаление заданной ячейки

exect=$var_aa=StringSplit('1a|2a|3a|4a|5a|6a|7a|8a|9a','|',2)||_ArrayDisplay($var_aa)||$var_a2=_ArrayExtract($var_aa,2,5)||_ArrayDisplay($var_a2) ;; пример создания массива $var_a2 из заданных ячеек массива $var_aa

exect=$var_aa=StringSplit('aa|bb|aa|cc|dd|aa|bb|ee|aa','|',2)||_ArrayDisplay($var_aa)||$var_a2=_ArrayFindAll($var_aa,'aa')||_ArrayDisplay($var_a2) ;; пример создания массива $var_a2 из индексов ячеек массива $var_aa в которых есть 'aa'

exect=$var_aa=StringSplit('0;1;2;3;4;5;6;7;8;9',';')||_ArrayDisplay($var_aa)||_ArrayInsert($var_aa,2,'Вставлена~~2-я~~ячейка')||_ArrayDisplay($var_aa) ;; пример вставки в массив $var_aa значения в заданную ячейку

exect=$var_aa=StringSplit('0;1;2;3;4;5;6;7;8;9',';')||_ArrayDisplay($var_aa)||$var_an=StringSplit('3|5|9','|')||_ArrayDisplay($var_an)||_ArrayInsert($var_aa,$var_an,'Вставлена~~3-я~~ячейка|5-я|9-я')||_ArrayDisplay($var_aa) ;; пример вставки в массив $var_aa значений в заданные ячейки из массива $var_an

exect=$var_aa=StringSplit('0;1;2;3;4;5;6;7;8;9',';')||_ArrayDisplay($var_an)||_ArrayInsert($var_aa,'3;5;9','Вставлена~~3-я~~ячейка|5-я|9-я')||_ArrayDisplay($var_aa) ;; пример вставки в массив $var_aa значений в заданные ячейки

exect=$var_aa=StringSplit('4|2|06|8|12|5','|')||_ArrayDisplay($var_aa) exect=$var_i1=_ArrayMax($var_aa,0,1)||$var_i2=_ArrayMax($var_aa,1,1) GLOBALEXECT<a> ;; пример возвращения наибольшего значения, содержащегося в массиве

exect=$var_aa=StringSplit('4,2,06,8,12,5',',')||_ArrayDisplay($var_aa) exect=$var_i1=_ArrayMaxIndex($var_aa,0,1)||$var_i2=_ArrayMaxIndex($var_aa,1,1) GLOBALEXECT<a> ;; пример возвращения индекса ячейки, в которой содержится наибольшее значение массива

exect=$var_aa=StringSplit('4,2,06,8,12,5',',')||_ArrayDisplay($var_aa) exect=$var_i1=_ArrayMin($var_aa,0,1)||$var_i2=_ArrayMin($var_aa,1,1) GLOBALEXECT<a> ;; пример возвращения наименьшего значения, содержащегося в массиве

exect=$var_aa=StringSplit('4,2,06,8,12,5',',')||_ArrayDisplay($var_aa) exect=$var_i1=_ArrayMinIndex($var_aa,0,1)||$var_i2=_ArrayMinIndex($var_aa,1,1) GLOBALEXECT<a> ;; пример возвращения индекса ячейки, в которой содержится наименьшее значение массива

exect=$var_aa=StringSplit('1|2|3|4','|',2)||$var_ap=_ArrayPermute($var_aa,'-')||_ArrayDisplay($var_ap) ;; пример возвращения массива $var_ap перестановок всех элементов указанного массива $var_aa

exect=$var_aa=StringSplit('AAA|BBB|CCC|DDD','|',2)||_ArrayDisplay($var_aa)||$var_s1=_ArrayPop($var_aa)||MsgBox(4096,'Результат','$var_s1')||_ArrayDisplay($var_aa) ;; пример возвращения последнего элемента массива $var_aa, одновременно удаляя его из массива

exect=$var_aa=StringSplit('AAA|BBB|CCC|DDD','|',2)||_ArrayDisplay($var_aa)||_ArrayPush($var_aa,'EEE')||_ArrayDisplay($var_aa)||_ArrayPush($var_aa,'FFF')||_ArrayDisplay($var_aa) ;; пример добавления нового элемента в конец массива, смещая остальные вверх

exect=$var_aa=StringSplit('AAA|BBB|CCC|DDD','|',2)||_ArrayDisplay($var_aa)||_ArrayPush($var_aa,'EEE',1)||_ArrayDisplay($var_aa)||_ArrayPush($var_aa,'FFF',1)||_ArrayDisplay($var_aa) ;; пример добавления нового элемента в начало массива, смещая остальные вниз

exect=$var_aa=StringSplit('AAA|BBB|CCC|DDD|EEE|FFF','|',2)||_ArrayDisplay($var_aa)||_ArrayReverse($var_aa)||_ArrayDisplay($var_aa)||_ArrayReverse($var_aa)||_ArrayDisplay($var_aa) ;; пример изменения порядка следования элементов массива

exect=$var_aa=StringSplit('AAA|BBB|CCC|DDD|EEE|FFF','|',2)||_ArrayDisplay($var_aa)||$var_ii=_ArraySearch($var_aa,'DDD')||MsgBox(4096,'Результат','$var_ii') ;; пример поиска индекса ячейки, в которой находится фраза 'DDD'

exect=$var_aa=StringSplit('0;1;2;3;4;5;6;7;8;9',';',2)||_ArrayDisplay($var_aa)||_ArraySort($var_aa,1)||_ArrayDisplay($var_aa)||_ArraySort($var_aa)||_ArrayDisplay($var_aa) ;; пример сортировки массива

exect=$var_aa=StringSplit('AAA|BBB|CCC|DDD|EEE|FFF','|',2)||_ArrayDisplay($var_aa)||_ArraySwap($var_aa,2,4)||_ArrayDisplay($var_aa)||_ArraySwap($var_aa,1,5)||_ArrayDisplay($var_aa) ;; пример замены местами две ячейки массива

exect=$var_aa=StringSplit('AAA|BBB|CCC|DDD|EEE|FFF','|',2)||_ArrayDisplay($var_aa)||_ArrayToClip($var_aa,'~~-~~',1,5) ;; пример записи элементов массива в буфер обмена

exect=$var_aa=StringSplit('AAA|BBB|CCC|DDD|EEE|FFF','|',2)||_ArrayDisplay($var_aa)||$var_ss=_ArrayToString($var_aa,@TAB,1,5)||MsgBox(4096+64,'Результат','$var_ss') ;; пример объединение ячеек массива в одну строку, разделяя @TAB

exect=$var_aa=StringSplit('AAA-|BBB-|CCC-|DDD-|EEE-|FFF-','|',2)||_ArrayDisplay($var_aa)||_ArrayTrim($var_aa,1,1,1,3)||_ArrayDisplay($var_aa) ;; пример удаления указанного количества символов из заданных элементов массива

exect=$var_aa=StringSplit('1|2|3|4|5|6|7|8|9|10','|',2)||_ArrayDisplay($var_aa)||_ArrayRandomize($var_aa)||_ArrayDisplay($var_aa) ;; пример распределения элементов массива случайным образом

exect=$var_aa=StringSplit('1|2|3|4|5|6|7|8|9|10','|',1)||_ArrayDisplay($var_aa)||_ArrayRandomize($var_aa,1)||_ArrayDisplay($var_aa) ;; пример распределения элементов массива случайным образом со 2-го элемента

exect=$var_aa=StringSplit('aa|bb|aa|cc|dd|aa|bb|ee|aa','|',2)||_ArrayDisplay($var_aa)||$var_a2=_ArrayUnique($var_aa)||_ArrayDisplay($var_a2) ;; пример создания массива $var_a2 из массива $var_aa без повторов элементов

exect=$var_aa=StringSplit('aa|bb|aa|cc|dd|aa|bb|ee|aa','|',2)||_ArrayDisplay($var_aa)||_ReDim($var_aa,20)||_ArrayDisplay($var_aa)||_ReDim($var_aa,5)||_ArrayDisplay($var_aa) ;; пример изменения размера массива

slist=%WL||##path<4>||&&(?i)[^a-zа-яё\s]!!~~||formt<w002,1> exect=_ArrayDisplay($GLOBALSLIST,'Удерживая~~CTRL~~выберите~~слова') slist=$GLOBALARRAY||formt<sp57,fnc_symzagup> renms=%WL||<srlist=GLOBALSLIST<t>>||upd<1> ;; переименовать выделенные объекты заданными

sends=-1??-1 exect=_ArrayDisplay($GLOBALSENDS,'Выберите~~пункты:CHECKBOX:') GLOBALARRAY<a> ;; вывести содержимое буфера обмена построчно в таблице, отметить галочками нужные и вывести оставшиеся в массив GLOBALARRAY

sends=%P%N??-1||formt<6,1> exect=_ArrayDisplay($GLOBALSENDS,'Удерживая~~CTRL~~проверьте~~пункты') start=Explorer||list<$GLOBALARRAY>||spause<1000> ;; Из файла под курсором выбрать нужные ссылки и открыть их в браузере IE

slist=%WL||##<info=t52::|#L1:-1;;?F6,1> exect=_ArrayDisplay($GLOBALSLIST,'Удерживая~~CTRL~~проверьте~~пункты') start=Explorer||list<$GLOBALARRAY>||spause<1000> ;; Из выделенных файлов выбрать нужные ссылки и открыть их в браузере IE

sends=-1??-1 exect=_ArrayDisplay($GLOBALSENDS,'Просмотр~~массива:ICON|e:') ;; вывести пути/имена файлов из буфера обмена построчно (значки пунктов в таблице присваиваются относительно системной ассоциации типа файла)

sends=-1??-1 exect=_ArrayDisplay($GLOBALSENDS,'Просмотр~~массива:ICON|z|0|iA_A:') ;; вывести содержимое буфера обмена построчно в таблице (в таблице настройки значков берутся из секции [InfoList] из ключа "iA_A")

sends=123456789??-3 exect=_ArrayDisplay($GLOBALSENDS,'Выберите~~пункты:CHECKBOX:') GLOBALARRAY<a> ;; вывести содержимое буфера обмена построчно в таблице, отметить галочками нужные и вывести оставшиеся в массив GLOBALARRAY

sends=123456789??-3 exect=_ArrayDisplay($GLOBALSENDS,'Выберите~~пункты:CHECKBOX:1:1:Hint3:') GLOBALARRAY<a> ;; пример параметров таблицы, в которой можно выбрать один пункт check-box и отображение заданной подсказки


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru