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

Brovin Yaroslav

Администраторы
  • Постов

    2 124
  • Зарегистрирован

  • Посещение

  • Победитель дней

    390

Весь контент Brovin Yaroslav

  1. По умолчанию эти объекты стиля и другие не зарегистрированы в палитре инструментов. Эти объекты используются только в стилях для: Упрощение создания стиля за счет композиции контролов для достижения наиболее часто используемых функций (смена изображений по триггеру в зависимости от состояния контрола - кнопка с тремя состояниями, Текст с тенью) Увеличения производительности работы стиля за счет композиции контролов. Уменьшение размера стиля за счет повторного использования одного исходного изображения в однотипных контролах (TButton, TSpeedButton и тд). То есть вместо загрузки по отдельности каждого изображения в стиль каждого контрола, можно использовать изображения по ссылке. Чтобы их использовать, нужно их зарегистрировать в среде IDE RAD Studio. Это делает вот этот пакет: RAD Studio XE5 - FMX Style Objects.zip RAD Studio XE6 - FMX Style Objects (XE6).zip После установки пакета в палитре инструментов появится вкладка "Style Object", в которой будут находится все служебные стилевые объекты среды RAD Studio XE5. Список добавляемых стилевых объектов: TStyleObject - Использование изображения по ссылке на оригинал и области в этом изображении. Не загружает повторно объект. TSubImage - Использование изображения по ссылке на оригинал и области в этом изображении. Не загружает повторно объект. TActiveStyleObject - Объект для смены одного изображения на другое с указанным типом анимации и указанным триггером. TTabStyleObject - специальный объект для быстрого создания стиля вкладки TTabControl TCheckStyleObject - специальный упрощенный объект для создания стиля TCheckBox TButtonStyleObject - упрощенный объект стиля кнопки с поддержкой загрузки отдельных изображений на каждое состоянии кнопки (нормальное, фокус, под мышкой, нажатое) TSystemButtonObject - стиль системной кнопки. То же, что и TButtonStyleObject, только с дополнительным состоянием - неактивная кнопка TStyleTextObject - объект для быстрого создания стиля текст с тенью. TStyleTextAnimation - объект анимации для смены цвета и тени текста TActiveStyleTextObject - объект стиля для создания текста с тенью и переключению цвета текста и тени на другой по анимации и триггеру. TTabStyleTextObject - объект стиля для создания вкладки с текстом для TTabControl. TButtonStyleTextObject - объект стиля для создания стиля кнопки с текстом. TActiveOpacityObject - объект для смены прозрачности контрола. TBrushObject - объект хранящий кисть TBrush TBitmapObject - объект хранящий изображение TBitmap TFontObject - хранение шрифта TFont TPathObject - хранение SVG пути TPath TColorObject - хранение цвета TAlphaColor
  2. Добрый день, Есть несколько способов реализовать это: 1. Свойство TEdit.ReadOnly. Когда появляется Layout, мы устанавливаем свойство ReadOnly в True Edit.ReadOnly := True По скрытию Layout, обратно сбрасываем свойство ReadOnly: Edit.ReadOnly := False Дополнительно можно скрыть каретку в TEdit путем сброса фокуса: Edit.ResetFocus; Такой способ хорош, когда нужно запретить ввод только в контролы, построенные на базе TEdit. Потому что не все контролы имеют свойство ReadOnly. 2. Вручную поставить фильтр на вводимые символы в любой контрол. Для этого определяем обработчик для TControl.OnKeyDown, который вещаем на все контролы, в которые вы хотите запретить ввод. В обработчике сбрасываем коды символов, если текущий режим не разрешает ввод. В моем примере я обозначил это переменной InputAllowed procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if not InputAllowed then begin Key := 0; KeyChar := #0; end; end; Этот способ лучше тем, что этот обработчик можно повесить на любой контрол и тем самым разом полностью заблокировать ввод символов. Однако, если вам нужно в некоторых контролах выполнять дополнительные действия, то придется создавать отдельные обработчики. Все зависит от вашей задачи. Более простых решений в одну-две строчки нет.
  3. Это устаревшее руководство, так как дизайнер стилей уже давно поменялся. Но все же, Под "Create Style Panel" панелью понимается в данном случае панель под деревом объектов стиля. К сожалению у меня сейчас нету вашей версии, чтобы показать вам ее, но она находится строго под деревом. Туда бросаете компонент, который будет взят за основу. И после он появится в дереве стилей. В новых версия среды, начиная с XE4, поменялся дизайнер стилей. И чтобы создать новый стиль, нужно перетащить контрол с палитры компонентов "Tool Palette" в "Structure". В новых версия также все создание стиля идет на панели Structure
  4. Завтра посмотрю ваше решение получше. Пока бегло нашел, что шрифт жирный или курсив надо запрашивать у менеджера шрифта через NSFontManager.fontWithFamily:traits:weight:size Ссылка на Apple Developer Ссылка StackOverflow Еще можно оформить ваше решение как сервис, тогда его можно будет легко использовать в других местах без использования директив условной компиляции.
  5. Возможно. Для этого нужно две вещи: Иметь опубликованное свойство триггера (published) Инициировать запуск триггера можно командами: procedure StartTriggerAnimation(const AInstance: TFmxObject; const ATrigger: string); procedure StartTriggerAnimationWait(const AInstance: TFmxObject; const ATrigger: string); procedure ApplyTriggerEffect(const AInstance: TFmxObject; const ATrigger: string); Метод выбирается в зависимости от того, что должен триггер стартовать: анимацию или эффекты переходов (Transition Effects).
  6. На текущий момент нету кроссплатформенной реализации TFontDialog. Пока единственное решение использовать по отдельности WinApi и OSXApi для использования стандартных диалогов.
  7. Проверил в XE6 бета ошибка на сниппете не воспроизводится. Видимо QC уже исправили.
  8. Delphi так и будет Делфи. А Object Pascal - это по сути название языка Делфи для мобильных платформ. Поскольку у него был немного изменен синтаксис по ряду вещей. Можете спокойно продолжать использовать название Делфи :-)
  9. Официальный проект с примерами для Embarcadero RAD Studio XE6 (Delphi и C++) по всем библиотекам Delphi. Ссылка на OpenSource проект: http://sourceforge.n...radstudiodemos/
  10. Посмотрите пример ControlsDemo, внизу есть кнопка, которая переводит интерфейс в 3D и крутит его. После возвращения переводит его обратно в 2D. Да и обратите внимание на отсутствие мерцания.
  11. Можно сделать так: Делаем поворот TTabControl на от 0 до 90 градусов, чтобы он повернулся к пользователю ребром. По окончании первой анимации меняем активную вкладку в TTabControl. Делаем поворот TTabControl еще на 90 градусов от 270 до 360. В итоге TTabControl поворачивается к нам уже новой вкладкой. Видео эффекта в действии: Проект: TTabControl_3DRotationDemo.zip
  12. Рабочее решение, сбросить HitTest в False для слоев. Они перехватывают события. Для 3D объектов BringToFront и BringToBack не работают так, как вы ожидаете. Поскольку у 3D объектов это положение зависит от точки наблюдения. Вместо этого в вашем случае нужно использовать ось Z. Зачем для 2D интерфейса использовать 3D форму? Это не оправдано. Отмечу, что выбор использования 2D или 3D формы зависит от вашего варианта использования. Например: 2D форма. Когда преобладающая часть контролов - это 2D контролы. Чтобы использовать 3D объекты, используйте встроенные TViewPort3D. Если нужны 3D эффекты в редких случаях, то проще на момент создания эффекта добавить в корень формы TViewPort3D с TLayer3D, затем перенести туда все ваши контролы. выполнить эффекты и восстановить обратно. В этом случае не будет и проблем с нажатием в 3D форме. 3D форма. Все тоже, что и в 2D форме только со знаком минус.
  13. Решение Полностью перезагрузить устройство. Еще в интернете были скрипты для автоматического удаления старого процесса отладки на вашем устройстве перед новым запуском.
  14. Чтобы все формальности были соблюдены: Нарушение правил публикации отклонений от ожидаемых - 2, 5, 7 и общих правил публикации сообщений на форуме - III-3, III-5
  15. Надо начать с того, что воспользоваться отладчиком и посмотреть, что в вашем коде не правильно написано. Попробовав собрать ваш проект, я сразу наткнулся: Код не собирается. Ошибка компиляции. Строка 331. Вместо разницы целочисленных переменных вы берете разницу объектов Label. После правки пункта 1. Неправильно указаны в настройках деплоймента деплой вашей базы данных. Падает с исключением. Не возможно открыть базу данных. После правки пункта 2. Новая ошибка. В вашей базе данных нету таблицы "list_rebus". Я бы мог продолжить тратить свое время и заниматься исправлением ошибок вашего проекта. Но считаю, что это время вы можете потратить самостоятельно без меня. По крайней мере программист должен уметь, как исправлять свои ошибки, так и грамотно оформлять и детально описывать проблему, с которой он столкнулся. P.S. Просьба, свои личные приложения и ошибки отлаживать и исправлять самостоятельно. Так же настоятельно рекомендую прочитать Правила публикации отклонений от ожидаемого. И обратить ваше внимание на тот факт, что если у вас есть ошибка, то ее нужно продемонстрировать на чистом рабочем! проекте. А не писать сообщения общего вида: у меня есть приложение и ошибки, помогите мне их исправить. На этом тему закрываю.
  16. Нет Можно использовать два TFloatAnimation для двух объектов. Таймер использовать не надо. Один аниматор анимирует одной свойство у одного объекта (родительского)
  17. Morfi, когда вы меняете режим WrapMode на TImageWrapMode.iwStretch, по сути вы теряете качество изображения. По скольку, судя по описанному поведению, на вашем устройстве логический пиксель не соответствует физическому. А значит, картинка физически у вас имеет размер 256 на 256. А в логических координатах меньше. Потому что на вашем устройстве коэффициент масштабирования отличается от 1. Поэтому на экране с повышенной плотностью точек, 256 будет реально меньше, чем размер вашего TImage. Решение: нужно сделать несколько вариантов карты под экраны с разной плотностью пикселей. Прочитайте статьи по ссылкам Андрея. + дополнительно прочитайте статью на Android SDK - Iconography
  18. Если задача стоит просто изменить стандартный платформенный стиль. То, чтобы измененный стиль не занимал дополнительное место в приложении, нужно им заменить стандартный. Я писал давно статью на эту тему тут: FMX 2.0. Глобальная замена платформенного стиля по умолчанию без TStyleBook Идея простая, заменить ресурс стандартного стиля на ваш. Дополнение для названия ресурсов в приложении. Вначале указано название ресурса в приложении, затем платформа iphonestyle - iPhone iOS < 7.0 ipadstyle - iPad iOS < 7.0 iphonepadstyle_Modern - iOS >= 7.0 androidstyle - Android win7style - WIndows 7 win8style - Windows 8 lionstyle - OSX Если же вы создаете новые стили (кастомный стиль итемов и тд), то их нужно грузить обычным способом через стиль бук. И поскольку они новые, ваши, то они включаются в ресурсы формы и увеличивают размер приложения.
  19. Плыть в направлении использования TTextLayout. При отключении Direct2D канвы, включается по дефолту GDI+, в которой нету поддержки атрибутов. О чем указано в официальной документации. Однако, вы можете применять TTextLaoyut не в целом ко всему текстом с атрибутами, а к частям, имеющим одинаковый цвет и стиль. То есть получаете размеры каждой части в заданных настройках текста, а затем по очереди выводи эти части.
  20. Добрый день. Увы нет. Для каждого типа можно написать только один хелпер, поэтому если вы определяете новый, то он заменяет существующий. На текущий момент придется копировать все реализации. Либо управлять видимостью хелперов через скоп. То есть вы можете иметь свой хелпер, и использовать его локально в своих юнитах. А в тех юнитах, где нужно использовать стандартные хелперы использовать их. Ссылка на документацию: Class and Record Helpers (Delphi) Спасибо.
×
×
  • Создать...