StyleBookDesigner
- Active · last change 11-5-2026
- ★ 4 on GitHub
README
StyleBook Designer
Редактор ресурсов FireMonkey TStyleBook.
Работа со стилем
- Новый создаёт пустой стиль; Стиль системы импортирует текущий штатный стиль FMX со всеми ресурсами.
- Дерево показывает группы, ресурсы и вложенные объекты без общего корневого узла. Кнопки позволяют создавать ресурс, копировать и удалять узлы, менять порядок и вложенность.
- В меню дерева и рабочей области команда Сортировать стили по имени упорядочивает ресурсы всей книги по
StyleNameбез учёта регистра. Группы и порядок вложенных элементов сохраняются. - Для одного выбранного корневого стиля подменю Используется в ... показывает стили, содержащие контролы со ссылкой на него, а Зависимости — стили, используемые контролами выбранного ресурса. Учитываются все уровни вложенности, стандартное имя стиля при пустом
StyleLookupи динамические ссылки вDefaultItemStyles.ItemStyle/GroupHeaderStyle/GroupFooterStyle,HeaderSettings.StyleLookupиPopoverOptions.StyleLookup. Списки содержат непосредственные зависимости, щелчок по имени выбирает соответствующий ресурс. Также перечисляются классы контролов: по встроенному справочнику, явным обращениям в коде FMX и ссылкам текущей книги. Классы служат справочной информацией и не являются командами перехода. Например,days_itemstyleсвязан сTCalendarчерез свойствоDefaultItemStyles.ItemStyleспискаdays, даже если элементы дней создаются только во время выполнения. Для произвольных имён учитывается назначенный класс владельца; стандартные ресурсы с индексом или суффиксом сохраняют связь с исходным классом. - Ссылки
SourceLookupобъектовTCustomStyleObjectи их потомков, а такжеTMaskedImage, учитываются в Используется в ... и Зависимости. Для выбранногоTImageвидны ресурсы, использующие его как источник растрового оформления, и классы этих объектов после разделителя. Учитываются корневые и вложенные объекты; поиск нечувствителен к регистру, повторные ссылки объединяются, отсутствующие источники отмечены как недоступные зависимости. - Палитра компонентов разделена на тематические группы: кнопки, текст и ввод, списки и таблицы, компоновка, графика, анимации, эффекты и другие. Поиск по имени и фильтр по типу работают внутри групп; пустые разделы скрываются. Компоненты каждого раздела расположены по алфавиту.
- Двойной щелчок по компоненту добавляет его в выбранный визуальный узел. Для нового корневого ресурса используйте Ресурс +, затем задайте его StyleName, например
buttonstyle. - Для анимаций свойства PropertyName, Trigger и TriggerInverse редактируются через выпадающие списки с ручным вводом. PropertyName предлагает совместимые свойства родителя, включая вложенные; триггеры — стандартные состояния FMX с true/false. Можно вводить собственные пути и составные условия или очистить значение.
- Предпросмотр показывает выбранный стиль на одном интерактивном контроле: слева список классов с поиском, в центре контрол, справа его инспектор с поиском свойств. Назначенный стилю класс выбирается автоматически; без назначения редактор пытается определить подходящий класс.
- Проверить ищет повторяющиеся/пустые имена ресурсов и неверные свойства анимаций.
- Сохранение: штатный индексированный
.style; через Сохранить как также доступен текстовый формат. Есть отмена/повтор и запрос сохранения при закрытии или замене документа. - В меню Файл команды Вставить TStyleBook (
Ctrl+Shift+V) и Копировать TStyleBook (Ctrl+Shift+C) обмениваются с дизайнером Delphi текстом DFM/FMX видаobject StyleBook1: TStyleBook ... end. Вложенные стили передаются штатным свойствомStyles/ResourcesBin; поддерживается и старый вариант сResourcesBinнепосредственно у компонента. При вставке открывается новый несохранённый документ с запросом сохранения текущего. Из многоплатформенной книги выбирается стиль для текущей платформы либо первый стиль; обратно копируется редактируемый стиль. Встроенные группы и именованные значения сохраняются. СвойстваFileNameиUseStyleManagerимпортируемого компонента не применяются. - Когда фокус в дереве или рабочей области, Копировать (
Ctrl+C) передаёт выбранный элемент со всеми дочерними объектами в стандартном тексте DFM/FMX, а Вставить (Ctrl+V) добавляет объекты в выбранный визуальный родитель или группу. Поддерживается вставка нескольких соседних объектов из Delphi одним действием отмены. Корневые ресурсы получают уникальныеStyleName. В текстовых полях работают обычные команды буфера обмена. Контекстное меню доступно в дереве, на элементах и пустой рабочей области; правый клик по элементу выбирает его без перетаскивания.
Служебные Name, Stored, Locked, ссылки на владельца/сцену и события скрыты. Tag, TagFloat и TagString доступны для TStyleTag и других невизуальных объектов ресурсов; у визуальных элементов, анимаций и эффектов эти поля скрыты.
Класс стиля и предпросмотр
Для одного выбранного корневого стиля команда контекстного меню Класс контрола… открывает предпросмотр. Найдите класс в списке слева и нажмите Назначить стилю. Назначение доступно только для целого стиля, сохраняется внутри .style. Шаблон из справочника получает класс выбранного контрола сразу при создании.
При открытии окна назначенный класс имеет приоритет. Если назначения нет, редактор сопоставляет StyleName с именами классов и DefaultStyleName из справочника, включая имена с индексом; затем проверяет характерные элементы стиля. Если подходящий класс не найден, используется TButton. Автоматический подбор не записывает назначение в документ. Команда Определять класс автоматически в контекстном меню или кнопка Автоматически в предпросмотре снимает явное назначение.
Выбор другого класса в окне действует временно до нажатия Назначить стилю. Инспектор справа редактирует свойства самого экземпляра предпросмотра, включая текст, Enabled, размеры и состояние. Эти изменения не меняют ресурс стиля и историю документа. Списки, таблицы и другие составные контролы получают минимальное содержимое внутри выбранного экземпляра для проверки взаимодействия.
Именованные значения
Ресурсы значений открывает коллекцию с типами Цвет, Число, Целое, Текст, Логическое. Каждый ресурс хранит два значения в колонках Для светлой темы и Для тёмной темы. Двойной щелчок по цвету в нужной колонке открывает диалог выбора цвета. Диалог редактирует отдельную копию коллекции и связей. При загрузке старых ресурсов прежнее значение переносится в тёмный вариант и копируется в светлый.
Чтобы связать свойство:
- Создайте именованное значение, например
Accent, тип Цвет, значение#FF247AC4. - Выберите объект в дереве и строку свойства, например
Fill.Color. - Выберите
Accentнад инспектором и нажмите Связать.
Связанные свойства помечены ↔. Изменение значения обновляет все его связи. Переименование ресурса сохраняет связи. Отвязать оставляет текущее значение; ручное редактирование свойства или геометрии снимает соответствующую связь. Удаление ресурса также сохраняет итоговые значения свойств.
Вся структура проекта хранится внутри .style: редактор автоматически создаёт скрытый ресурс #designer: TLayout с дочерним project: TStyleTag. Его TagString содержит JSON: группы, их порядок и вложенность, распределение стилей по группам, оба варианта именованных значений, выбранный режим, связи, назначения классов контролов для стилей (styleClasses), идентификаторы/пути объектов и настройки вида. Сохраняются масштаб, сдвиг, фон, ширина панелей, активная вкладка, фильтры, выделение, раскрытые ветви и прокрутка дерева/инспектора. Обычный TStyleBook получает итоговые значения свойств выбранного режима и использует штатные классы.
Служебный ресурс скрыт из дерева редактора и не входит в счётчик рабочих стилей.
Группы стилей
В меню ••• над деревом и его контекстном меню доступны Создать группу, Переименовать группу, Переместить в группу… и Убрать из группы. При выбранной группе новая группа создаётся внутри неё, а новый ресурс сразу попадает в неё. Группы и стили можно перетаскивать в другую группу; сброс на пустую область дерева переносит их на верхний уровень.
Удаление группы сохраняет её стили и подгруппы, перенося их в родительскую группу или на верхний уровень. Перемещение выше/ниже меняет порядок среди соседей в той же группе.
Справочник стилей FMX
Кнопка «Справочник стилей FMX» находится в палитре компонентов и в меню дополнительных команд редактора. Поиск по имени класса не учитывает регистр. Данные справочника основаны на 167 классах из FMX-Control-Style-Parts.md: описание, базовый класс, DefaultStyleName, условия выбора других имён, элементы стиля, проверяемые классы/интерфейсы, возможные конкретные классы, область поиска и источник в FMX. Классы TCustom* исключены из списка выбора, но их данные используются для наследования и построения шаблонов. Для представлений следует выбирать класс самого контрола: имя стиля определяется его PresentedControl.
«Создать шаблон» добавляет основной ресурс в корень дерева. Если имя уже существует, добавляется индекс (calendarstyle2, calendarstyle3 и т. д.). Для составного контрола создаётся группа с основным стилем и недостающими зависимостями, включая зависимости следующих уровней. Поиск существующих стилей нечувствителен к регистру и проверяет только ресурсы книги; совпадение имени вложенного элемента не мешает созданию ресурса. Уже имеющиеся зависимости сохраняют содержимое и группу.
Шаблон служит заготовкой структуры. Он использует совместимые конкретные классы, учитывает вложенные области поиска и включает варианты элементов, описанные в справочнике. Оформление, изображения, триггеры и анимации настраиваются в редакторе. Многие элементы запрашиваются условно и нужны только для определённых функций контрола. Список зависимостей перед созданием показывает, какие стили уже существуют и какие будут добавлены.

