Перейти к содержанию
Fire Monkey от А до Я
  • 0

Создание и коррекция кастомных стилей в XE8


Vitaldj

Вопрос

Уважаемые форумчане, программирую давно, но как то не приходилось связываться со стилями, до этого писал ( http://fire-monkey.ru/topic/1536-kak-pomeniat-fon-edit/#entry7561 ) что нужно поменять фон в edit. Получил ответ, что лучше работать со стилями, занялся этой проблемой, посмотрел вебинар по этому поводу, перелопатил эту ветку форума про стили, но понял, что все вопросы и ответы были получены в 2014 году и что в XE8 поменялось много. Не смог, вернее смог, но криво и не правильно(( разобраться как поменять стиль у edit. Смог разобраться до момента подкладки TRectangle и все. Даже поставил hittest в false, но потерялась возможность вводе текста, его не видно(. Подскажите, где поновее мануал? Или просьба Ярославу, стиль - очень важная штука, не хотел бы он тут поподробнее об этом рассказать и многие вопросы отпали у очень многих людей.

​Ну или хотяб помогите с этим простым примером.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Так какой конкретно вопрос? Как изменить фон у TEdit или где найти мануал? Если второй, то насколько я искал, большого и грамотного мануала нет. Есть страничка на сайте emarcadero и несколько видеомануалов. Поэтому придется разбираться самому.

Если все-таки вопрос по TEdit - то тут пара нюансов (Из своего опыта):

1. Если ты решил прозрачный Edit поставить на Rectangle прямо на форме, то нужно именно подложить Rectangle под Edit, а не размещать Edit в Rectangle как дочерний компонент. Т. к. если разместить компонент в компоненте, Edit не будет получать фокус при перемещении курсора клавишей Tab.

 

2. Если хочешь по-быстрому сделать это через стили, тогда нужно через Еdit Custom Style открыть стиль и прямо в него положить TRectangle (главное, чтобы он не был кому-либо родителем, установить HitTest = False). Просто у меня под рукой дельфей сейчас нет, поэтому конкретно не могу сказать. Но главное, чтобы он был ПОД всей остальной тряхомудией, которая есть в стиле TEdit. Здесь может возникнуть сложность, т. к. в редакторе стилей нет возможности сделать Bring To Front или Send to Back. Поэтому может это придется сделать программно в обработчике OnApplyStyleLookup.

 

3. Ну а если подходить основательно к вопросу, то тут нужен Bitmap Style Designer (далее BSD), который включен в IDE. Здесь нужно:

 Открыть нужный стиль

 Сохранить из него картинку

 В любом редакторе дорисовать прямоугольник того цвета и прозрачности, которые тебе требуются.

 Загрузить обратно картинку в BSD

 Скопировать стандартный стиль для Edit, Переименовать его.

 Установить ему Kind = (что-то типа FMXListBox, точно не помню)

 Указать область для фона

 Сохранить стиль в формате (.style)

 добавить в форму StyleBook, выбрать его в реквизите StyleBook формы

 Загрузить сохраненный стиль этот StyleBook.

 Для нужного TEdit указать в Stylelookup Имя, которое вы указали в BSD для нового элемента.

 

Я ни в коем случае не претендую на то, что это лучшие способы, но у меня такие способы во всяком случае работают.

 

Хотя может быть все это можно сделать проще.

Изменено пользователем AndreyS
Ссылка на комментарий
  • 0

Спасибо за подробный ответ, кое что пробовал, не все получилось. В общем, очень грустно(. Считаю, что стили одна и почти самая основная фишка FMX, а тут такой голяк с мануалами и вебинарами. Повторюсь, что они есть, но все сделаны в 2014 года, в 2015 многое поменялось. И все они общего значения, 50% времени в них вообще объясняются общие азы, которые особо ничего не дают, мало конкретных примеров(

Ссылка на комментарий
  • 0

Вообще по опыту пользования, стили в FM (как они задуманы) - это действительно удобная и крутая штука. И если нормально разобраться, то создание стилей не очень сложная задача. Но, конечно, есть минусы, которые портят картину:

1. Нет полного описания свойств объектов.

2. Для объектов отображаются свойства, которые на внешний вид никак не влияют и только сбивают с толку.

3. Для ряда объектов некоторые свойства тупо игнорируются при формировании стиля (например, отступы у ListBox) и их потом приходится вручную устанавливать каждый раз, когда что-то меняешь в стиле

4. Нет возможности (я во всяком случае не нашел для FM) плавно менять внешний вид контролов при наведении курсора, нажатии и пр.

5. Не совсем понятна логика подбора стилей в при указании свойства StyleLookup. Иногда хватает стили с других форм, вместо своей. А в XE8 update 1 для некоторых контролов (у меня это был TListBoxItem) указывать стиль в дизайн-тайме стало вообще бессмысленно, т. к. он его теряет при запуске приложения.

6. Конечно, иногда лагает редактор стилей непосредственно в IDE (например, как здесь писали у кого-то сильно память жрет). Но по сравнению с XE2, где Access violation был просто спутником по жизни, все на приемлемом уровне.

Ссылка на комментарий
  • 0

Да, насчет стилей - контролам в хелп, думаю, уже пора добавлять еще одну вкладку к методам и событиям - Стиль

Изменено пользователем VladimirS
Ссылка на комментарий
  • 0

Такая-же проблема: добавил TRectangle, StyleName установил в background, цвет белый, HitTest=false - результат - ни курсора ни значений ни фокуса, самое интересное, если цвет делаю прозрачным, то и курсор и фокус и значения есть, НО нет ФОНА, если кто знает помогите?

Захват-1.jpg

Изменено пользователем oss0kin
Ссылка на комментарий
  • 0
В 23.07.2015 в 17:09, AndreyS сказал:

Нет возможности (я во всяком случае не нашел для FM) плавно менять внешний вид контролов при наведении курсора, нажатии и пр

Как это нет? А набор анимаций для чего. С их использованием можно сделать практически любой выверт с UI. Вообще различные Animation очень забавная вещь. Когда у меня была задача создать свой стиль для приложения и я стал вплотную изучать этот вопрос (ещё на XE4) то добравшись до этого просто забыл про время, забавляясь с различными возможностями этого функционала (именно применительно ко стилям)

Ссылка на комментарий
  • 0
14 часов назад, dnekrasov сказал:

Сделайте Background контейнером для Content-а.

Clip2net_160728184934.png

Спасибо большое dnekrasov! Благодаря вам получилось! Подскажите пожалуйста есть-ли какое-нибудь описание какой набор атрибутов и их назначение у того-же editstyle, пока ищу через демо-стили, но не все понятно? Опять же структура: background - контейнер для content, есть-ли какое-нибудь описание? У меня Delphi XE8. Заранее благодарен!

Ссылка на комментарий
  • 0
52 минуты назад, oss0kin сказал:

Подскажите пожалуйста есть-ли какое-нибудь описание какой набор атрибутов и их назначение у того-же editstyle

Описания я так и не нашёл - пришлось до всего доходить самому. В данном случае eidtstyle - простой TLayout. Кстати, чаще всего как контейнер для стиля контрола используется TLayout, но в последних версиях редактора стилей появилась возможность использовать при создании не только контролы из палитры но и такие объекты как TStyledObject, TActiveStyleObject и т.д. - что значительно упростило работу (раньше приходилось вручную редактировать текст стиля). А вообще, чтобы просто понять работу со стилями и разобраться хотя-бы в основных принципах работы с ними мне очень помог Firemonkey StyleEditor. Он очень глючный, давно уже не поддерживается и реальные стили с его помощью уже не создать, но как помощник при старте изучения можно использовать.

Ссылка на комментарий
  • 0
20 минут назад, dnekrasov сказал:

Описания я так и не нашёл - пришлось до всего доходить самому. В данном случае eidtstyle - простой TLayout. Кстати, чаще всего как контейнер для стиля контрола используется TLayout, но в последних версиях редактора стилей появилась возможность использовать при создании не только контролы из палитры но и такие объекты как TStyledObject, TActiveStyleObject и т.д. - что значительно упростило работу (раньше приходилось вручную редактировать текст стиля). А вообще, чтобы просто понять работу со стилями и разобраться хотя-бы в основных принципах работы с ними мне очень помог Firemonkey StyleEditor. Он очень глючный, давно уже не поддерживается и реальные стили с его помощью уже не создать, но как помощник при старте изучения можно использовать.

Спасибо большое! Буду изучать!

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...