Страница 1 из 1
Смена шкурки приложения
Добавлено: 09 Ноябрь 2014, 19:47
Игорь Столяров
Привет всем !
Хотелось бы реализовать в приложении возможность смены "шкурки" (оформления).
С цветовым оформлением - более или менее все понятно .... а вот с иконками вопрос открытый.
Т.е. есть, например, несколько наборов иконок (а в идеале - открытый список иконок, который может изменять пользователь).
Выбирается нужный набор и во всех окнах происходит замена иконок. Первое, что приходит в голову:
Код: Выделить всё
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 и там сделать переадресацию на другую коллекцию ?
Re: Смена шкурки приложения
Добавлено: 10 Ноябрь 2014, 19:17
kreator
Вот такая идея. Хранить наборы в разных dll. Иконки вытаскивать через 'icons1.dll[1]'. Развиваем дальше - нужно иметь переменную, отвечающую за этот файл, при изменении пользователем меняется переменная, перерисовка окна по reset или что там.
Re: Смена шкурки приложения
Добавлено: 10 Ноябрь 2014, 22:23
gopstop2007
kreator писал(а):Вот такая идея. Хранить наборы в разных dll. Иконки вытаскивать через 'icons1.dll[1]'. Развиваем дальше - нужно иметь переменную, отвечающую за этот файл, при изменении пользователем меняется переменная, перерисовка окна по reset или что там.
дополню, не надо переменной, достаточно иметь кучку одинаковых длл с разными иконками отличающимися только названиями длл, и при необходимости длл переименовать на длл по умолчанию, а длл по умолчанию на архив и всё

Re: Смена шкурки приложения
Добавлено: 10 Ноябрь 2014, 22:34
Игорь Столяров
Идея интересная, хотя и незнакомая ...

Есть два вопроса.
1. Как упорядочить иконки внутри DLL ?
Нужно ведь, что бы например, иконка "Печать отчета" в разных DLL файлах было строго под одним и тем же номером ...
2. Как обращать из Clarion к таким иконкам ? Что-то вроде: ?Button{Prop:Ico} = icons1.dll[1] ?!
И тогда в дизайнере, эти иконки не доступны ?
Re: Смена шкурки приложения
Добавлено: 11 Ноябрь 2014, 16:04
kreator
В дизайнере, скорее всего, не доступны. Надо подсовывать. А в dll они записываются по алфавиту, я проверил.
Re: Смена шкурки приложения
Добавлено: 11 Ноябрь 2014, 20:15
gopstop2007
Игорь Столяров писал(а):Идея интересная, хотя и незнакомая ...

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

Re: Смена шкурки приложения
Добавлено: 12 Ноябрь 2014, 11:01
kreator
gopstop2007 писал(а):а зачем? в "шкурках" - длл-ках названия иконок одинаковые, содержимое разное

Так ведь по названию в длл-ке не достучаться.
Re: Смена шкурки приложения
Добавлено: 12 Ноябрь 2014, 16:23
gopstop2007
kreator писал(а):gopstop2007 писал(а):а зачем? в "шкурках" - длл-ках названия иконок одинаковые, содержимое разное

Так ведь по названию в длл-ке не достучаться.
может я чего не понял

, как вариант:
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
Присваивание иконок вроде по алфавиту.

Re: Смена шкурки приложения
Добавлено: 12 Ноябрь 2014, 16:47
kreator
С заменами понятно. Я говорю, что в программе можно только так - ?Button{Prop:Ico} = 'a.dll[1]'. По барабану какое-то там название. Может иконки имеют названия типа "add_red.ico", "add_blue.ico". Зачем в таком случае их переименовывать, если они лягут и так как надо.
Re: Смена шкурки приложения
Добавлено: 12 Ноябрь 2014, 17:16
gopstop2007
add.ico в a.dll и add.ico в b.dll - вроде проще вариант, только подмена dll, хотя на вкус и цвет... Решать Игорю Столярову
