Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL  
Обьект ListBox / Список
СергейДата: Ср, 01 Декабря 2010, 20:33 | Сообщение # 1
Необукер
пример работы с ListBox
часть 1

Создадим некий план программки:
0-Програмулька будет открывать файлы и папки
1-Создать список файлов и папок определенной директории. Имя переменной с этим списком пусть будет
2-Занести этот список в приготовленный ListBox с именем list
3-Назначить действие при выборе пункта из списка, т.е. при выборе будет создаваться переменная [open] с полным путем до файла, т.к. в списке будут только имена файлов
4-Назначить действие двойного клика, т.е. открытие файла или папки
ну, вот в вкратце план
------
И так, на странице проекта создадим объект ListBox

При создании объекта открывается окно свойств

Зададим переменную (по умолчанию там ListBox1) для удобства (list) в место круглых надо квадратные, тут просто форматирование не проходит. Согласно плану список файлов будет находиться в переменной [fileList] и нам надо его отобразить в ListBox. Значит, в раздел Список пунктов поместим эту переменную
вот так должно выглядить

Нажимаем ОК и переходим к пункту 1 нашего плана
Для этого создадим кнопку

в открытом окне свойств назначим заголовок кнопки
Прикрепления: 2247865.jpg (1.8 Kb) · 9484391.jpg (37.4 Kb) · 9610508.jpg (36.4 Kb) · 7494259.jpg (2.0 Kb) · 2262522.jpg (30.7 Kb)


Сообщение отредактировано
Сергей - Вт, 23 Августа 2011, 20:23
 
Сообщение
пример работы с ListBox
часть 1

Создадим некий план программки:
0-Програмулька будет открывать файлы и папки
1-Создать список файлов и папок определенной директории. Имя переменной с этим списком пусть будет
2-Занести этот список в приготовленный ListBox с именем list
3-Назначить действие при выборе пункта из списка, т.е. при выборе будет создаваться переменная [open] с полным путем до файла, т.к. в списке будут только имена файлов
4-Назначить действие двойного клика, т.е. открытие файла или папки
ну, вот в вкратце план
------
И так, на странице проекта создадим объект ListBox

При создании объекта открывается окно свойств

Зададим переменную (по умолчанию там ListBox1) для удобства (list) в место круглых надо квадратные, тут просто форматирование не проходит. Согласно плану список файлов будет находиться в переменной [fileList] и нам надо его отобразить в ListBox. Значит, в раздел Список пунктов поместим эту переменную
вот так должно выглядить

Нажимаем ОК и переходим к пункту 1 нашего плана
Для этого создадим кнопку

в открытом окне свойств назначим заголовок кнопки

Автор - Сергей
Дата добавления - 01 Декабря 2010 в 20:33
СергейДата: Ср, 01 Декабря 2010, 20:35 | Сообщение # 2
Необукер
и создадим команду FileList

в свойствах команды заполним необходимые поля, это путь до сканируемой папки в примере C:\temp\*.*(обратите внимание на маску, без нее поиска не будет)
Выставим чебоксы Включить файлы и папки. Результат сохраняем в переменную [fileList]
Quote
FileList "C:\temp\*.*" "Files" "[fileList]"


нажимаем ОК
ну и последнее, назначаем действия, открываем ListBox, переходим на вкладку Команды и в секции Selection Changed напишем код переменной [open]. Создаем команду SetVar, для чего я уже описал выше в плане №3

в свойствах этой команды напишем следующий код
Quote
SetVar "[open]" "C:\temp\
    "



переменная (list) взята из свойства ListBox выделенного элемента, в нем заносится значение выделенного пункта в ListBox, при запуске можно увидеть в дебагере.
Переходим в секцию Double Click и назначаем команду для двойного клика по списку, вернее его пункту
Команда будет Run в связке с FileExists, это надо для того, чтоб определить, что открываем файл или папку. Сам код
Quote
FileExists "[open]" "[ok]"
If "[ok]" "=" "true"
Run "[open]" "" "Wait" "" ""
Else
Run "[WindowsDir]explorer.exe" "[open]" "Wait" "" ""
EndIf
файл будет открываться программой по умолчанию, но лучше открываемый файл открывать через ту прогу, которую она открывается. Пример открываем текстовой файл через виндовский NOTEPAD.EXE:
Quote
Run "[WindowsDir]NOTEPAD.EXE" "C:\temp\test.txt" "Normal" "" ""

Можно тестировать
Прикрепления: 3242859.jpg (23.3 Kb) · 5969275.jpg (45.2 Kb) · 2566306.jpg (22.8 Kb) · 9491303.jpg (34.8 Kb) · 0690554.jpg (23.2 Kb)


Сообщение отредактировано
Сергей - Вт, 23 Августа 2011, 20:27
 
Сообщениеи создадим команду FileList

в свойствах команды заполним необходимые поля, это путь до сканируемой папки в примере C:\temp\*.*(обратите внимание на маску, без нее поиска не будет)
Выставим чебоксы Включить файлы и папки. Результат сохраняем в переменную [fileList]
Quote
FileList "C:\temp\*.*" "Files" "[fileList]"


нажимаем ОК
ну и последнее, назначаем действия, открываем ListBox, переходим на вкладку Команды и в секции Selection Changed напишем код переменной [open]. Создаем команду SetVar, для чего я уже описал выше в плане №3

в свойствах этой команды напишем следующий код
Quote
SetVar "[open]" "C:\temp\
    "



переменная (list) взята из свойства ListBox выделенного элемента, в нем заносится значение выделенного пункта в ListBox, при запуске можно увидеть в дебагере.
Переходим в секцию Double Click и назначаем команду для двойного клика по списку, вернее его пункту
Команда будет Run в связке с FileExists, это надо для того, чтоб определить, что открываем файл или папку. Сам код
Quote
FileExists "[open]" "[ok]"
If "[ok]" "=" "true"
Run "[open]" "" "Wait" "" ""
Else
Run "[WindowsDir]explorer.exe" "[open]" "Wait" "" ""
EndIf
файл будет открываться программой по умолчанию, но лучше открываемый файл открывать через ту прогу, которую она открывается. Пример открываем текстовой файл через виндовский NOTEPAD.EXE:
Quote
Run "[WindowsDir]NOTEPAD.EXE" "C:\temp\test.txt" "Normal" "" ""

Можно тестировать

Автор - Сергей
Дата добавления - 01 Декабря 2010 в 20:35
СергейДата: Ср, 01 Декабря 2010, 20:38 | Сообщение # 3
Необукер
исходник
продолжение следует...
Прикрепления: list.rar (1.7 Kb)


Сообщение отредактировано
Сергей - Пт, 03 Декабря 2010, 08:02
 
Сообщениеисходник
продолжение следует...

Автор - Сергей
Дата добавления - 01 Декабря 2010 в 20:38
СергейДата: Пт, 03 Декабря 2010, 08:05 | Сообщение # 4
Необукер
Часть 2

Продолжим изучать ListBox
В свойствах этого объекта есть возможность выбирать несколько файлов. Для этого надо поставить галочку в опции Множественный выбор? что мы и сделаем.

Это удобная функция нужна для одной операции к нескольким файлом. Например, нам надо скопировать несколько файлов в другую папку.... Вот этим мы и займемся. Галочку мы поставили, теперь перехожим во вкладку Команды и удаляем команду SetVar в секции Selection Changed, т.к. в этом случае она бесполезна.... При множественном выборе имена файлов в переменной (list) разделяются символом новой строки в ASII коде это будет штатный спецсимвол [#13]. И так допустим у нас есть в переменной (list) несколько файлов
Quote
test1.txt[#13]test2.txt[#13]test3.txt[#13]
нам надо разобрать эту строчку и сделать функцию копирования файлов. Для разбора этой строки в массив есть хорошая команда StrParse, переходим в секцию Double Click и удаляем все, что там написано.
Создаем новую кнопку с заголовком “Копировать”, во вкладке Команда в секции Click создаем команду StrParse

Quote
StrParse "(list)" "[#13]" "[selekt]" "[count]"

в свойствах заполняем поля
1-Исходная строка для "разбора" конечно (list)
2-[#13] в качестве разделителя
3-массив, в котором будут храниться имена файлов, назовем [selekt]
4-количество элементов массива в нашем случае количество файлов [count]

Вот мы имеем массив с нужными нам файлами. Теперь нам надо каждый файл скопировать в другую папку, для работы с массивами, и не только с ними, но и с другими множественными операциями есть команда Loop, выбираем ее.

заполняем поля
1-начинаем перебор с 1 элемента
2-всего записей в массиве
3-счетчик цикла
Прикрепления: 5271174.jpg (37.0 Kb) · 9903187.jpg (21.9 Kb) · 7919668.jpg (37.7 Kb) · 6754802.jpg (22.5 Kb) · 9555516.jpg (33.2 Kb)


Сообщение отредактировано
Сергей - Вт, 23 Августа 2011, 20:31
 
Сообщение
Часть 2

Продолжим изучать ListBox
В свойствах этого объекта есть возможность выбирать несколько файлов. Для этого надо поставить галочку в опции Множественный выбор? что мы и сделаем.

Это удобная функция нужна для одной операции к нескольким файлом. Например, нам надо скопировать несколько файлов в другую папку.... Вот этим мы и займемся. Галочку мы поставили, теперь перехожим во вкладку Команды и удаляем команду SetVar в секции Selection Changed, т.к. в этом случае она бесполезна.... При множественном выборе имена файлов в переменной (list) разделяются символом новой строки в ASII коде это будет штатный спецсимвол [#13]. И так допустим у нас есть в переменной (list) несколько файлов
Quote
test1.txt[#13]test2.txt[#13]test3.txt[#13]
нам надо разобрать эту строчку и сделать функцию копирования файлов. Для разбора этой строки в массив есть хорошая команда StrParse, переходим в секцию Double Click и удаляем все, что там написано.
Создаем новую кнопку с заголовком “Копировать”, во вкладке Команда в секции Click создаем команду StrParse

Quote
StrParse "(list)" "[#13]" "[selekt]" "[count]"

в свойствах заполняем поля
1-Исходная строка для "разбора" конечно (list)
2-[#13] в качестве разделителя
3-массив, в котором будут храниться имена файлов, назовем [selekt]
4-количество элементов массива в нашем случае количество файлов [count]

Вот мы имеем массив с нужными нам файлами. Теперь нам надо каждый файл скопировать в другую папку, для работы с массивами, и не только с ними, но и с другими множественными операциями есть команда Loop, выбираем ее.

заполняем поля
1-начинаем перебор с 1 элемента
2-всего записей в массиве
3-счетчик цикла

Автор - Сергей
Дата добавления - 03 Декабря 2010 в 08:05
СергейДата: Пт, 03 Декабря 2010, 08:10 | Сообщение # 5
Необукер
в теле цикла создаем команду FileCopy и заполняем поля

должно получиться так
Quote
Loop "1" "[count]" "[i]"
FileCopy "C:\temp\[selekt[i]]" "C:\temp\folder2\[selekt[i]]"
EndLoop
AlertBox "[PubTitle]" "Копирование завершено!"
Обратите внимание, что файл находится в определенном элементе массива и обращаемся к каждому элементу через счетчик цикла [selekt[i]]
Во избежание ошибок создайте заранее папку, куда будете копировать файлы
Можно тестировать
исходник

Добавлено (03 Декабрь 2010, 08:10)
---------------------------------------------
PS
В ListBox можно зразу загрузить текстовой файл без использования цикла.
Т.е. допустим у вас есть текстовой документ такого вида:

Как видите в файле список.
Теперь надо в ListBox в "Список пунктов" поместим переменную, например [spisok]
Загружаем наш текстовой файл:
Quote
FileToVar "C:\ spisok.txt" "[spisok]"

Вот и все, теперь список из файла находится в ListBox
Прикрепления: 5980041.jpg (18.2 Kb) · list2.rar (1.8 Kb)


Сообщение отредактировано
Сергей - Вт, 23 Августа 2011, 20:32
 
Сообщениев теле цикла создаем команду FileCopy и заполняем поля

должно получиться так
Quote
Loop "1" "[count]" "[i]"
FileCopy "C:\temp\[selekt[i]]" "C:\temp\folder2\[selekt[i]]"
EndLoop
AlertBox "[PubTitle]" "Копирование завершено!"
Обратите внимание, что файл находится в определенном элементе массива и обращаемся к каждому элементу через счетчик цикла [selekt[i]]
Во избежание ошибок создайте заранее папку, куда будете копировать файлы
Можно тестировать
исходник

Добавлено (03 Декабрь 2010, 08:10)
---------------------------------------------
PS
В ListBox можно зразу загрузить текстовой файл без использования цикла.
Т.е. допустим у вас есть текстовой документ такого вида:

Как видите в файле список.
Теперь надо в ListBox в "Список пунктов" поместим переменную, например [spisok]
Загружаем наш текстовой файл:
Quote
FileToVar "C:\ spisok.txt" "[spisok]"

Вот и все, теперь список из файла находится в ListBox

Автор - Сергей
Дата добавления - 03 Декабря 2010 в 08:10
DEMBELДата: Пт, 03 Декабря 2010, 08:16 | Сообщение # 6
Наш дизайнер
- надо еще уточнить про способы записи элементов в листбокс. можно записывать вручную, можно записать переменные, можно записать одну переменную, которая содержит набор элементов, разделенных переводом строки.
- уточнить как грамотно вытаскивать элементы, про опции "номер пункта" "текст пункта". Очень удобно использовать листбокс при загрузке/извлечении массивов переменных, в данном случае "номер пункта" можно использовать как индекс элемента в массиве. Полезен список при сортировке или переопределении элементов массива (загружаем туда что надо/выгружаем в новый массив). Получив кол-во элементов в листбоксе узнаем и предел обьема массива в нем, далее обработка в цикле при необходимости каждого элемента массива.


Как задавать вопросы

Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Сообщение- надо еще уточнить про способы записи элементов в листбокс. можно записывать вручную, можно записать переменные, можно записать одну переменную, которая содержит набор элементов, разделенных переводом строки.
- уточнить как грамотно вытаскивать элементы, про опции "номер пункта" "текст пункта". Очень удобно использовать листбокс при загрузке/извлечении массивов переменных, в данном случае "номер пункта" можно использовать как индекс элемента в массиве. Полезен список при сортировке или переопределении элементов массива (загружаем туда что надо/выгружаем в новый массив). Получив кол-во элементов в листбоксе узнаем и предел обьема массива в нем, далее обработка в цикле при необходимости каждого элемента массива.

Автор - DEMBEL
Дата добавления - 03 Декабря 2010 в 08:16
СергейДата: Пт, 03 Декабря 2010, 08:25 | Сообщение # 7
Необукер
Quote (DEMBEL)
надо еще уточнить
увы. исчерпан лимит свободного времени. А следующий пробел неизвестен, поживем увидим.
Мне кажется, я затронул самое необходимое, остальное пользователь может выяснить сам, т.к. первое получилось, а в остальном иследовании с играет азарт и т.д. :D
У меня так было, сначала надо чтоб получилось элементарное, а потом загарается азарт и начинаются иследования, изучения и т.д.
 
Сообщение
Quote (DEMBEL)
надо еще уточнить
увы. исчерпан лимит свободного времени. А следующий пробел неизвестен, поживем увидим.
Мне кажется, я затронул самое необходимое, остальное пользователь может выяснить сам, т.к. первое получилось, а в остальном иследовании с играет азарт и т.д. :D
У меня так было, сначала надо чтоб получилось элементарное, а потом загарается азарт и начинаются иследования, изучения и т.д.

Автор - Сергей
Дата добавления - 03 Декабря 2010 в 08:25
  • Страница 1 из 1
  • 1
Поиск: