Delphi programming blog
Источник: http://teran.karelia.pro/articles/item_5618.html
 

Delphi XE3 Metropolis UI и другое

Опубликовано 09.09.2012 г. 13:25

Почти все уже отписались по поводу выхода новой линейки средств разработки Embarcadero RAD Studio XE3. Я тоже в итоге установил trial версию, чего вообще говоря делать не хотелось, т.к. в ней нет исходников, и в дальнейшем ее придется переустанавливать.

 Среди новинок - обновленный FireMonkey2, визуальная работа с LiveBindings, а также поддержка Metropolis UI для VCL и FireMonkey. Последнее для меня было почему то наиболее интересным, так что первым делом я создал новый проект Metropolis UI VCL Application. В помощнике выбрал Blank Application. Взору моему предстала пустая форма непонятных размеров 1715х1190, с отключенными границами и заголовком. Не ясно, чем вызван такой размер формы, ибо разрешение экрана у меня 1650x1080.  На форме располагается панель всплывающего нижнего меню AppBar : TPanel с кнопкой закрытия в виде TImage. После изменения размеров формы (на кой она такая большая если на ней ничего нет) сразу же выяснилось что Align нижней панели установлен в alNone, так что она сразу же осталась где-то за пределами формы. Кхм-кхм, подумал я. В общем и целом это оказалось обычным VCL приложением, о каком то формировании интерфейса с помощью XAML речи не идет. При запуске получаем полноэкранное приожение, в виде черной/темной формы и вплывающим при нажатии Esc нижней панели с кнопкой закрытия. При просмотре исходного кода проекта, видно что позиция и размер панели изменяется при помощи явного задания размеров в FormResizе, что опять наталкивает на мысль, почему не Align=alBottom? Для поддержки Metropolis UI раелизованы несколько VCL стилей.

Следующим шагом создаю Metropolis UI Grid Application. Опять перед глазама необъятных размеров форма 2522х1261, но в данном  случае это понятно ибо данный тип приложений подразумевает использование горизонтальной прокрутки. На форме представлены три группы элементов, каждый элемент состоит из комбинации панелей TPanel, изображения TImage и меток TLabel. И где же черт возьми фреймы, напрашивается вопрос. Реализация опять показалась странной. Каркас данного приложения состоит из двух форм, первая показывает группы элементов, а при клике в какой либо из них показывается форма подробной информации.

Следующий тип приложений - Metropolis UI Split Application. На главной форме находится одна группа элементов, подробная форма слева отображает список элементов группы, а справа подробности. Для отображения списка используется TGridPanel (первый раз этот компоненет увидел(: ).

Еще одна вещь касающаяся Metro UI - конвертация обычного VCL приложения в Metropolis. Берем обычное VCL приложение, добавляем на форму какие-нибудь стандартные элементы, а затем в контекстном меню выбираем пукт Convert to Metropolis UI. Это действие изменяет размер элементов, убирает границу окна и т.п., настривает шрифты в соответствии в рекомендациями MS по разработке Metro UI, открывается окно выбора стилей, где мы выбираем, например, Metropolis UI Black. Результат получается следующий:

В общем впечатление двоякое. Изначально еще из аноносов было ясно, что Metropolis будет именно "look like Windows 8 Metro UI". C другой стороны мы видим хороший пример того, как с помощью простого использования стилей можно создавать современной выглядящие приложения. Вообще хотелось конечно видеть какой-то набор компонентов для реализации Metro, хотя бы чтобы данное приложение строилось не на обычном TForm, а реализации какого то наследника с уже подготовленным функционалом, например, той же всплывающей панели с кнопкой закрытия; компонентов для показа всплывающих подсказок, и т.п. Так что, получается никакого отдельного вида "Metropolis UI Application"  и нет. Есть набор стилей, а остальное за вами. Шаблоны создаваемых приложений больше подходят на Samples, чем на каркас нового приложения. Предполагается ведь, что все элемнеты будут динамичными, дак на кой надо рисовать их все в статике тогда? чтобы я создав новое приложение, потом все удалил?

В чем собвественно еще один плюс - приложения можно запускать не только в Windows 8, но и в любой Windows среде. Для интеграции непосредственно с Windows 8 предусмотрен компонент TLiveTile, с помощью которого можно отображать плитки на экране старта Win 8. Но и здесь все не так хорошо как хотелось бы, подробностей не знаю, но вроде как нельзя отобразить плитку для экрана Win8, используя сторонние средства разработки. Embarcadero этот вопрос, судя по форумам, пытается решить, а пока что нам предполгаетеся для работы системная служба, видимо написанная в Visual Studio. Тут надо полагать, VCL/FMX Metropolis приложение с этой службой общается, и просит ее вставить нужную плитку на экран. Служба же обратно вещает о действиях пользователя. А может все и не так. Для настройки плитки есть порядка десятка заготовленных шаблонов, что надо признать, весьма удобно. Так что будем изучать раздел справки Developing Metropolis UI Applications.

Стоит сказать, что в FMX поддержка Metropolis как-то более существенная. Там и отдельные заготовленные компоненты есть и т.п., например в каркасе FireMonkey Metropolis UI Grid App можно увидеть элементы списка TMetropolisUIListboxItem. Доступны стилизованные поля ввода с заготовленными кнопками паролей и т.п., индикатор анимации выглядит как родной в Win 8 Metro.

Что касается нового FireMonkey, то попробовал перекомилировать в нем проект MyShows. Сходу не получилось. Работа с гридами поменялась, заполнение теперь происходит как-то по-другому. Надо изучать вопрос. Странно как то, при запуске приложения выскакивают ошибки что свойство TabOrder отсутствует. Такие ошибки обычно должны выплывать при самом открытии формы в IDE, но нет, та молчит. Видимо свойство придется удалять вручную из файлов формы .fmx.  Анимация верхнего меню тупить стала меньше, но все равно тупит (: мб я что то там неправильно сделал? (:

 Что касатеся других новшеств, которые не так широко афишированы, то весьма интересным является введение хэлперов/помощников для простых типов данных. Странно, что об этом ни слова нет в "Whats new". Повторяться  не буду, ибо про этот функционал уже не раз писали в блогах. Я же посмотрел на изменние в составе файлов winapi.*.dcu:

  1. WinApi.FunctionDiscrovery заголовочный файл для FunctionDiscovery API, я как то и сам пробовал его переписать, когда ковырялся с DLNA, далеко это не ушло. Интерфейсы предназначены для поиска устройств по функциональным возможностям.
  2. WinApi.LocationAPI - Интерфейсы для определения местоположения, API введен в Win 7.
  3. Вероятно от winapi.msxml отделен winapi.msxmlintf.
  4. WinApi.PenInputPanel - нечто для поддержки перьевого ввода, и отображения панели для рукописного ввода пером.
  5. Winapi.Portabledevicetypes
  6. WinApi.Sensors и WinApi.SensorsAPI - интерфейсы для работы с датчиками, в том числе для местоположения
  7. WinApi.UserEnv - заголовочный файл дл userenv.dll
  8. Winapi.Wbem - судя по названию - работа с WMI. 

Хотелось увидеть в этом списке Windows Ainmation но нет его. А еще хотелось увидеть обновленный D2D1 с поддержкой эффектов Windows 8 и т.п., но тоже все по старому (вообще в 8ке работа с D2D немного поменяется, там и сам RenderTarget вроде на что-то заменен). В общем опять пишем все сами (:

Как итог, Metropolis сам по себе (как дизайн интерфейса)  -  штука интересная. У меня есть план написать клиент для сервиса Instagram.com, который  я уже начал осуществлять. Вероятно это приложение я попробую сделать с помощью Metropolis UI, во только не знаю VCL или FMX.

Метки:  Metropolis UI 

Комментарии

Алексей
09.09.2012 в 15:07
Забавно, вы пишите про Metropolis UI в Windows 8, когда у существенного процента пользователей стоит WinXP(и даже ВИСТА). Не рано ли? От момента появления W8 до момента её использования большинством юзеров пройдет, ИМХО, около года.
teran
09.09.2012 в 16:39
про пользователей вы правы, но мы то - разработчики, нам нужно знать все раньше, чтобы через год уже были готовые функциональные продукты.
deksden
11.09.2012 в 15:50
Ничего не мешает запускать VCL/FMX приложение в более старых версиях Windows - возможно, даже начиная с XP!

Просто не будет LiveTile, но это не большая потеря!))
Александр
09.09.2012 в 22:11
Win8 - мобильная ОС (планшеты, моноблоки с тачем и т.п.). XP/7 - десктопные оси. Короче говоря, Win8 будет существовать параллельно с Xp/7, это не прямая эволюция.
teran
10.09.2012 в 10:56
Алекс, тут я с тобой не соглашусь. Мобильная тут скорее не сама система, а Metro интерфейс, более приспособленный к жестам и касаниям. Для планшетов будет ветка Win RT, компилятор которой я так понимаю и надо ожидать в Mobile Studio.
deksden
11.09.2012 в 15:52
Nope! Win8 содержит дополнительный компонент в виде Modern UI (ex-Metro), который ориентирован на touch-планшеты. Этот компонент - главный, и прекрасно работает на любых устройствах.

А вот как раз legacy Win32 приложения с Desktop работают не везде (Win8 RT на ARM их не поддерживает). Так что это именно развитие - возможно, местами революционное вместо эволюционного (в части отказа от кнопки Пуск и перехода на этот стартовый экран).
Всеволод Леонов
10.09.2012 в 10:38
Хорошо, понравилось!
Не согласен только с одним пассажем, типа "накой мне эти шаблоны"?
Это - для того, чтобы люди вникали в W'8 с точки зрения реализации на Delphi. Естественно, это есть некие "заглушки". Примерно то же самое было и в Borland C++ 4, когда можно было авто-сгенерить прототип текстового редактора. Вроде и не за чем, но просто давало людям понять, что такое "виндовое" приложение (меню, тулбары, модальные диалоги и т.д.).
teran
10.09.2012 в 10:23
Всеволод,
шаблоны эти не то чтобы "на кой", просто гораздо интересней было бы увидеть как то помощник. Например, конвертим VCL форму в Metropolis UI, в итоге открывается окно выбора стилей.
а тут, создаем Metropolis приложение, форма создалась все окей, и тут бы показать помощник по созданию групп и элементов. И дальше ты либо создаешь вручную их, либо отказываешься, и имеешь чистый шаблон. Вот это бы было имхо удобней.
Роман Янковский
10.09.2012 в 15:37
На сколько я понял, это не настоящий Metropolis, а стилизация под него. Мне не очень понятна целевая аудотория таких приложений.
teran
10.09.2012 в 17:44

имхо выходит (с точки зрения обывателя) Metro это именно интерфейс со своей концепцией и Design Guide. Как именно этот интерфейс реализуется задача уже вторая. Подход RAD Studio XE3 - использование стилей. В принципе имеет право на жизнь. Но есть и другой вариант - использование XAML для описания интерфейса. В мсдн есть примеры для C++: http://msdn.microsoft.com/en-US/library/windows/apps/hh699871 А сами приложения будут удобны для планшетов в основном.

generic cialis
25.02.2018 в 10:33
I do trust all the concepts you have presented in your post.
They are really convincing and will certainly
work. Still, the posts are too quick for starters.

Could you please prolong them a little from subsequent time?
Thanks for the post.
Absolutely composed subject material, Really enjoyed studying.
- Имя
- e-mail*
- Сайт
вы можете использовать теги [i],[b],[code],[quote]
Дополнительно