Мультискиновость.
Как вы знаете, в программе можно задать только один скин. Но в этой статье мы расскажем как сделать вашу программу с несколькими скинами и как вообще задать скин по нажатию на кнопку.
И так. Создадим форму, и кинем на нее выпадающий список и кнопку "Изменить скин".
Нужно создать папку "Skins" в папке вашего проекта (из этой папки будет доставаться весь список доступных скинов динамически). Далее заходим в папку с программой Mess Box в "\Skins\". Тут хранятся все скины (они имеют формат .asz), копируем их в нашу папку скинов. Подготовка проекта завершена.
Теперь нам нужно динамически загрузить весь список файлов-скинов из нашей папки skins в выпадающий список. Для этого выбираем событие "создание" нашего списка. И добавляем туда следующие действия-скрипт. (через редактор кода).
$files = array(); FindFilesEx($Prog_dir$."\skins\",".asz",false,$files); SetList(Combo_1,$files); Combo_1.ItemIndex = 0;
Здесь мы объявляем массив $files (в нем будут храниться найденные файлы), далее с помощью функции FindFileEx находим все файлы в папке "\skins\", где false параметр означает возвращать ли относительные имена файла. Все названия скинов загоняются в массив $files. Потом, с помощью функции SetList загоняем массив в список, для того чтобы мы визуально видели, какие скины нашли и после этого устанавливаем выбранный элемент выпадающего списка в начала (0 - начальный индекс).
И так, мы в результате получили весь список доступных скинов из папки, и теперь если в папке появится новый скин он также обнаружится нашей программой как и остальные.
Теперь самое интересное, будем применять и менять скин нашей программы. Назначаем нашей кнопке "Изменить скин" на нажатие следующий скрипт:
$skin = ListSelected(Combo_1); $skin = copy_l($skin,"."); MSB.SkinManager.SkinDirectory = $Prog_dir$."\skins"; MSB.SkinManager.SkinName = $skin; MSB.SkinManager.Active = true;
И так, в первой строчке мы достаем текст выделенного элемента из выпадающего списка и помещаем в переменную $skin, затем удолям лишнее с помощью функции copy_l() расширение файла ".asz" (оно нам не нужно, название скина должно быть без расширения). Copy_l - копирует левую часть от заданного символа. В результате получаем название скина. Далее...
MSB - это невидимая форма (которая есть во всех проектах), на ней находится уникальный объект SkinManager, с помощью которого и будем управлять скинами.
Как видите SkinManager имеет свойство SkinDirectory - папка со скинами. В первой строчке мы задаем папку со скинами.
SkinName - название скина, тут мы просто задаем название нашего выбранного скина. Active = true - и активизируем систему скинизирования, если мы поставим false, то наоборот деактивируем ее.
Вот и все. Ваша программа научилась мультискиновости.
Здесь можно скачать проект пример:
Скачать (30.2Kb)
|