FireMonkey. Что почитать и посмотреть? Firemonkey книги


FireMonkey. Что почитать и посмотреть?

Что такое FireMonkey?

Вышедшая в сентябре прошлого Delphi XE2 содержит рекордное количество нововведений. Краткие обзоры возможностей Delphi XE2 уже публиковались на Хабре. Но, очевидно, самым ярким новшеством стала платформа FireMonkey, и здесь я хотел бы уделить немного внимания именно ей. Я сделал небольшую подборку ссылок на материалы, которые, как я надеюсь, помогут вам составить более-менее адекватное представление об этой платформе. Но прежде, для тех, кто не в курсе, я вкратце расскажу, что же такое FireMonkey.Embarcadero Technologies позиционирует FireMonkey как платформу для создания полнофункциональных бизнес-приложений для Windows, Mac и iOS. При этом данная платформа является нативной для каждой из ОС, т.е. при работе приложения, созданного с помощью FireMonkey, не используется ни каких дополнительных надстроек. FireMonkey привязывается непосредственно к нативной (с точки зрения ОС) графической библиотеке, такой как OpenGL или DirectX. Таким образом, предлагается наилучшее решение с точки зрения GPU. Ядро FireMonkey архитектуры представляет собой мощную библиотеку классов (в том числе визуальных компонентов). Целевая платформа выбирается в процессе компиляции.Первая версия FireMonkey поддерживает только Win32, Win64, MacOSX и iOS, в будущем Embarcadero планирует портировать её на несколько других платформ.

Что стоит учитывать?

Несмотря на то, что платформа FireMonkey предоставляет обширный инструментарий для разработки 3D приложений, ее нельзя рассматривать как игровой движок. FireMonkey позиционируется именно как платформа для разработки бизнес-приложений. Сейчас продукт находится в начальной стадии своей эволюции. И многие функциональные возможности FireMonkey претерпевают изменения, как качественные, так и количественные.

Что почитать?

Я надеюсь, что ссылки, приведенные ниже, помогут разобраться с основными возможностями новой платформы.Официальная страница продукта на сайте Embarcadero (рус.)

FireMonkey Quick Start Guide — наглядная презентация на английском.Официальная документация по FireMonkey в формате wiki.

FireMonkey FAQ (англ.)

Марко Канту "Откройте для себя FireMonkey, платформу для создания бизнес-приложений следующего поколения" (англ., документ в формате .pdf):

Перевод публикации Марко Канту "Откройте для себя FireMonkey, платформу для создания бизнес-приложений следующего поколения". (не полный)

Полезные советы при работе с FireMonkey (англ.)

Серия постов Всеволода Леонова (Embarcadero)

Цикл статей «FireMonkey от простого к сложному». (рус.)

Серия постов «FireMonkey на практике», посвященная 3D возможностям платформы (рус.).

Еще одна серия постов о 3D в FireMonkey (рус.).

FireMonkey. Tips & Tricks (рус.)

Философские размышления на тему FireMonkey. FireMonkey для разработчиков компонентов. (рус.)

Среди англоязычного материала хотелось бы выделить серию технических постов австралийских блоггеров (англ.)

Что посмотреть?

Что касается последней версии Delphi, то видеоматериала, посвященного возможностям продукта и приемам работы с ним, как никогда много. Как официального, от Embarcadero, так и от независимых разработчиков. На YouTube очень много видео о FireMonkey, вы просто можете воспользоваться поиском. Среди этого обилия материала выделю серию из трех роликов от Марко Канту — RAD in Action landing page.

Что действительно радует, так это появление роликов на русском:Запись вебинаров «Инициализация FireMonkey» и "Стили FireMonkey” с Евгением Крюковым.Рекомендую к просмотру. Евгений Крюков — идеолог и ведущий разработчик FireMonkey, в беседе с Всеволодом Леоновым «на пальцах» объясняет общие принципы работы FireMonkey.

Как программировать 3D с использованием FireMonkey — красивый постановочный ролик от Всеволода Леонова. И еще один его же ролик про анимацию.

Конкурс

Если вы решились посмотреть и попробовать поработать с FireMonkey, Embarcadero и сайт DelphiFeeds.ru (агрегатор русскоязычных Delphi блогов) придумали для вас стимул в виде конкурса. Вы можете написать не сложное FireMonkey приложение и получить один из призов, таким образом, придав своим изысканиям вектор полезности.

Автор: alexbozhko

www.pvsm.ru

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

Сегодня страничка «Видео» блога webdelphi.ru пополнилась ещё двумя роликами, которые касаются работы с FireMonkey в Delphi XE2. В принципе, после просмотра этих роликов я и решил познакомиться с FireMonkey, оценить возможности применения этой платформы в каких-то своих приложениях и т.д.

И первое, что вспомнилось буквально после 10-15 минут работы над FireMonkey HD Application — это WPF (Windows Presentation Foundation). Некоторое время назад (примерно с полгода назад) я представлял Вам «Доклад с «вражеской» территории» в котором делал некоторые свои выводы по части C#. Так вот, прежде чем писать тот пост я первым делом написал маленькое простенькое приложение в двух вариантах в одном из которых познакомился чуть-чуть с WPF. Вот сегодня WPF мне и вспомнился при работе c FireMonkey. И пусть меня простят сторонники WPF, но FireMonkey лично для меня показалась более простой и удобной использовании. Есть, конечно, и проблемы, но о проблемах мы ещё поговорить успеем, а пока просто познакомимся с тем, какие возможности открываются перед нами при использовании FireMonkey. 

В принципе о том, что FireMonkey — это потомок библиотеки VGScene от KSDev, думаю, многие уже знают. Если нет, то можете почитать сообщение на сайте KSDev где сообщается о том, что интеллектуальная собственность KSDev приобретена Embarcadero. Что тут можно сказать? Наверное то, что я искренне рад тому, что разработки нашего соотечественника нашли такое мощное применение в Embarcadero и были воплощены в виде FireMonkey.

Что касается Delphi XE2, то теперь помимо простых приложений VCL Application нам стали доступны следующие виды приложений:

  • FireMonkey HD Application — 2D-приложение
  • FireMonkey 3D Application  — приложение с 3D-графикой
  • FireMonkey HD iOS Application — 2D-приложение приложение для iOS
  • FireMonkey 3D iOS Application — 3D-приложение приложение для iOS

Следуя простому правилу «Не знаешь как работать с 2D-графикой — не суйся в 3D» я решил вначале посмотреть, что представляет из себя HD Application. А раз у меня нет iPad’а (я на него только коплю =)), то приложение будем создавать для Windows.

Итак, запускаем Delphi XE2, создаем новый проект: «File -> New -> FireMonkey HD Application«. Всё, что можно заметить сразу после создания нового проекта — это немного изменившийся вид главного окна в дизайнере и, на первый взгляд, чуть-чуть другой состав палитры компонентов. То есть при создании VCL Application IDE выглядит так:

А при создании FireMonkey HD Application — вот так: Но это только на первый взгляд. В действительности же все намного сложнее, если копать глубже. Например, если посмотреть модуль в котором содержится класс TButton для VCL-приложения, то мы увидим Vcl.StdCtrls (или просто StdCtrls для Delphi XE и ниже), а описание того же TButton для FireMonkey содержится уже в FMX.Controls. И всё, что роднит две казалось бы одинаковые кнопки — это только родительский класс TComponent — дальше всё другое. И эти отличия Вы почувствуете сразу же как только бросите кнопку на форму и посмотрите в Object Inspector.

FireMonkey по сравнению со старой доброй VCL дает нам на порядок больше возможностей для разработки красивых интерфейсов, создания анимации и т.д.

Вот, к примеру, возьмем туже кнопку TButton и прикинем сколько нам надо написать кода, чтобы при наведении курсора мыши на кнопку она меняла свою высоту, а после того как курсор будет убран высота бы возвращалась к своему первоначальному значению и при этом анимация была бы плавной, с небольшой задержкой? Задача, на самом деле простенькая, но как говориться,  «время — деньги» и хотелось бы сделать такую анимацию максимально быстро. С FireMonkey для решения этой задачи Вам даже не придется писать для этого какой-либо код — всё можно сделать, используя Object Inspector. Смотрите.

1 . Бросаем на форму кнопку TButton.

2. Переходим в Object Inspector и находим свойство Height. Можете заметить, что по-мимо того, что рядом с этим свойством появился новый значок, показывающий, что для свойства можно определить какой-либо эффект, также в Object Inspector’e появился и список выбора в котором можно выбрать вид анимации:

3. Выбираем в списке первый тип анимации — «Create New TFloatAnimation» и задаем в Object Inspector следующие значения свойств анимации:
  • Duration = 0,5
  • Enabled = True
  • Inverse = True
  • StartValue = 22
  • StopValue = 50
  • Trigger = IsMouseOver=true
  • TriggerInverse = IsMouseOver=false

4. Жмем F9 и любуемся только что созданной анимацией. При наведении курсора мыши на кнопку высота кнопки плавно изменяется пока не достигнет значения 50 пикселей, а после того как курсор убран высота кнопки с той же задержкой возвращается в первоначальное значение. И никакого кода. В запущенном приложение кнопка будет вести себя вот так:

[youtube_sc url=http://www.youtube.com/watch?v=A74FiF97B-U width=400 rel=0 fs=1]

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

Во-первых, стоит отметить, что все элементы управления в FireMonkey (FMX) — это контейнеры, т.е. в любой компонент FMX можно встроить другой. И эту особенность FireMonkey Вы могли легко заметить, когда создавали свою «живую» кнопку:

Здесь мы создали для TButton новый дочерний компонент — анимацию. Никто вам не запретит, если захотите, взять и встроить в кнопку TButton вторую надпись в виде TLabel или хоть TPaenel. Такая вот интересная особенность.

Во-вторых, что касается свойств анимации. Для анимации TFloatAnimation можно использовать следующие свойства:

  • AnimationType — определяет тип воспроизведения анимации.
  • AutoReverse — определяет будет ли анимация воспроизводится автоматически в обратную сторону, когда значение свойства достигнет своего конечного значения (StopValue)
  • Delay — задержка в секундах после которой начнется воспроизведение анимации
  • Duration — продолжительность анимации в секундах.
  • Interpolation — тип интерполяции, используемой для расчёта промежуточных значений свойства. Для простых анимаций достаточно линейной интерполяции (itLinear)
  • Inverse — определяет будет ли анимация воспроизводиться в обратном направлении
  • Loop — определяет будет ли анимация зациклена.
  • PropertyName — имя свойства для которого применяется анимация
  • StartFromCurrent — определяет будет ли анимация воспроизводиться с текущего значения свойства или от заданного в StartValue
  • StartValue и StopValue — начальное и конечное значение свойства.
  • Trigger — событие после которого запустится процесс анимации
  • TriggerInverse — событие после которого анимация пройдет в обратном направлении.

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

[youtube_sc url=http://www.youtube.com/watch?v=Ri8O_Usq1uE width=400 rel=0 fs=1]

Анимацию для цвета я задал зацикленную, т.е. свойство Loop выставлено в значение True, а свойства Trigger и TriggerInverse оставил пустыми.

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

И даже более того — для эффектов Вы также можете создавать различные информации =) В общем возможностей создать красивый и интерфейс приложения — масса.

Ну и в заключении пара слов про стили. Как вы могли заметить, в представленных выше роликах форма приложения выглядит ровно так какой мы её видели в VCL. В Delphi XE2 для приложений VCL Applications стали доступны стили оформления, которые можно настроить, например, выбрав в меню Project — Options — Application — Apperance. Выбор стиля выглядит так:

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

1. Кидаем на форму компонент TStyleBook

2. В свойства формы StyleBook указываем StyleBook1.

3. Дважды кликаем по компоненты в результате чего откроется окно дизайнера:

Чтобы загрузить стиль по умолчанию необходимо нажать кнопку Load Default. Теперь самое интересное. Каждый элемент в дереве стиля определят стиль для какой-либо части компонента. Например, за стиль кнопки отвечает элемент buttonstyle за задний фон элемента — backgroundstyle и т.д.

4. Для цвета формы выбираем в дереве backgroundstyle и в Object Inspector изменяем цвет, например, на красный.

5. Жмем кнопку Apply и смотрим на форму в дизайнере:

    Чтобы указать какому-либо элементу его уникальный стиль, ему необходимо указать значение свойства StyleLookup. К примеру, Вы можете применить тот же стиль backgroundstyle  для кнопки или вообще создать свою уникальную кнопку используя элементы с вкладок Shapes, Layouts, Animations и Effects палитры компонентов.

    Резюмируя все вышесказанное, можно сказать, что FireMonkey — это достаточно удобный фрейморк для создания красивых, информативных и удобных приложений — хотите создавайте элементы управления с анимацией, хотите — с эффетами, которые срабатывают по какому-либо событию, полностью перерисовывайте стиль оформления компонентов и т.д. На ряду с этим FireMonkey достаточно прост в использовании — можно строить красивый интерфейс приложения не написав ни одной строчки кода (хотя никто не запрещает вам, если необходимо — делать тоже самое в коде приложения).

    Не буду лукавить и скажу, что по ходу написания статьи я также столкнулся и с некоторыми проблемами в работе. Например, не всегда удавалось с первого раза открыть дизайнер стиля у TStyleBook. Мелочь, но тем не менее присутствует. Или в случае с анимацией мне так и не удалось повесить нормально на эффект TShadow анимацию TFloatAnimation — вроде бы и срабатывает анимация, но только не по событию, а только в зацикленом режиме. Были найдены и другие проблемы о которых разработчики писали в своих блогах и на форумах. Однако не стоит забывать, что FireMonkey ещё не исполнилось и 1 месяца и, если эта платформа приживется (а я очень на это надеюсь), то в ближайшем будущем мы увидим обновления и платформа станет ещё мощнее и удобнее в использовании.

Все исходники, рассмотренные в статье можно скачать со страницы "Исходники"

www.webdelphi.ru

Программистские заметки на полях: FireMonkey. Начало. Предыстория. Впечатления.

Прошло уже достаточно времени с тех пор, как термин FireMonkey стал более менее знаком, если, и не для всех разработчиков, то хотя бы тех, кто использует Delphi. За это время появились книги по FireMonkey, статьи по FireMonkey, записи про FireMonkey в многочисленных блогах. Читать все это очень интересно. Но ведь никакая теория не заменит практику. И у меня, как и у многих ранее, появился зуд попробовать что-нибудь написать с использованием FireMonkey.

При этом, однако, возникла проблема. Я, почему-то, решил, что надо просто реализовать какой-нибудь не очень сложный рабочий проект.

Чтобы объяснить,почему это оказалось для меня проблемой, потребуется некоторое (так и хочется написать, лирическое) отступление. Экскурс в мое прошлое, как разработчика. Пояснить некоторые сформировавшиеся у меня взгляды на программирование с использованием Delphi.

Надо сказать, что использовать Delphi я начал еще на Windows 3.1, то есть, с первой версии. И с тех самых пор я изучал VCL. Изучал в оригинале, так сказать. Смотрел, обращался, трассировал исходники. Снова и снова.

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

Но вот приходит момент, и я слышу, что VCL - это технология, которая устарела. Технология, которую надо оставить в прошлом. Разработчикам следует все свои новые проекты реализовывать на FireMonkey, а про старые... неплохо бы и их перевести на новые рельсы. FireMonkey везде и всегда. И слышу я это из разных источников. Причем довольно настойчиво. Нет, никто VCL не убивает. он остается с нами. Но он теперь не номер один. Он должен стать дублером. По крайней мере так я понимаю то, что говорится о будущем продукта.

В принципе, я понимаю такой расклад. Взят курс на многоплатформенность, и, что важнее, на кроссплатформенность. Ведь что такое VCL? Visual Component Library. Библиотека визуальных компонентов. С этим можно не соглашаться. Я, например, всегда считал множество невизуальных компонентов, да и не компонентов, а просто классов, неотъемлемой частью VCL, а огромное количество сторонних классов и компонентов - продолжением, расширением VCL. Ну не получается у меня считать наследников TDataset-а не частью VCL. Хотя, например, термин DBExpress Library говорит о том, что это, как бы, не VCL. Видимо, Embarcadero действительно разделяет монолитную, с моей точки зрения, VCL, на некоторое количество отдельных библиотек. Нет, конечно, не совсем отдельных, но, тем не менее. И если принять такую точку зрения, FireMonkey призван заменить именно визуальную часть VCL (как же я все-таки должен называть полную библиотеку классов и компонентов, может, Borland Component Library?).

Вокруг чего построены визуальные компоненты, входящие в библиотеку? Вокруг низкоуровневых, базовых элементов, предоставляемых операционной системой. Дескрипторы окон, шрифты, сами окна, элементы ввода, сообщения, контексты устройств и многое многое другое - это есть не понятия библиотеки, поставляемой с Delphi, а понятия операционной системы. Да, именно, Windows. И если вы хотите построить кроссплатформенную библиотеку, то логично отказаться от той инфраструктуры, которую предлагает операционная система, исполняющая написанную с использованием библиотеки программу.

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

Многие помнят попытку сделать кроссплатформенной не только библиотеку, но и сам Delphi. Параллельно Delphi 6 вышел продукт Kylix и библиотека CLX. Все это было сделано для того, чтобы можно было разрабатывать для Linux. Однако, нет  у Linux многих базовых понятий в плане графического оконного интерфейса, какие есть у Windows. Оконный интерфейс для Linux вообще явление не родное. Это необязательное приложение. И пришлось писать какую-то синтетическую библиотеку. С ее помощью можно было писать программу и для Windows, и для Linux. Однако, я до сих пор помню то чувство не разочарования, нет, скорее, раздражающего неудобства, которое испытал, когда попробовал воспользоваться аналогами визуальных компонентов из CLX. Мне стало много чего не хватать. То, что я привык делать не задумываясь при разработке с использованием VCL, оказалось сделать трудно, совсем по другому, или просто невозможно, с использованием CLX.

Приблизительно также я чувствовал себя и при переходе с BDE на DBExpress. Старый, знакомый еще с Field Test-а BDE (Borland тогда уже использовал его в Quattro Pro for Windows и в Paradox for Windows, и носил он название ODAPI, а затем IDAPI, и был на голову выше, на мой взгляд, майкрософтовского ODBC) был объявлен устаревшей технологией, которая должна уступить место в новых проектах новой библиотеке. Мне все время чего-то не хватало в DBExpress в первое время, особенно знаний.

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

Теперь, наверное, становится немного понятней, почему решение написать с использованием FireMonkey небольшой рабочий проект, принесло некоторое количество проблем. В течении многих лет при разработке проектиков, проектов и проектищ складывается определенный стереотип, некий шаблон того, что и как надо делать. И в моем случае пришлось столкнуться с тем, что шаблон надо менять. Потому, что нельзя перенести все то, к чему привык, используя VCL, в проект, строящийся на FireMonkey.

При старте проекта я испытал некоторое чувство дежавю. А именно, чувство неудобства. Например, нет многих свойств у привычных элементов ввода. Приемчики, которые прочно вошли в практику, основанные на трюках, связанных со знанием каких-то особенностей операционной системы, не проходят в новом контексте. Не говоря уже о том, что некоторые компоненты изменились радикально.

Ну и еще важный нюанс. Какие обычно проекты приходится делать на работе, если она (работа) не связана с написанием компиляторов, систем моделирования или еще чем-нибудь высоконаучным? Я думаю, что для большинства это разработка чего-либо, связанного с использованием баз данных. Причем что-то высоконаучное тоже может пользоваться сервисами, предоставляемыми СУБД.

Вот тут меня ожидала еще одна засада. Почему-то, когда сталкиваешься на практике с тем, что FireMonkey не содержит элементов, ориентированных на работу с данными, хранящимся в БД, оказываешься к этому не совсем готов (мягко говоря). Хотя и читал уже об этом много раз и знаешь (теоретически), чем следует воспользоваться. Речь про Live Bindings.

Я не хочу ввязываться в спор про то, должны ли настоящие крутые программисты использовать db-aware компоненты, или не должны.На практике, начиная новый проект, я оказался перед фактом: надо привыкать и к новым визуальным компонентам и к новому способу извлечения данных для отображения, редактирования и, в конечном счете, сохранения. Что, опять же, не плохо, и не хорошо. Просто для меня получилось именно так.

На этом хочу завершить пост про первые впечатления. На очереди рассказы о том, что и как преодолевалось при работе над проектом.

programmers-marginalia.bozdaganian.com

Поделись с другими!

Вчера Андрей Совцов провёл очень интересный вебинар с участием Ярослава Бровина.  Сейчас Ярослав работает над созданием новой платформы, предназначенной для мобильной разработки. Именно для мобильной. FGX Native.

Поделюсь впечатлениями от увиденного. Сразу оговорюсь, это мои личные впечатления. Возможно я что-то неверно понял или пропустил. Тем. кому интересно рекомендую посмотреть запись вебинара. она должна вскоре появится.

Основная идея FGX Native заключается в создании нативных мобильных приложений. Именно нативных и именно мобильных. FGX приложения используют нативные контролы. Таким образом, приложения, написанные на Delphi избавятся от целого ряда ограничений. Вы сможете создать приложение, которое внешне ничем не будет отличаться от написанного на той же Android Studio. Использование FGX Native для создания настольных приложений не предполагается.

Здесь я позволю себе маленький комментарий. Да действительно, недостаток Firemonkey, в том, что с его помощью создаются мобильные копии десктопных приложений. И на мой взгляд это главный недостаток. Да, многочисленные солюшны и видеоролики рассказывают о том, как делать правильную логику и интерфейсы. Но всё-равно, выходит как в старом анекдоте про Жигули и BMW. Место проклятое… По крайней мере, в моём случае точно

С другой стороны, это же является и главным преимуществом Firemonkey. В случае, когда нужно разработать мобильный клиент как часть некой существующей настольной системы – Firemonkey на высоте. В принципе, для корпоративного сектора ничего другого особо и не нужно. А трудозатраты сокращаются в разы.

Но целый ряд ограничений все же не позволяет делать с помощью Firemonkey всё, что хочется в плане интерфейса.

И здесь сразу возникает множество вопросов, связанных с возможностями нового продукта, состоянием его готовности и перспективами развития. Собственно, в ходе вебинара, который затянулся почти на два часа вместо запланированного часа, Ярослав демонстрировал FGX Native и отвечал на вопросы.

Перескажу вкратце.

Дизайнер форм мне очень понравился. Там реализован принцип Flexbox и выглядит это действительно впечатляюще.

Были продемонстрированы некоторые компоненты. В частности ListView. Насколько я понял, с ним можно работать так же легко как и с ListBox в FireMonkey, но при этом он работает так же шустро как ListView.

было запущено тестовое приложение.

Я еще раз советую посмотреть запись вебинара, лучше один раз увидеть.

Что касается информации о самом продукте (из того, что я запомнил).

  • FGX Native  не использует Firemonkey и является абсолютно независимой платформой.
  • FGX Native не запускаются и не отлаживаются под Windows.
  • Приложения работают довольно быстро, точные замеры будут проводиться позже.
  • Размер приложений меньше чем у приложений Firemonkey. Пока не понятно на сколько. Но не на порядок.
  • Структура классов компонентов приближена к структуре классов аналогичных VCL компонентов. насколько это возможно.
  • Сначала планируется поддержка Android, затем iOS.
  • К лету планируется закрытое бета-тестирование. К осени – релиз.
  • Распространятся будет по подписке. Цена точно не известна, но Ярослав обещает, что она будет демократична.
  • Lazarus поддерживаться не будет.

И всё же, является ли FGX Native конкурентом Firemonkey? Этот вопрос прозвучал напрямую. Ярослав на него ответил.

Я выскажу своё личное мнение. Да! Конечно, в определённой степени является. При чем это хорошо как для конечных пользователей, так и для Embarcadero. Дело даже не в “волшебной руке рынка”. Дело в том, что в Delphi изначально закладывалась концепция расширяемости за счет пользовательских решений. И подобное решение не только стимулирует развитие Firemonkey, но так или иначе способствует популярности Delphi.

Что касается непосредственно FGX Native, – нисколько не сомневаюсь, что у Ярослава получится отличный конкурентоспособный продукт.

P.S.

Чуть позже данный пост будет обновлен ссылками.

Поделись с другими!

delphi2010.ru

Firemonkey. От простого к сложному #1. — Delphi в Internet

С выходом XE2 у владельцев сайтов и блогов, посвященных Delphi появилось масса возможностей для работы над своими проектами. Новая версия Delphi преподнесла нам массу новинок о которых по крупному не сказал разве, что самый ленивый владелец онлайн-ресурса. Кого-то заинтересовала разработка под х64 и он рассказал об этой возможности Delphi XE2 в своем блоге, другого — VCL Styles и он рассмотрел в блоге основные моменты работы со стилями…да мало ли кто и что рассказывал. Но новых, не рассмотренных возможностей, компонентов, модулей всё равно остается огромное количество. И получается такой, если не феномен, то информационный вакуум: вроде бы пишется ежедневно большое количество статей, выкладывается видео, ведутся дискуссии на форумах, а цельной картинки по теме нет.

Вот, например, новая платформа Firemonkey. Про неё рассказывают практически ежедневно, но в основном опять же по-крупному — как создать крутой 3D-эффект, как совместить 2D и 3D и т.д., а основы работы с Firemonkey практически нет. Даже Help Update 3 для RAD Studio особенно не помогает, т.к. через раз вместо полезной информации по компоненту встречаются фразы типа «Embarcadero Technologies does not currently have any additional information. Please help us document this topic by using the Discussion page!«. А с другой стороны (со стороны владельцев онлайн-ресурсов)…с чего начинать выгоднее, лучше, быстрее? Начинать с основ типа «берем мышкой компонент, укладываем на форму, пишем begin/end» вроде бы бесполезно — есть Wiki, какая-никакая справка. Будешь писать сразу про тонкости использования платформы — поймут только профессионалы да и то не все, а только те, кто «в теме». Так с чего начать? Я решил рискнуть и пойти от простого к сложному, чтобы то, о чём я буду рассказывать поняли даже те, кто только-только начинает работать в Delphi. Может получится, а может и заглохнет тема. Посмотрим. Но в любом случае польза, думаю, от такой работы будет как для читателей блога, так и для меня — я ведь тоже только начинаю свое знакомство с Firemonkey.>

Firemonkey — это платформа для разработки визуально привлекательных приложений, использующая возможности графического процессора. Используя эту платформу можно разрабатывать приложения сразу для Mac OS X, Win32,  Win64 и iOS (при компиляции приложений для iOS используется компилятор Free Pascal).

Основные возможности платформы:

  • Кросс-платформенная разработка
  • Использование 2D и 3D графики
  • Мощный движок для работы с векторной графикой
  • Быстрое сглаживание векторной графики в режиме реального времени
  • WYSIWYG дизайнеры и редакторы свойств
  • Расширенный интерфейс GUI-движка (окна, кнопки, текстовые поля, списки и т.д.)
  • Современные стили оформления (skins)
  • Примитивы для 2D-графики, а также встроенный набор кистей, геометрии, и анимаций
  • Расширенный набор анимаций, которые рассчитываются в фоновом потоке с автоматической коррекцией кадров
  • Растровые эффекты (тени, размытия и т.д.)
  • Гибкие схемы и компоновки форм и других элементов управления
  • Использование слоев для форм
  • Поддержка Unicode
  • Работа с JPEG, PNG, TIFF, GIF
  • Поддержка разработки мультиязычных приложений (с использованием компонента TLang).

Естественно, что поддержка мощной графики в приложениях требует и наличие у разработчика под руками не менее мощного «железа». И, даже если у Вас достаточно мощный компьютер, с большим объемом видепамяти, ОЗУ и т.д. всё равно перед началом работы с Firemonkey обновите драйвер видеокарты.

Также следует помнить, что Firemonkey не совместима с VCL (Visual Component Library). Если Вы начинаете разрабатывать приложение с VCL, то не можете использовать компоненты из Firemonkey (FMX) и наоборот. Однако при разработке приложения с Firemonkey Вы можете использовать RTL.

Чтобы понять почему библиотеки FMX и VCL не совместимы в официальной Wiki Вы можете посмотреть вот такую замечательную диаграмму, демонстрирующую то, в каких местах начинаются различия между этими двумя библиотеками: Как видно из диаграммы, общего совсем не много. Даже самый простейший компонент в FMX может очень сильно отличаться от своего аналога в VCL. Кроме того, благодаря поддержки слоев формы и отличной от VCL организации всей структуры библиотеки, в FMX каждый компонент может быть контейнером для другого компонента — можно бросить на кнопку компонент Label и кнопки станет родителем этой метки, можно разместить компоненты в несколько слоев на форме и т.д. Благодаря такой возможности можно создавать самые разнообразные по своей структуре приложения. Ну, а чтобы хотя бы примерно, представить себе, чего можно достичь, используя Firemonkey, можете глянуть вот такой небольшой ролик, автором которого является Всеволод Леонов:

[youtube_sc url=http://www.youtube.com/watch?v=HNucmRk7GaE width=400 rel=0 fs=1]

Этот ролик, конечно же, не раскрывает всех возможностей Firemonkey да и сама платформа не ограничивается исключительно работой с 3D, но  тем не менее Вы можете уже сейчас для себя сделать небольшую заметку на память — то над чем бы вы бились месяцами при использовании VCL в Firemonkey можно сделать за день, а то и за пару часов.

Ну, а теперь, перейдем к самому простому — обзору компонентов, входящих в состав Firemonkey.

При рассмотрении компонентов FMX я не буду касаться детального изучения их свойств и событий так как надеюсь, что Вы по крайней мере знакомы с основными компонентами и их свойствами в VCL. Отмечу лишь то, что бОльшая часть, имеющихся в наличии, компонентов FMX по своему назначению соответствуют одноименным компонентам из VCL. То есть, например, метка TLabel в Firemonkey также как и в VCL используется для вывода какого-либо текста на форме приложения, таймеры типа TTimer — так же как и в VCL отсчитывают заданные интервалы времени (а что ж им ещё делать?) и т.д.  Однако, как я уже сказал выше, FMX отличается от VCL, поэтому, чтобы не нарушать порядок изложения всего материала я начну обзор компонентов вот с чего — рассмотрю те свойства и события компонентов в FMX, которые отсутствуют у их аналогов в VCL и наоборот — покажу какие из свойств компонентов VCL не поддерживаются в FMX. Ну, а после этого уже перейдем непосредственно к тем компонентам, которые можно однозначно определить как «присутствующие только в Firemonkey».

Раздел 1. Компоненты Firemonkey

1. Свойства компонентов в FMX

Свойство AlignЭто свойство, как и ранее, заставляет компонент менять некоторые из своих размеров и положение при изменении размеров компонента-родителя, но в Firemonkey свойство Align теперь имеет тип TAlignLayout,  стало по-богаче и теперь может принимать следующие значения:

alNone — как и ранее, указывает на то, что автоматического позиционирования компонента не происходит.

alTop — компонент заполняет верхнюю часть родителя, сохраняя при этом свою высоту (Height).

alLeft — компонент автоматически растягивается по левой части родителя, сохраняя при этом свою ширину (Width)

alRight — компонент автоматически растягивается по правой части родителя, сохраняя при этом свою ширину (Width)

alBottom — компонент «прижимается» к нижней части компонента-родителя, сохраняя при этом свою высоту (Height)

alMostTop, alMostBottom, alMostLeft, alMostRight — указывают на то, что компонент будет располагаться всегда выше, ниже, левее или правее своих соседей.

alClient — компонент заполняет собой всю доступную клиентскую область родителя.

alContents — компонент растягивается по всему родительскому компоненту, заполняя собой всё пространство, игнорируя при этом позиционирование своих «соседей».

alCenter — компонент выравнивается по центру своего родителя, сохраняя при этом свои линейные размеры (Height и Width) и при изменении размеров компонента-родителя автоматически позиционируется в центр.

alVertCenter — компонент выравнивается вертикально по центру родителя и при этом растягивается по всей доступной ширине компонента-родителя. Доступным для изменения размером остается только высота (Height)

alHorzCenter — как и в случае с alVertCenter компонент позиционируется по центру своего родителя, но при этом занимает всю доступную высоту. Изменяемой остается ширина (Width) компонента.

alHorizontal, alVertical — компонент занимает всю доступную (не занятую другими компонентами) ширину (alHorizontal) или высоту (alVertical) родителя, но при этом, в отличие от alHorzCenter и alVertCenter  не позиционируется по центру.

alScale — расположение во горизонтали и вертикали определяется пользователем, однако при изменении линейных размеров компонент-родителя компонент также изменяет свои размеры.

alFit — аналогично alVertCenter компонент занимает всю доступную ему высоту родителя, но при изменении линейных размеров родителя компонент также изменяет свои размеры, пробуя сохранить заданные пропорции

alFitLeft, alFitRight — компонент «прижимается» к левой или правой части родителя и при изменении размеров компонента-родителя также изменяет свои линейные размеры, сохраняя ранее заданные пропорции.

Как можно видеть из описания всех возможных вариантов свойства Align, это свойство в FMX по функциям похоже сразу два свойства из VCL: Align и Anchors. Поэтому в компонентах, относящихся к FMX отсутствует свойство Anchors.

Свойство DesignVisible: boolean

Так как Firemonkey — это платформа для создания как 2D,так и 3D-приложений, то при создании приложений с достаточно «навороченным» интерфейсом подчас бывает трудно представить себе расположение элементов на форме относительно друг друга, поэтому свойство DesignVisible служит для того, чтобы в режиме Design-Time скрывать как сам компонент для которого изменяется свойство, так и всех его потомков. На рисунке ниже представлена форма с панелькой которая имеет различные значения свойства DesignVisible:

Свойство EnableDragHighlight: boolean

Если это свойство равно True, то при перетаскивании компонента он будет подсвечиваться, как показано на рисунке ниже:

Свойства Height и Width: single

Да, теперь свойства высоты и ширины компонента можно задавать дробными значениями. Благодаря этому в Firemonkey можно плавные анимации различных компонентов на форме.

Свойство Opacity: single

Это свойство используется для задания степени прозрачности компонента и изменяется в пределах от 0 до 1.  На рисунке ниже представлена форма на которой панели (TPanel) имеют различные значения свойства Opacity:

Свойство Position: TPosition

У компонентов FMX вместо свойств Left и Top появилось новое свойство — Position, которое задает расположение элемента по осям (X,Y) на форме, а также его угол поворота (RotationAngle).

На рисунке ниже представлены панели у которых заданы различные значения поля X в Position, но одинаковые значений Y и RotationAngle (10 градусов)

Свойство RotationCenter: TPosition

Свойство RotationCenter задает расположение центра поворота компонента. По умолчанию это свойство имеет значения (X = 0,5; Y=0,5), т.е. оси поворота проходят через центр объекта. На рисунке ниже представлена панель у которой ось поворота вынесена за пределы границ самой панели:

 Свойства StyleLookup и StyleName: string

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

 

Вот пожалуй тот набор свойств компонентов в Firemonkey, к которым в будущем мы будем периодически возвращаться и которые будем использовать в своих приложениях. Сегодня я рассмотрел то, что можно назвать одним словом — «элементарщина», но иногда и без таких элементарных знаний бывает тяжеловато браться за изучение чего-то нового. Мы обязательно продолжим разговор про Firemonkey, т.к. платформа эта достаточно перспективная и интересная. В дальнейшем я планирую всё-таки добраться до вопросов связывания компонентов в FMX через LiveBindings и рассмотреть работу со списками, БД и т.д….лишь бы хватило на всё времени. В общем, оставайтесь с нами — будет интересно =).

Все исходники, рассмотренные в статье можно скачать со страницы "Исходники"

www.webdelphi.ru

Предложил своим студентам попробовать FireMonkey

Программа для V-го курса предусматривает разработку интерактивного приложения с использованием Delphi. Там "многоходовая комбинация", фактически, разработка прототипа информационной системы, на примере которой иллюстрируются реальные задачи. Построение элементов управления по метаданным БД, динамическая компоновка форм из фреймов, загружаемых отдельно, стыковка окон (docking) содержащих представления таблиц на рабочем столе (вкладка, подобно вкладке браузера) и интерактивная установка отношений master-detail меду ними, сохранение и загрузка рабочих столов через фабрики...Много всего, "до октябрьских" точно не уложимся, до Нового Года - у некоторых шансы есть... Подготовительный этап к этой работе занял весь предыдущий семестр: работали над унифицированным представлением метаданных. Но там Delphi практически не было, только Python, XML и SQLite. Ранее для целей построения интерактивного приложения использовался Delphi 2007 и VCL. Сейчас - решил рискнуть, и предложил желающим попробовать создать GUI с использованием FireMonkey (FMX). Бросилось в глаза, что об FMX никто не знал. Печально, но даже аббревиатура VCL знакома единицам. Пришлось кратко остановиться на истории развития Object Pascal в Borland и после него, разработке кроссплатформенного ПО вообще, и  идее "единой базы кода", педалируемой Embarcadero. Мнда... Ну ладно... ;-)

Сразу же пришлось отвечать на вопросы типа "чем это лучше QT" с которым публика знакома лучше, чем с Delphi и VCL. Тут не всё так просто, тем более, что подход QT лично мне намного понятнее. Ну, не просто поверить, что "самописное" воспроизведение элементов управления в среде конкретной ОС окажется проще и стабильнее, чем использование API, предоставляемой самой ОС. Спорно это, за развитием этого, может быть, интересно понаблюдать, но вот принимать в этом участие... Но студентам - можно :-)Посмотрим, что получится. Надеюсь один-два человека рискнут попробовать FMX по моему совету, тем более, что я пообещал в таком случае "креативный плюс".

Ну и, совершенно понятно, была поднята тема "Какую версию Delphi использовать?". Ну и что мне отвечать, господа из разлюбезного Embarcadero? ;-) Бесплатной Express-версии у вас нет, о каких-то послаблениях для студентов от вас я не слышал, вероятно, вы ожидаете, что я пойду к ректору и предложу приобрести "академическую" лицензию (кстати, а такое бывает?), поскольку то, что было куплено несколько лет назад, уже морально устарело? Как вы думаете, господа: куда меня пошлют? И зачем им это надо? И зачем мне вообще нужно это пробивать? - Ах, ну да, ну да... Совсем забыл: мне же не всё равно... :-)

Ok. Предположим, они (Университет) так или иначе, купили лицензии. Ну, например, некие загадочные "академические", о которых я только слышал, но что-то в Google найти их не могу. Наверное, плохо ищу.Но задача-то - сложная. Для её решения двух аудиторных занятий в неделю - недостаточно. Нужно дома работать, экспериментировать, интернет использовать. Недостаточно установленной лицензионно-чистой версии в аудитории. Неужели непонятно?

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

Вот так-то, господа "коммерсанты" из "ведущей IT-компании". Как-то слишком уж по-зимбабвийски вы действуете. Действительно, зачем закапывать зёрна в землю, если их можно съесть прямо сейчас...

namerec.blogspot.com

Delphi XE5-Tokyo разработка под Android: Курсы FireMonkey

Сегодня, я хочу поделиться с вами информацией/мнением о новом проекте «Курсы FireMonkey» от Ярослава Бровина. Проект, как понятно из названия, содержит курсы по FireMonkey фреймворку, думаю, многие ждали чего-то подобного.

Сначала, я приведу некоторую информацию о курсах, а потом уже расскажу о содержательности, уровне необходимых знаний для просмотра и т.д.

Автор курсов - Ярослав Бровин.

  • Delphi – программист с 12 летним стажем
  • Разработчик FireMonkey
  • Создатель форума по FireMonkey – http://fire-monkey.ru
  • Преподаватель с 10 летним стажем
  • Лауреат конкурса педагогических достижений в номинации «Сердце отдаю детям»
  • Награждён нагрудным знаком «За гуманизацию школы»

Описание нового проекта.

Курсы рассчитаны на:

  • Разработчиков, которые начинают использовать FireMonkey.
  • Разработчиков, планирующих использовать стили в своих приложениях.
  • Разработчиков, которые уже использовали стили, но поняли, что это не так просто, как кажется.

Курс:

  • Каждый курс рассматривает только одну большую тему.
  • Публикуемые курсы размещаются в виде видеороликов (1 ролик = 1 урок).
  • Каждый курс включает 1 месяц поддержки от Ярослава в специальной закрытой зоне форума.

Урок:

  • Один видеоролик (урок) длится в среднем 20 минут.
  • Каждый практический урок содержит «Домашнее задание»
  • Видеоролики в большом разрешении и с качественным звуком

Теперь, расскажу о доступном сейчас курсе «FireMonkey стили».

Курс 1. FireMonkey стили Данный курс полностью посвящён теме стилей в FireMonkey. Курс содержит 17 видеоуроков по 10 темам. Курс подходит для любого уровня знаний. Смотрятся уроки очень легко и непринуждённо. Ярослав рассматривает каждую тему очень подробно, рассказывая теорию, показывая практику и объясняя возможные ошибки/подводные камни, которые можно совершить по невнимательности или другим причинам. Очень порадовало наличие «Домашнего задания» в каждом практическом уроке, которое позволяет закрепить пройденный материал, а вкупе с технической поддержкой вы становитесь неуязвимым ;), т.к. в любой момент можете задать вопрос на форуме проекта. Выбранная средняя длительность урока очень удобна, можно посмотреть урок на обеде или в транспорте. Честно говоря, после просмотра нескольких уроков сильно удивился тому, как много моих вопросов отпало само собой. Например, как редактировать растягиваемые области в дизайнере стилей, как правильно создавать стиль для рамки окна, получил информацию по работе со специальными компонентами (TStyleObject и т.п.). Найти столь качественный материал очень сложно, а если говорить про FireMonkey, то невозможно, но всё меняется :)

В общем, советую, этот курс всем, кто мечтал постичь всю мощь стилей в FireMonkey!

delphifmandroid.blogspot.com