Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Самый простой вариант - заранее сделать нужного вида страницы в проекте, с нужным оформлением, а при включении "скина" просто делать на них переход. Например, плеер трех видов - это три страницы, по-своему оформленные, со своими объектами, но код на объектах чтобы не дублировать, можно оформить в секции подпрограмм. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
А если я "третье лицо", то как мне допустим сменить дизайн кнопок на свои?
Допустим в проекте у Вас есть главное меню приложения "Скины" (вверху окна). В меню есть подменю обозначающие выбор скинов, типа:
Скины - подводная лодка - корабль пиратов - космический корабль
На каждую команду меню повесьте команду перехода на нужную страницу, где нужный дизайн заранее создан. Пользователь и не будет знать, что скин реализован переходом на нужную страницу проекта. Скин - это выбираемый пользователем внешний вид, а реализован скин может быть тысячью способами...
Нажимает меню "Скины", выбирает подменю "Подводная лодка" и делается переход на страницу 1. И все дела.
Добавлено (24 Июль 2011, 03:39) --------------------------------------------- Команду перехода на нужную страницу GoToPage можно повесить на что угодно, не обязательно на меню. Можно на кнопку, переключатель, на рисунок, на что угодно... Лишь бы пользователь мог догадаться, что ткнуть для смены скина нужно именно сюда. Ну а не может догадаться - ему можно подпись сделать или всплывающую подсказку:
Мол, хочешь изменить скин - жми на левый глаз этого чудовища на картинке, а если хочешь вернуть прежний скин - жми на правый глаз этого монстра!
Дизайн кнопки (точнее только первый рисунок из трех возможных) можно сменить командой SetObjectFileName. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Можно заготовить нужные кнопки заранее, с нужными размерами и картинками и командой смены скина просто делать их видимыми, а прежние невидимыми и неактивными. Этот вариант не нуждается в дополнительных страницах. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
В этом вся суть! Конечный пользователь должен иметь возможность создавать свои скины.
А суть, как известно, в песок!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
правильно, таким макаром можно делать скины для всего что поддерживает путь к файлу (обьекты picture то бишь). кстати, фоновый рисунок лучше тоже ставить как картинку и менять ее. При старте проекта прогружать рисунки в обьекты. Продумав систему наименований граф. элементов скина и того как должна происходить смена скина (как вариант можно использовать имя скина как префикс (переменная) + фиксированные названия элементов для того чтобы прога знала что грузить для выбранного скина) можно добиться полной универсальности и независимости элементов разных скинов, думайте в общем, не додумаете подскажем. Как задавать вопросы
как вариант, я так делал здесь. не совсем так, но собирался потом сделать так как описал, чтобы файлы скинов были внешними и редактируемыми (и вероятно собранными в zip с файлом настроек как в обычных файлах скинов), а пока все извлекается из проекта в Temp (можно посмотреть). Как задавать вопросы
DEMBEL, ну ты молодец, объяснил. Разжевал бы что ли с примером. Я имею ввиду Цитата от (DEMBEL)имя скина как префикс (переменная) + фиксированные названия элементов не поймут.
Ну это я понял, что типа как: "aura_skin.zip", "omega_skin.zip" и т.д.
Делаем для кнопок картинку, слепленную из 3х картинок состояния - обычное, при наведении мышки, при нажатии. Думаю даже не стоит говорить что эти картинки в составе должны быть одинакового размера.
Потом 2 пути: 1 - в ресурсы НБ кидаем эти картинки, а в самой НБ уже выбираем из списка где мол выбор картинки из библиотеки. 2 - выставляем любую вообще картинку из библиотеки картинок, а при загрузке программы прописываем путь до нужных - SetObjectFileName.
Далее легко и просто сменить картинку кнопки в любом случае - через SetObjectFileName. Ну а где не кнопки - через картинки причем тоже через SetObjectFileName.
Сохранять текущий скин дабы человек при следующем запуске увидел выбранный можно через файл. Чтобы сделать независимость от расположения программы, можно сказать портабл версия будет, пишем в этот файл только путь внутри папки с программой. Например у нас в папке с программой имеется папка для скинов - skins. Программа у нас редко имеет только одну картинку скина, значит нужен файл конфигурации. Внутри папки кладем файлы например name.skin также каждому такому файлу конфигурации делаем папку с именем name как вариант (см. ниже). Далее всё зависит от вашего желания:
1 - Человек жмет "Сменить скин", выбирает файл с названием name.skin (выставляем фильтр чтобы выбор был только файлов с таким расширением) и жмет ОК. Далее программа читает файл конфигурации где построчно написаны названия картинок из папки. Например у нас есть фон и 2 кнопки. Будет 4 строки: name фон.jpg 1_кн.png 2_кн.bmp (расширения и имена на свой вкус) Собственно просто читаем строку, сохраняем в переменную, пишем:
2 - Аналогично, но у нас появляется список для выбора внутри программы, пользователь просто жмет на понравившееся название и жмет "Установить" (либо при щелчке на название сразу выставляется выбранный скин). Для списка мы читаем содержимое папки skins на наличие у нас файлов с расширением skin, читаем без сохранения расширения дабы красивее было. Всё просто:
3 - Как и второй способ, но мы всегда создаем файлы конфигурации и название папки с одним и тем же названием. Например файл Супер_Скин.skin и папку Супер_Скин В итоге нам не нужно писать в первую строку имя папки откуда берем картинки.
4 - Более труЪ-хардкорный способ. В данном случае у нас будут превью-картинки каждому скину. Скрипт изначально должен будет не только прочитать какие скины у нас есть вообще, но и ещё прочитать по одной строчке из этих файлов конфигурации где содержатся строки с именами картинок для показа превью. После есть 2 способа: NB - показываем кнопки (либо картинки) с перевью, при нажатии выставляем нужный скин. Количество кнопок/картинок у нас ограничено ибо в NB нет динамического создания объектов. Если у нас кнопка/картинка не задействована - просто прячем. Если скинов больше чем кнопок/картинок - показываем кнопку "Ещё". При её нажатии просто переназначаем кнопкам картинки-превью и пути до скинов на следующие. И т.д. NB + HTML + JS - Тут у нас имеется браузер, в нём создаем с помощью JS нужное кол-во кнопок/картинок с превью, будет стандартная прокрутка браузера.
Вот собственно и всё. Сам раньше тоже помнится давно делал через картинки, однако тогда эффект при клике довольно тормознутый, а при наведении мышкой вообще ад, одни глюки. NB получается меняет переменную картинки когда наводишь, и возвращает назад когда уводишь. Так вот если махнуть мышкой мимо с нормальной скоростью - картинки не успевают вернуться в исходное положение а остаются в состоянии "навел мышкой". Долго помню боролся, и так и эдак, а потом просматривая свойства кнопок решил заглянуть в эту самую библиотеку кнопок... и сразу всё понял, как и что надо было делать.
Ах да, в начале обмолвился про сохранение текущего скина. Всё просто - берем кладем куда угодно любой файл, туда пишем выбранный скин, при загрузке программы его и загружаем. Если путь не найден или пустота - грузим стандартный скин. Стандартный скин лучше всего напрямую в программу скомпилить - это дас возможность таскать один голый exe при желании, да и оформление в стиле серое пятно не покажет если чего вдруг. Мой сайт - http://фирмы.онлайн
Сообщение отредактировано Format-X22 - Ср, 27 Июля 2011, 08:48
Дата: Пт, 13 Сентября 2013, 23:48 | Сообщение # 19
Участник
Проверенные
Сообщений: 298
Offline
Всем здравия желаю. Уже более 2-х недель мучаюсь с подобной проблемой, но из-за отсутствия интернета все не могла спросить и это меня раздражало и мешало жить. По сути, так поняла, что такие объекты, как Push Button, Check Box и Radio Button, непосредственно менять не получиться, а придется извращаться с Picture, правильно ли я поняла? Или может с тех давних пор что-то изменилось? Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
Дата: Сб, 14 Сентября 2013, 00:06 | Сообщение # 20
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитата (Callisto)
Push Button, Check Box и Radio Button, непосредственно менять не получиться, а придется извращаться с Picture, правильно ли я поняла?
Правильно! Правда, кнопке (PushButton) можно задать рисунок (хоть во всю кнопку), и не один, и, в отличие от Picture, в кнопке сохранится эффект нажатия. Что касается остальных объектов (CheckBox и RadioButton), то это - стандартные объекты, и даже во взрослых языках программирования (там это можно делать) нужно специально создавать свои аналогичные объекты с требуемыми свойствами, если не устаривают стандартные. Если не ошибаюсь, как-то давно Сергей делал нестандартные CheckBox-ы в NB из картинок. Нужно подождать, что он подскажет.
Цитата (Callisto)
и это меня раздражало и мешало жить.
Ну, не надо уж так сильно переживать, на инете, и даже на NB, свет клином не сошелся.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Сб, 14 Сентября 2013, 02:13 | Сообщение # 21
Участник
Проверенные
Сообщений: 298
Offline
Цитата (Peter)
Правда, кнопке (PushButton) можно задать рисунок
Вроде пробовала подобное применять, но при использовании переменной в пути до этих картинок, почему-то не сработало как я ожидала Поэтому пришло в голову только использовать дублирующие кнопки и скрывать/показывать нужные в зависимости от скина. В общем, надо еще помозговать.
Цитата (Peter)
Ну, не надо уж так сильно переживать, на инете, и даже на NB, свет клином не сошелся.
Ага, как же. В голове зародилась, как мне показалось, интереснейшая идея, а останавливала какая-то мелочь. А интернета нет. А идея все крутится в голове и крутится
Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
Дата: Сб, 14 Сентября 2013, 02:20 | Сообщение # 22
Эксперт форума
Модераторы
Сообщений: 5942
Offline
Цитата (Callisto)
а придется извращаться с Picture,
Зачем извращаться то? Работаем непосредственно с Push Button.
Также можем менять заголовок объекта если надо. Также можно сделать RadioButton, только с проверкой через цикл отмечены остальные или нет. Или просто в цикле все делать не отмеченные, и только тот по которому щелкнули отмечать. Можно менять цвет фона, текста, сам текст и т.д. т.п. Если много отребутов, то лучше использовать INI файл или базу данных. Где то я тему создавал как раз имея ввиду замену сразу нескольких атрибутов. С базой данных это все можно сделать универсальней.
Дата: Сб, 14 Сентября 2013, 11:56 | Сообщение # 23
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитата (Callisto)
но при использовании переменной в пути до этих картинок, почему-то не сработало
Нужно объекту кнопка задать свойство отображения картинок, и использовать SetObjectFileName. Там есть некоторые тонкости, но поэксперимемтировав, сами легко разберетесь что к чему.
Цитата (Callisto)
А идея все крутится в голове и крутится
Ну, в таком случае остается только одно - записать эту идею "на бумажке", и временно переключиться на другую идею. Ну не изводить же себя....
Цитата (mishem)
С базой данных это все можно сделать универсальней.
Во как! А помнится мне были времена, когда я чуть ли не с пеной у рта доказывал полезность применения баз, но безрезультатно.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Сб, 14 Сентября 2013, 13:54 | Сообщение # 25
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитата (mishem)
Ссылку дай, посмотрю, где это ты доказывал?
Да ссылку сейчас искать в лом, но помню там была тема, связанная со списком городов для прогноза погоды (или что-то в этом духе), которую реализовывал, если не ошибаюсь, Сергей. Если наткнусь, покажу...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Дата: Сб, 14 Сентября 2013, 17:14 | Сообщение # 27
Участник
Проверенные
Сообщений: 298
Offline
Цитата (Peter)
в кнопке сохранится эффект нажатия.
Вот это мне и нужно в первую очередь.
Цитата (Peter)
Нужно объекту кнопка задать свойство отображения картинок, и использовать SetObjectFileName.
У меня эта команда меняет только первое изображение для кнопки, остальные не меняются.
mishem, Спасибо за пример, что-то в этом роде и думала сделать. С этими объектами, как-то проще, чем с кнопкой Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)
Дата: Сб, 14 Сентября 2013, 19:06 | Сообщение # 28
Админ NeoBook
Администраторы
Сообщений: 7425
Offline
Цитата (Callisto)
эта команда меняет только первое изображение для кнопки, остальные не меняются
Про эти тонкости я и говорил. Значит нужно делать составную (из трех изображений) картинку для кнопки, например так, как выглядят рисунки для кнопкок в папке Buttons каталога NB. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Все вроде пока со скинами работает, но появился такой вопрос. Делаю, так сказать, светлый и темный скин и возникла необходимость изменять цвет шрифта у всех объектов, в которых есть текст и отсюда вытекает вопроос: можно ли как-то поменять цвет сразу всем объектам или все-таки придется каждому менять? Пожалуйста, не надо ко мне на "Вы", а то чувствую себя бабулькой)