![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() В XE3 Delphi FMX менять стили легко. для этого там есть компонент.
а как программно менять стили в VCL . Короче как программно управлять стилями в XE3 Delphi VCL именно программно. Конечно можно заранее подключить все стили а потом их переключать но я люблю делать загрузкой так что их надо загружать и активировать программно. Скажите как. |
#2
|
|||
|
|||
![]() Только начал изучать FireMonkey. Насколько я понял, стили это особенность программирования в этой библиотеке (она не совместима с VCL). На VCL можете использовать темы Windows, но советую полностью перейти на FM, т.к. 1) возможности стилей больше, чем у тем Windows, 2) в FM много эффектов и анимаций, легко совмещаются 2D и 3D, 3) можно сделать приложения не для Windows.
|
#3
|
||||
|
||||
![]() Цитата:
Совместима раз можно в опциях выбрать стиль для VCL то можно и программно. в опциях они выбираются в Application-->appearance перешел бы но проект с нуля писать ужас. я и так его уже 4 месяца пишу. Также есть там мину в FMX не возможно иконку программно загрузить. еще пару 10сяток недостатков. так как FMX отличается от VCL да и притом книг по нему мало то не могу Последний раз редактировалось AlexandrV, 19.06.2013 в 12:14. |
#4
|
||||
|
||||
![]() Может кто скажет как прграмно управлять стилями в VCL
|
#5
|
||||
|
||||
![]() Делал по этому коду но он мне стиль не грузит
Код:
procedure TForm5.ButtonedEdit1RightButtonClick(Sender: TObject); var si: TStyleInfo; begin if OpenDialog1.Execute then if TStyleManager.IsValidStyle(OpenDialog1.FileName,si) then begin ButtonedEdit1.Text:=OpenDialog1.FileName; {выводим информацию} label8.Caption:=si.Name; label9.Caption:=si.Author; label10.Caption:=si.AuthorEMail; label11.Caption:=si.AuthorURL; label12.Caption:=si.Version; {грузим стиль} if TStyleManager.Style[si.Name]=nil then begin TStyleManager.LoadFromFile(OpenDialog1.FileName); {заносим имя стиля в список} cbRegistredStyles.Items.Add(si.Name); end; end else ShowMessage('Этот файл не содержит стилей оформления'); end; но почему стиль не выбирается Последний раз редактировалось Admin, 20.06.2013 в 19:49. |
#6
|
||||
|
||||
![]() Используйте методы класса TStyleManager, конкретно
Код:
IsValidStyle(const FileName: string): boolean или Код:
IsValidStyle(const FileName: string; var StyleInfo: TStyleInfo): boolean Код:
TStyleInfo = record Name: string;//наименование Author: string; //автор стиля AuthorEMail: string; //его email AuthorURL: string; //адрес сайта Version: string; //версия файла end; Код:
LoadFromFile(const FileName: string): TStyleServicesHandle Код:
LoadFromResource(Instance: HINST; const ResourceName: string): TStyleServicesHandle LoadFromResource(Instance: HINST; const ResourceName: string; ResourceType: PChar): TStyleServicesHandle TryLoadFromResource(Instance: HINST; const ResourceName: string; ResourceType: PChar; var Handle: TStyleServicesHandle): Boolean После загрузки стили необходимо применить Код:
TrySetStyle(const Name: string; ShowErrorDialog: Boolean): Boolean А чтобы узнать какой стиль сейчас используется, или какие стили доступны можно воспользоваться свойствами класса ActiveStyle возвращает используемый в настоящее время стиль в оформлении. IsCustomStyleActive возвращает True в случае, если используется стиль отличный от стиля Windows Style возвращает объект стиля по его имени. StyleNames возвращает список названий зарегистрированных стилей. SystemStyle возвращает системный стиль, т.е. стиль Windows. На семёрке это не действует, (нету стилей в D7 окромя AlphaControls:-) поэтому проверить нет возможности, но вроде источник надёжный, скопипащенному верить. Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
||||
|
||||
![]() Можешь написать загрузку и регистрацию используя путь к стили
|