Смена шкурки приложения

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Смена шкурки приложения

Сообщение Игорь Столяров »

Привет всем !

Хотелось бы реализовать в приложении возможность смены "шкурки" (оформления).
С цветовым оформлением - более или менее все понятно .... а вот с иконками вопрос открытый.
Т.е. есть, например, несколько наборов иконок (а в идеале - открытый список иконок, который может изменять пользователь).
Выбирается нужный набор и во всех окнах происходит замена иконок. Первое, что приходит в голову:

Код: Выделить всё

  Open(Window)  
  Loop Loc:Field = FirstField() to LastField() by 1
    If Loc:Field{PROP:Type} = Create:Button
       If     Upper(Loc:Field{Prop:Icon}) = '~NABOR01_01.ICO' then Loc:Field{Prop:Icon} = '~NABOR02_01.ICO'
       elsIf Upper(Loc:Field{Prop:Icon}) = '~NABOR01_02.ICO' then Loc:Field{Prop:Icon} = '~NABOR02_02.ICO'
       ....
       end
    end
или что-то в этом этом стиле ...
Но как-то тупо и не решает всех вопросов (например замену иконок в CheckBox при нажатии).

А можно как-то долезть до списка хранения иконок в EXE/DLL и там сделать переадресацию на другую коллекцию ?
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Смена шкурки приложения

Сообщение kreator »

Вот такая идея. Хранить наборы в разных dll. Иконки вытаскивать через 'icons1.dll[1]'. Развиваем дальше - нужно иметь переменную, отвечающую за этот файл, при изменении пользователем меняется переменная, перерисовка окна по reset или что там.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Re: Смена шкурки приложения

Сообщение gopstop2007 »

kreator писал(а):Вот такая идея. Хранить наборы в разных dll. Иконки вытаскивать через 'icons1.dll[1]'. Развиваем дальше - нужно иметь переменную, отвечающую за этот файл, при изменении пользователем меняется переменная, перерисовка окна по reset или что там.
дополню, не надо переменной, достаточно иметь кучку одинаковых длл с разными иконками отличающимися только названиями длл, и при необходимости длл переименовать на длл по умолчанию, а длл по умолчанию на архив и всё ;)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Re: Смена шкурки приложения

Сообщение Игорь Столяров »

Идея интересная, хотя и незнакомая ... ;) Есть два вопроса.

1. Как упорядочить иконки внутри DLL ?
Нужно ведь, что бы например, иконка "Печать отчета" в разных DLL файлах было строго под одним и тем же номером ...

2. Как обращать из Clarion к таким иконкам ? Что-то вроде: ?Button{Prop:Ico} = icons1.dll[1] ?!
И тогда в дизайнере, эти иконки не доступны ?
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Смена шкурки приложения

Сообщение kreator »

В дизайнере, скорее всего, не доступны. Надо подсовывать. А в dll они записываются по алфавиту, я проверил.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Re: Смена шкурки приложения

Сообщение gopstop2007 »

Игорь Столяров писал(а):Идея интересная, хотя и незнакомая ... ;) Есть два вопроса.

1. Как упорядочить иконки внутри DLL ?
Нужно ведь, что бы например, иконка "Печать отчета" в разных DLL файлах было строго под одним и тем же номером ...
а зачем? в "шкурках" - длл-ках названия иконок одинаковые, содержимое разное :wink:
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Смена шкурки приложения

Сообщение kreator »

gopstop2007 писал(а):а зачем? в "шкурках" - длл-ках названия иконок одинаковые, содержимое разное :wink:
Так ведь по названию в длл-ке не достучаться.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Re: Смена шкурки приложения

Сообщение gopstop2007 »

kreator писал(а):
gopstop2007 писал(а):а зачем? в "шкурках" - длл-ках названия иконок одинаковые, содержимое разное :wink:
Так ведь по названию в длл-ке не достучаться.
может я чего не понял ;), как вариант:
1. a.ico, b.ico, c.ico
2. создаем dll с указанными иконками (A.dll)
3. заменяем a.ico, b.ico, c.ico иконки на "иконки-шкурки" на с такими же названиями
4. смотрим п.2 (B.dll)
5. в итоге у нас две одинаковые dll-ки A.dll и B.dll с разными по изображению, но с одинаковыми по названиям иконками
6. при работе в программе c A.dll
7. заменяем - переименовываем A.dll -> Orig.dll
8. заменяем - переименовываем B.dll -> A.dll
Присваивание иконок вроде по алфавиту. :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Смена шкурки приложения

Сообщение kreator »

С заменами понятно. Я говорю, что в программе можно только так - ?Button{Prop:Ico} = 'a.dll[1]'. По барабану какое-то там название. Может иконки имеют названия типа "add_red.ico", "add_blue.ico". Зачем в таком случае их переименовывать, если они лягут и так как надо.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Re: Смена шкурки приложения

Сообщение gopstop2007 »

add.ico в a.dll и add.ico в b.dll - вроде проще вариант, только подмена dll, хотя на вкус и цвет... Решать Игорю Столярову :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить