Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.06.2013, 10:42
Аватар для AlexandrV
AlexandrV AlexandrV вне форума
Начинающий
 
Регистрация: 10.02.2013
Сообщения: 197
Версия Delphi: XE3
Репутация: -624
По умолчанию Стили в XE3 Delphi VCL

В XE3 Delphi FMX менять стили легко. для этого там есть компонент.

а как программно менять стили в VCL . Короче как программно управлять стилями в XE3 Delphi VCL именно программно. Конечно можно заранее подключить все стили а потом их переключать но я люблю делать загрузкой так что их надо загружать и активировать программно. Скажите как.
Ответить с цитированием
  #2  
Старый 19.06.2013, 11:53
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Только начал изучать FireMonkey. Насколько я понял, стили это особенность программирования в этой библиотеке (она не совместима с VCL). На VCL можете использовать темы Windows, но советую полностью перейти на FM, т.к. 1) возможности стилей больше, чем у тем Windows, 2) в FM много эффектов и анимаций, легко совмещаются 2D и 3D, 3) можно сделать приложения не для Windows.
Ответить с цитированием
  #3  
Старый 19.06.2013, 12:10
Аватар для AlexandrV
AlexandrV AlexandrV вне форума
Начинающий
 
Регистрация: 10.02.2013
Сообщения: 197
Версия Delphi: XE3
Репутация: -624
По умолчанию

Цитата:
Сообщение от AlexSku
Только начал изучать FireMonkey. Насколько я понял, стили это особенность программирования в этой библиотеке (она не совместима с VCL). На VCL можете использовать темы Windows, но советую полностью перейти на FM, т.к. 1) возможности стилей больше, чем у тем Windows, 2) в FM много эффектов и анимаций, легко совмещаются 2D и 3D, 3) можно сделать приложения не для Windows.

Совместима раз можно в опциях выбрать стиль для VCL то можно и программно. в опциях они выбираются в Application-->appearance

перешел бы но проект с нуля писать ужас. я и так его уже 4 месяца пишу.
Также есть там мину в FMX
не возможно иконку программно загрузить. еще пару 10сяток недостатков. так как FMX отличается от VCL да и притом книг по нему мало то не могу

Последний раз редактировалось AlexandrV, 19.06.2013 в 12:14.
Ответить с цитированием
  #4  
Старый 20.06.2013, 04:42
Аватар для AlexandrV
AlexandrV AlexandrV вне форума
Начинающий
 
Регистрация: 10.02.2013
Сообщения: 197
Версия Delphi: XE3
Репутация: -624
По умолчанию

Может кто скажет как прграмно управлять стилями в VCL
Ответить с цитированием
  #5  
Старый 20.06.2013, 08:42
Аватар для AlexandrV
AlexandrV AlexandrV вне форума
Начинающий
 
Регистрация: 10.02.2013
Сообщения: 197
Версия Delphi: XE3
Репутация: -624
По умолчанию

Делал по этому коду но он мне стиль не грузит
Код:
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  
Старый 20.06.2013, 08:55
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Используйте методы класса TStyleManager, конкретно
Код:
IsValidStyle(const FileName: string): boolean
этот просто для проверки валидности файла стилей, т.е. является ли файл из FileName стилем.

или
Код:
IsValidStyle(const FileName: string; var StyleInfo: TStyleInfo): boolean
более продвинутый вариант, не только проверяющий, но и возвращающий в StyleInfo основную информацию об этом файле
Код:
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
Последняя функция вернет True, если стиль успешно загружен из ресурсов.

После загрузки стили необходимо применить
Код:
TrySetStyle(const Name: string; ShowErrorDialog: Boolean): Boolean
где устанавливается стиль с именем Name, при успешном выполнении метод возвращает True. ShowErrorDialog указывает выводить ли сообщение об ошибке при неудаче, по умолчанию, true.

А чтобы узнать какой стиль сейчас используется, или какие стили доступны можно воспользоваться свойствами класса

ActiveStyle возвращает используемый в настоящее время стиль в оформлении.
IsCustomStyleActive возвращает True в случае, если используется стиль отличный от стиля Windows
Style возвращает объект стиля по его имени.
StyleNames возвращает список названий зарегистрированных стилей.
SystemStyle возвращает системный стиль, т.е. стиль Windows.

На семёрке это не действует, (нету стилей в D7 окромя AlphaControls:-) поэтому проверить нет возможности, но вроде источник надёжный, скопипащенному верить.
Ответить с цитированием
  #7  
Старый 20.06.2013, 09:05
Аватар для AlexandrV
AlexandrV AlexandrV вне форума
Начинающий
 
Регистрация: 10.02.2013
Сообщения: 197
Версия Delphi: XE3
Репутация: -624
По умолчанию

Можешь написать загрузку и регистрацию используя путь к стили
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025