Delphi xe2 знакомство с firemonkey

Delphi XE2. Знакомство с FireMonkey. — Delphi в Internet

delphi xe2 знакомство с firemonkey

Речь пойдет о разработке на Delphi для macOS (в девичестве OS X) и Фреймворк FMX появился в Delphi еще в году, в версии Delphi XE2. .. первое знакомство с Delphi + Cocoa оказалось познавательным. Вот сегодня WPF мне и вспомнился при работе c FireMonkey. Что касается Delphi XE2, то теперь помимо простых приложений VCL. Delphi Mac 1 - создание и запуск программы на Delphi Xe2 под MacOs. Автор: Знакомство с FireMonkey. Знакомство с LiveBinding.

Он еще не умер?

  • FireMonkey
  • Delphi XE2. Знакомство с LiveBinding.
  • Delphi XE2. Знакомство с FireMonkey.

Язык X на порядок лучше, а вы ретрограды, неспособные освоить новое! Это и отличная продуктивность, и да, сила привычки, и быстрый компилятор, но самая главная причина лежит совершенно не в сфере технологий. Нам просто нравится писать на Delphi, мы получаем от этого кайф. А когда продукт написан с удовольствием и любовью, он, как правило, хорошо работает.

Так что не будем заниматься религиозной полемикой, а перейдем непосредственно к делу.

Что нового в Embarcadero RAD Studio 10 3 Rio 20181129

Были рассмотрены следующие основные варианты: Переделать всё на Xcode, используя Swift или Objective-C. Переделать бОльшую часть на Xcode с использованием части существующего Delphi-кода в виде динамических библиотек. У каждого варианта, естественно, нашлось много преимуществ и недостатков. Xcode — это полная нативность GUI, отсутствие каких-либо проблем при взаимодействии с операционной системой, масса sample code и библиотек.

RemObjects Elements — также полная нативность GUI, при этом очень близкий к Object Pascal язык, что означает, что существующий код, не связанный с GUI, можно было бы использовать с относительно небольшими изменениями.

delphi xe2 знакомство с firemonkey

Однако, этот инструмент никто из нас на тот момент еще не опробовал. И, наконец, Delphi FMX. Из плюсов — использование существующего отлаженного кода на полную катушку, знакомая среда, но при этом ненативные контролы хотя, как оказалось, это не совсем так, подробнее нижевозможные сложности при взаимодействии с macOS API, и много других сомнений.

Delphi со вкусом Cocoa / Habr

Неспешно посовещавшись и проведя кое-какие тесты, мы, как вы догадались по заголовку этой статьи, остановились на варианте 3то есть Delphi FMX. Уж очень привлекательной была возможность не переписывать значительную часть кода.

И, признаться, уж очень не понравился RemObjects Elements, к которому я изначально склонялся. Итак, выбор сделан, засучили рукава и поехали… Арт-подготовка Часть команды уже как минимум имела опыт тесного общения с macOS и хорошо представляла ее устройство. Часть же была совсем новичками, которым потребовалась теоретическая подготовка.

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

C macOS все несколько сложнее: Дальше вы просто запускаете свою программу, которая тут же начинает работать на Маке. Естественно, ее можно отлаживать ровно так же, как все мы привыкли отлаживать Windows-программы. Надо сказать, что вначале он был крайне глючен, но за эти шесть лет его основательно переписали, заметно снизив количество проблем.

Сейчас это вполне пригодный к использованию набор компонентов, начиная от простейшей TButton и заканчивая grids, listview, и прочими привычными контролами. Поэтому делать на FMX интерфейсы на сегодня вполне реально и комфортно, однако здесь есть некоторые особенности.

Во-первых, FMX-контролы не нативны. Это не обертка вокруг системных контролов, как это сделано в VCL, где, к примеру, TButton — это системный контрол, который рисует Windows, а не Delphi. Тут контролы рисует Delphi, задействовав свой стилевой движок, который использует стиль, соответствующий стилю той версии macOS, на которой запущена программа. Пример диалога на Yosemite Ниже тот же диалог на Mavericks В принципе это работает неплохо, хотя некоторое вещи в стилях приходится подправлять или использовать нативные контролы, о чем ниже.

На это ушло два человеко-дня. Ребеночку фреймворку FMXкак я уже говорил, шесть лет, и несмотря на усилия Embarcadero, он еще не до конца переболел всем, чем. Например, в главном меню приложения событие OnClick срабатывает для всех айтемов, кроме айтемов верхнего уровня.

Или возьмем стандартные диалоги Open и Save. Все это, на мой взгляд, результат слишком слабого тестирования in-house и слишком медленного реагирования Embarcadero на баг-репорты.

Эти болезни лечатся в run-time, без патчинга системных юнитов. Будьте бдительны, не пренебрегайте тестированием, и не забывайте сообщать о багах на quality. Это как раз то, чего нет в стандартных компонентах FMX.

delphi xe2 знакомство с firemonkey

Нужно узнать системную локаль? Узнать размер virtual memory процесса? Все это, естественно, native API. А если что в Delphi не задекларировано, то можно задекларировать, добавить и переделать все что угодно.

delphi xe2 знакомство с firemonkey

Если говорить упрощенно, то Cocoa — это набор классов, что довольно непривычно для тех, кто привык использовать Windows API. Class functions вызываются через волшебное слово OCClass: Эти указатели на объекты нельзя использовать напрямую; указатели представляют из себя то, что называется id в Objective-C, и чтобы преобразовать такой указатель в объект, нужно сделать волшебный Wrap: Если же говорить непосредственно про API не ограничиваясь только Cocoaто он оставляет довольно приятное ощущение.

AutoReverse — определяет будет ли анимация воспроизводится автоматически в обратную сторону, когда значение свойства достигнет своего конечного значения StopValue Delay — задержка в секундах после которой начнется воспроизведение анимации Duration — продолжительность анимации в секундах. Interpolation — тип интерполяции, используемой для расчёта промежуточных значений свойства.

Для простых анимаций достаточно линейной интерполяции itLinear Inverse — определяет будет ли анимация воспроизводиться в обратном направлении Loop — определяет будет ли анимация зациклена. PropertyName — имя свойства для которого применяется анимация StartFromCurrent — определяет будет ли анимация воспроизводиться с текущего значения свойства или от заданного в StartValue StartValue и StopValue — начальное и конечное значение свойства.

FireMonkey. Что это и с чем его едят? - C++ Builder FireMonkey - Киберфорум

Trigger — событие после которого запустится процесс анимации TriggerInverse — событие после которого анимация пройдет в обратном направлении. TFloatAnimation — это самый широко используемый в FireMonkey тип анимации. Достаточно посмотреть на другие свойства элементов управления, поддающиеся анимации, чтобы убедиться в.

Однако этот тип анимации не единственный. На вкладке Animations палитры компонентов Вы можете найти ещё несколько типов анимации для Ваших приложений. Например, можно сделать плавное изменение цвета какого-либо элемента на форме, используя TColorAnimation.

Кроме анимаций Вы также можете применять также для своих элементов на форме различные эффекты типа размытия, тени и. Ну и в заключении пара слов про стили. Как вы могли заметить, в представленных выше роликах форма приложения выглядит ровно так какой мы её видели в VCL. Выбор стиля выглядит так: Так вот, FireMonkey дает намного больше возможностей по изменению стиля приложения, чем при использовании обычной VCL.

В силу того, что каждый элемент в FireMonkey — это контейнер, мы в силах самостоятельно изменить стиль отрисовки любой части элемента — бордюра, заднего фона, выбрать толщину рамки и. Всё это можно сделать, используя, опять же визуальный редактор.

FireMonkey - анимация, шаг 3

Для примера изменим задний фон для формы. Наши бействия будут следующими: Кидаем на форму компонент TStyleBook 2. В свойства формы StyleBook указываем StyleBook1.