Налаштування FireMonkey стилю на контролах та формах - Community Blogs - Embarcadero Community

Властивість StyleLookUp

Приклад вибору стилю для TButton у Metropolis UI Black:

community

Властивість StyleSettings

У Delphi XE3 з'явилася нова властивість TControl.StyleSettings = set of (ssFamily, ssSize, ssStyle, ssFontColor, ssOther) дозволяє включати та вимикати властивості шрифту, який береться зі стилю. Справа в тому, що в деяких стилях, зокрема Metropolis UI стилях, задається назва шрифту, розмір. Якщо ви не хочете використовувати стиль для тексту за замовчуванням, то ви можете відключити наступні парметри зі стилю: ssFamily - назва шрифту, ssSize - розмір шрифту, ssStyle-стиль шрифту, ssFontColor - колір шрифту, ssOther - позиція тексту.

Приклад TButton з увімкненим ssSize (Button1) і вимкненому ssSize (Button2):

Увімкнення та вимкнення стилізації рамки форм у додатку

У Delphi XE3 з'явилася можливість стилізувати рамку форми. У програмах Windows рамка стилізується повністю: бордер + кнопки, у додатках для Mac OS стилізується тільки фон заголовка у форми, не торкаючись системних кнопок, що є загальною тенденцією для додатків в Mac OS. Для увімкнення та вимкнення стилізації рамки форми використовуйте TForm.EnableBorderStyling властивість. За умовчанням стоїть значення True, тобто. рамка стилізуватиметься. Слід зазначити, що не всі стилі містять елементи стилю для рамки, і в цьому випадку рамка буде системною.

Стилізація рамки на прикладі стилю Jet у Mac OS:

Стилізація рамки на прикладі стилю Jet у Windows:

Стилізація головного меню форми

У Delphi XE3 головне меню можна організувати двома способами: використовувати TMenuBar контрол або TMainMenu компонент.

TMenuBar Виможете використовувати цей контроль для створення головного меню у клієнській частині форми. Слід зазначити, що якщо ви пишите програму під Mac OS, то в даному випадку меню не з'явиться на Mac OS меню барі - воно завжди буде в клієнтській частині.

Приклад використання TMenuBar з Transparent.style. Погодьтеся, що виглядає дуже ефектно з напівпрозорою графікою:

community
TMainMenu При використанні TMainMenu компонента головне меню створюється в неклієнтській частині форми, а в Mac OS меню з'явиться на Mac OS меню барі. У Windows додатках, якщо в стилі визначено графіку для рамки форми, головне меню і всі підменю також будуть стилізовані. Якщо рамка не задана в стилі або ви відключили стилізацію для рамки (TForm.EnableBorderStyling = False), то головне меню та підменю, як і рамка, будуть системними.

Головне меню у Windows за допомогою TMainMenu на прикладі стилю Jet:

community

Головне меню в Mac OS за допомогою TMainMenu на прикладі стилю Jet:

firemonkey

Підтримка дисплея Retina у Mac Book Pro

Як ви вже знаєте, компанія Apple випустила Mac Book Pro з Retina дисплеєм, чим спантеличила багатьох розробників ПЗ, т.к. для коректного відображення програми потрібні зміни як у коді, так і в растрової графіці для елементів керування - вона повинна бути також високою роздільною здатністю. Якщо векторні стилі Delphi XE3 підлаштовуються під високу роздільну здатність автоматично, то з растровими стилями не все так просто. Для підтримки Retina дисплея, у додатку з растровим стилем повинен бути завантажений додатковий стиль з високою роздільною здатністю, яка рівно в 2 рази більша за звичайну. Далі стиль автоматично перемикатиметься, залежно від того, на якому дисплеї знаходиться форма.

Використання TStyleBook 1. Додати дваTStyleBook компонент на форму, наприклад, StyleBook1 і StyleBook2. 2. Завантажте звичайний стиль у StyleBook1 (наприклад, Jet.style). 3. Завантажте стиль Retina в StyleBook2. Як правило, файл з таким стилем називається [ім'ястиля]2x.style (наприклад, Jet2x.style). 4. Встановіть властивість StyleBook1.HiResStyleBook як StyleBook2. 5. Встановіть властивість TForm.StyleBook як StyleBook1

Використання TStyleManager

Ви можете послідовно викликати методи: TStyleManager.SetStyleFromFile для завантаження звичайного стилю та TStyleManager.SetStyleFromFileHiRes для завантаження стилю Retina.

Наприклад: procedure TForm1.FormCreate(Sender: TObject); begin . TStyleManager.SetStyleFromFile('Jet.style'); TStyleManager.SetStyleFromFileHiRes('Jet2x.style'); . end;

Для наочності відмінності звичайних стилів і Retina стилів нижче наведені приклади графіки для кнопки.

Кнопка для звичайного стилю:

Та сама кнопка, але для Retina стилю:

Також варто відзначити, що зараз ведеться робота над преміум пакетом растрових стилів для FireMonkey, де всі стилі будуть мати Retina варіант.