Блог Александра Божко
Архивы
Рубрики

Обзоры

Несколько лет назад я искал менее дорогую альтернативу DevExpress’овскому гриду. Собственно, выражение «искал» здесь не вполне уместно. Уже давно в среде Delphi разработчиков известно, что едва ли не единственной альтернативой cxGrid по доступной цене является TDBGridEh. И хотя уже тогда этот грид имел некоторые уникальные «фишки» функционально он всё же уступал более маститому конкуренту. Впрочем, это воспринималось вполне спокойно, поскольку порядки цен были не сопоставимы.

Недавно я вновь столкнулся с подобной проблемой, мне нужен был «продвинутый» грид, совместимый с Delphi 10.1 Berlin. И я снова не стал даже использовать Google. Выбор был очевиден. Всё тот же EhLib Components Pack.

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

Что же из себя представляет последняя версия продукта? Вероятно, воспринимать её в контексте DevExpress уже не уместно. Даже если вы бегло посмотрите на скриншоты, то поймёте, что GridEh реализует практически всё, что можно сделать в cxGrid. Читать далее

БезымянныйНа фоне последних событий а мире Delphi незамеченной осталась книжная новинка. Обучение мобильной разработке на Delphi. Автор книги, наверняка, хорошо  вам знаком. Это Всеволод Леонов. Да, да. Тот самый Всеволод Леонов, который ещё пару лет назад работал в Enbarcadero, проводил вебинары и колесил по всему СНГ, представляя новые продукты компании. Иными словами, компетентность автора сомнений не вызывает. Но отличительной чертой книги, помимо её бесплатности, является то, что она рассчитана на начинающих. Именно то, чего долгое не хватало новичкам для “быстрого старта”. Изначально книга задумывалась, как книга для школьников. Однако, я не скажу, что она совсем уж детская. Студентам и просто начинающим программистам, вероятно, она будет вполне интересна. У меня даже возникла ассоциация с книгами Архангельского.

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

- Сев, привет. Книгу написал?
– Да, Саш, есть такое. Сам от себя не ожидал, но сложились обстоятельства.

– Какие обстоятельства?
– Прежде всего с переходом в Samsung программирование перестало быть постоянным занятием. Образовался вакуум, который нельзя заполнить ничем, кроме как опять программированием. Такая была гигантская тоска по тому, чем занимался со школьной скамьи.

– Не обязательно было писать книгу. Писал бы блог.
– Порывался. Но потом мы в Samsung совместно с Embarcadero сделали такой “кейс” для школьников. Ежегодно в Москве проводится конкурс “Школа реальных дел”, где команды получают “задание” от вендоров. Мы вместе в прошлом году курировали проекты команд на тему “разработка электронного учебника на Delphi”. Работал я, Сергей Терлецкий и Денис Васильев. Екатерина Макарова тоже помогала. Наш “кейс” стал “образцово-показательным” в масштабах Москвы. Но без книг было трудно.

– Почему? Можно было сделать вебинары…
– Да, мы их и делали. Я вёл “проектную” часть вместе с Сергеем, Денис – чисто “дельфовую”. Но нужна была именно книга в виде “методички”, т.е. сборка пошаговых инструкций с объяснениями по созданию приложения. Читать далее

Выпуск технической литературы, посвященной тому или иному продукту, наверняка как ни что другое свидетельствует о росте его популярности. За последний год я делал обзор двух книг, посвященных Delphi. И вот сегодня я расскажу еще об одной книге – iOS/Android Application Development with Delphi.

На этот раз книга практически полностью посвящена мобильной разработке в Delphi. И это именно то, чего долго ожидали многие разработчики.

Конечно, книга отнюдь не дешевая ($48), особенно по нашим меркам. Хотя, для профессиональных разработчиков деньги вполне подъемные. Действительно, автор (Francisco Charte) приложил не мало усилий, и предпринял меры для того, что бы труд не пропал даром. Вы возможно удивитесь, но каждая копия книги персонифицирована. Да, через некоторое время после оплаты мне прислали книгу в формате pdf. Обложка и колонтитулы содержали текст: “This books belongs to Aleksandr Bozhko”. С одной стороны, даже как-то приятно. С другой появляется чувство, что я не потратил деньги на то, что “можно легко украсть”.

Теперь о самой книге. Она чем-то мне напомнила старые книги  Borland Press. Во-первых, наверное, своим внушительным объемом (почти 600 страниц). Во-вторых, структурой и методичностью изложения материала. Фундаментальное вступление затрагивает ещё историю возникновения Borland inc. В иные времена я бы счел это банальной “водой”. Но сейчас, на фоне ставших не редкими вопросов о судьбе Delphi, очень даже актуально. Впрочем, автор не злоупотребляет историческими экскурсами. За рамки введения они не выходят.

Основное содержимое книги разбита на три логические части. В первой рассказывается о т. н. мобильной экосистеме. Здесь вы найдете краткий обзор существующих аппаратных и программных решений для мобильных устройств, а так же существующих средств разработки. В принципе, полезный для разработчиков материал. Но нечто подобное вы найдете практически в любой книге, посвященной мобильной разработке. Вторая часть книги посвящена непосредственно мобильной разработке в Delphi. Она достаточно обширна и охватывает, как общие принципы построения мобильных приложений в Delphi, так и некоторые детали FireMonkey. По большому счёту, она может послужить отличным пособием для “быстрого старта”. Заключительная часть книги посвящена углубленному изучению наиболее интересных техник мобильной разработки в Delphi.

Полное оглавление книги приведено в pdf формате.

Судя по всему автор начал работать над книгой еще тогда, когда актуальной версией Delphi была XE5. Но весь материал адаптирован под XE7. Там где это необходимо, акцентируется внимание на отличиях в различных версиях Delphi.

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

Общее впечатление от книги у меня осталось весьма положительное, рекомендую.

Знаете кто такой Рэй Конопка (Ray Konopka)? Те, кто познакомился с Delphi в 90-х наверняка помнят его, прежде всего, по книге “Создание оригинальных компонент в среде Delphi“. Не смотря на то, что издатели пропустили ошибку в названии (в тексте она исправлена), на мой взгляд, это одна из лучших книг по Delphi. Собственно, во многом благодаря ей, я в свое время начал понимать и любить Delphi.

Думаю, многим также известно, что и по сей день Рэй Конопка активно популяризирует Delphi, является партнером Embarcadero и принимает участие во многих мероприятиях. Кроме того, он является президентом компании Raize Software, которая распространяет несколько весьма полезных для Delphi  разработчиков продуктов. Самый известный из них, пожалуй, CodeSite Logging System. Embarcadero редакция данного продукта (CodeSite Express) входит в состав RAD Studio, начиная с версии XE. Лично я стал использовать этот продукт, практически сразу.  Если же вы до сих пор не познакомились с ним, рекомендую прочесть обзор Владислава Баженова.

На самом деле CodeSite Logging System – продукт очень серьезный с очень впечатляющим функционалом. И даже урезанная Embarcadero редакция предоставляет разработчику достаточно возможностей для того, что бы не утруждаться написанием собственной системы логирования.

Те, кто следит за моим блогом, знают, что я занимаюсь разработкой продукта, который массово продается. Как следствие, у нашего продукта есть множество клиентов, в разных точках мира, говорящих на разных языках, использующих разной программного и аппаратное обеспечение. Естественно, периодически у наших клиентов могут возникать проблемы в работе приложения, требующие вмешательства разработчиков. Сегодня я расскажу, как при помощи CodeSite Logging можно существенно облегчить себе жизнь и упростить процесс “отлова” багов на машинах клиентов.

Читать далее

Одним из самых значимых и интересных новшеств в XE7, безусловно, стал новый дизайнер форм FireUI Multi-Device Designer. Для того, что бы понять зачем он нужен и в чем заключается его ценность, нужно просто написать хотя бы одно Android приложение в XE5 или XE6, а затем запустить его на устройстве с другим формфактором. Вы сразу же поймете, что по сути, вы не сделали ничего и вам нужно “работать над интерфейсом”. В подобную ситуацию я попал, создавая свое первое рабочее Android приложение. Отлаживал я его на планшете 7″, а демонстрировал на телефоне. Соответственно, и у меня и у приложения был весьма блеклый вид. А “работа над интерфейсом” вылилась не только в перетаскивание контролов, изменение их размеров и свойств. Пришлось писать код, высчитывать нужное положение и размеры элементов управления, в зависимости от размеров формы. Занятие трудоемкое. К тому же тестировать результаты приходилось на эмуляторе, что тоже добавляло сложностей.

В XE7 все изменилось радикальным образом. Если в двух словах, то теперь для каждого формфактора можно создать отдельный, наследуемый от основной формы, экземпляр формы. Боле того, учитывается не только размер экрана, но и платформа. Таким образом, если раньше мы говорили о единой кодовой базе для разных приложений, то теперь мы можем говорить об одном приложении для разных платформ. Все, что нам нужно – создать для каждой из форм набор представлений, позволяющий правильно отобразить форму на различных устройствах. При этом все это делается с помощью обычного интерфейса редактирования форм.

FireUI

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

Одним из новшеств FireMonkey в XE7 стал компонент TMultiView. По сути это некая панель, которая может вести себя по разному, в зависимости от устройства, на котором запускается приложение. Она может “всплывать, “выпадать”, оставаться закрепленной и т.д. В мобильных приложениях такие панели практически повсеместно используются для организации представления Master-Details, поэтому такой компонент был, что называется, необходим. До выхода XE7 я видел как минимум три реализации чего-то подобного, хотя и менее универсального.

Вчера в процессе перевода своего рабочего приложения на XE7, я попытался разобраться с этим компонентом. Для того, что бы понять как он работает лучше всего создать новое Multi-Device приложение и использовать шаблон Master-Detail.

NewMultiDeviceApplication

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

    property Mode: TMultiViewMode read FMode write SetMode default TMultiViewMode.PlatformBehaviour;

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

TMultiViewMode = (PlatformBehaviour, Panel, Popover, Drawer, Custom);

По умолчанию значение PlatformBehaviour, т. е. его поведение определяется платформой. Что бы понять как будет вести себя компонент при изменении значения этого свойства, вы можете сделать небольшой эксперимент. Поместите на форму компонент TComboBox (я предварительно удалил в шаблонном приложении все контролы, предназначенные для отображения данных). Свойство Items определите следующим образом:

PlatformBehaviour

Panel

Popover

Drawer

Custom

Задайте следующий обработчик события OnChange:

MultiView1.Mode:= TMultiViewMode(cbMode.ItemIndex);

Теперь при выборе элемента выпадающего списка будет меняться значение свойства Mode. Под Windows компонент может выглядеть так:

MultiViewProper

Или так (панель “выезжает”):

MultiViewDrawer

Свойство компонента MasterButton указывает на тот компонент, который будет инициировать появление или скрытие панели. Вы можете так же указать значение свойства TargetControl. Это может быть панель или другой компонент контейнер. Так или иначе, состояние MultiView будет отражаться на свойствах компонента, выбранного в качестве TargetControl. На приведенных ниже рисунках видно как изменяется TargetControl при выпадании панели компонента MultiView. За изменение цвета отвечает свойство ShadowOptions.

MultiViewTargetControl2

MultiViewTargetControl1

Собственно, ничего особо сложного в использовании компонента нет. К тому же, в комплекте Delphi XE7 поставляется демонстрационный пример.

 

Листаю свежекупленную книгу Даниеля Тети (Daniele Teti) Delphi Cookbook. По нашим временам, любая книга по Delphi, уже событие. Если же она не переписана с ранее издававшихся, то это вообще шикарно. А в данном случае ко всему этому добавляется то, что по сути, книга посвящена новинкам Delphi. То есть, большая часть кода, приведенного в книге не заработает не то, что на Delphi 7, но и на Delphi XE. Хотя речь идет не только о FireMonkey, которая появилась в XE2, но и новинках языка. Судя по эволюции обложек, автор начал работу над книгой, когда актуальной версией Delphi была ещеXE5. Конечно, сейчас писать книгу  о FireMonkey – задача не для слабых духом. Платформа существенно обновляется не только с каждым новым релизом, но даже при выпуске апдейтов. Понятно, что новинки XE7 в книгу не попали. Тем не менее, интересного в книге хватает.

Содержание вы можете посмотреть в блоге автора.

К книге, естественно, прилагается архив с примерами.

По своей структуре книга является сборником рецептов, о чем, собственно, и свидетельствует ее название. 50 отдельных примеров объедены по тематике в 7 глав. К слову, мне подобный формат книг нравится. Хорошо описанные примеры. пожалуй самое эффективно средство в освоении новшеств, на отсутствие которых пользователям Delphi жаловаться в последнее время не приходится.

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

Цена pdf версии более чем демократична – $10. Даже по меркам местных магазинов, в частности ЛитРез, цена вполне демократичная. Моё мнение – книга вполне достойна того, что бы занять место на книжной полке где-нибудь в папке Actual Books.

Купить книгу вы можете здесь.

В заключение воспользуюсь случаем и напомню, что до 30-го сентября вы можете воспользоваться 10%-ой скидкой при покупке Delphi.

2-го сентября компания Embarcadero Technologies объявила о выпуске RAD Studio XE7. На сегодняшний день RAD Studio это набор средств разработки, включающий в себя Delphi, C++ Builder, HTML Builder, а также лицензия для разработчика на базу данных InterBase. Соответственно, в новую версии «студии» вошли обновленные Delphi XE7 и C++ Builder XE7. Delphi XE7

Сразу оговорюсь, что если раньше C++ Builder был в роли «догоняющего», то в последних двух релизах по функционалу он полностью соответствует Delphi. Поэтому в рамках данного обзора основное внимание я уделю Delphi.

Читателям, которые не особо следят за эволюцией Delphi (хотя откуда у меня в блоге такие?), напомню, что современные версии Delphi позволяют создавать нативные мультиплатформенные приложения, которые могут работать не только в Windows, но и в MacOS, iOS и Android. Наряду с библиотекой классов VCL (которая по-прежнему продолжает развиваться) в Delphi поколения XE (XE2-XE7) появилась новая платформа разработки бизнес приложений  FireMonkey (альтернативное название FM- framework). Именно благодаря  этой платформе появилась т. н. «мультиплатформенность». Концепция FireMonkey предполагала единую кодовую базу, которая используется в разных приложениях. Т. е. для каждой ОС необходимо создать свое приложение, но при этом основной объем кода остается одинаковым. Такой подход можно эффективно использовать и недавно был небольшой рассказ о реальном коммерческом приложении, созданном с помощью FireMonkey (для тех, кому интересно, мое интервью с разработчиками).

Конечно, FireMonkey далеко не единственное новшество в Delphi со времен легендарной Delphi 7, но, наверняка, одно из самых знаковых, определившее дальнейшее развитие продукта.

Что же нового появилось в XE7?

Если в предыдущей версий продукта был сделан акцент на повышении качества, то XE7 получилась довольно богатой на новшества. По словам представителей компании, акцент был сделан на существующих пользователей.

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

Соответственно, в XE7 появилась новая служба FireMonkey Behavior service, позволяющая платформе и разработчикам получать информацию об устройстве, на  котором работает приложение с помощью специального API. В зависимости от типа устройства корректируются расположение и размеры элементов пользовательского интерфейса. Читать далее

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

Sphere Live. Desktop Settings Video

Desktop Chat Incoming message

Мой старинный друг и коллега Тагир Юмагузин, уже давно рассказывал о проекте в котором он участвует.  Сейчас же, когда проект вышел на предрелизную стадию, мы решили, что рассказ об этой разработке будет интересен Delphi сообществу. По сути, это реальный большой проект, реализованный на FM. Речь идет о Sphere Live. Небольшая статья, посвященная Sphere недавно была на Хабре. Чуть подробнее, с учетом читательской аудитории моего блога, рассказать о данном продукте согласился руководитель отдела разработки ООО “Сфера Системс”- Алексей Глызин.

А. Б. Алексей, в двух, чем является Ваш проект?

А. Г. Идея проекта возникла не сразу.

До начала работы над проектом SphereLive наша команда работала с проектами, в которых реализованы технологии потокового аудио/видео. Позже мы создали собственное ПО, реализующее раздачу аудио/видео потоков неограниченному количеству пользователей с возможностью обратной связи. Но нам потребовалось прикрутить к нашему ПО биллинг.

Понимая, что данное направление весьма перспективно,  и мир движется в направлении увеличения трафика за счет передачи аудио/видео в режиме реального времени, но при этом явно не хватает определенных инструментов, мы решили создать свое ПО.

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

В процессе разработки архитектуры и самого приложения, мы решили оптимизировать его и под “дистанционное образование”.

Уточним, если возникают вопросы о том, что подобных систем уже “море”. Мы предлагаем пользователям нашего ПО уникальные функции. Это, в первую очередь, касается всех “платных” режимов. Пользователи могут давать платные консультации, организовывать платные конференции, лекции и т.д. Ограничений практически нет, за исключением, конечно, аппаратных возможностей.

Наши “фишки” – это еще собственные протоколы, в т.ч. передачи аудио/видео, уникальная система приема/передачи файлов, экономия трафика пользователя, переводчик в чате и многое другое.

Desktop LoginMobile Login Читать далее

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

Обнаружение неподдерживаемых устройств

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

  • ARMv6
  • Intel x86
  • MIPS

Естественно, мой шеф является счастливым обладателем одного из подобных аппаратов. После запуска приложения, собранного в XE5 на Motorola Atrix mb860 попросту появляется черный экран, без всяких дополнительных оповещений. В XE6 появились три небольших библиотеки, которые по умолчанию добавляются в проект. Благодаря им теперь, при попытке запустить приложение на неподдерживаемом устройстве теперь выводится сообщение

Application not supported by this device

Если нет необходимости использовать эти библиотеки (например, когда приложения будет запускаться на каком-то конкретном устройстве) их можно отключить в Deployment manager‘е.

delpoyment_manager

Однако, в том случае, если приложение будет распространяться в GooglePlay, эти библиотеки точно следует отключить, поскольку данный сервис сам определяет совместимость приложения с устройствами.

Компоненты для продажи цифрового контента и показа рекламы

В отличии от iOS приложений, монетизация Android приложений не всегда возможна путем продажи непосредственно приложения. Здесь и сами приложения дешевле и конкуренция выше. Поэтому для Android приложений часто используют схемы продажи цифрового контента или рекламы в приложениях.

В XE6 теперь появились компоненты TBannerAdd и TInAppPurchase, предназначенные для показа рекламы и продажи цифрового контента, соответственно. Компоненты можно использовать как в Android (для работы с GooglePlay и AdMob), так и в iOS приложениях (для работы с iTunes и iAd).

Новый FireMonkey стиль для Google Glass

Собственно, для того, что бы о чем-то здесь говорить нужно как минимум иметь очки Google. Тем не менее, понятно, что данное устройство поддерживается, а следовательно принцип “в ногу со временем” воплощается жизнь.

FMX.Grid

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

В XE6 был расширен базовый класс TCustomGrid. В нем появились события OnDrawColumnCell и OnDrawColumnHeader и несколько новых свойств TCustomGrid.Options.

В новой версии TGrid появились обновленные редакторы для столбцов типа TTimeColumn и TDateColumn. А также были добавлены четыре новых события OnHeaderClick, OnSelectCell, OnColumnMoved и OnCreateCustomEditor.

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

Конечно, это в определенной мере расширяет функциональные возможности грида. Но если вас интересует мое субъективное мнение, то грид, это лишь часть вопроса. Кроме него узким местом в разработке приложений для работы с данными является и механизм Live Bindings.

 Новые контролы для отображения даты и времени

Вместо TCalendarEdit в XE6 появились TDateEdit и TTimeEdit. Сразу же “прикрутил” их в свое приложение. Реализация понравилась. Реагируют на разрешение устройства и в зависимости от него показывают календарь в развернутом либо урезанном виде.

FireMonkey DateEdit

FireMonkey DateEdit

Прочее

На самом деле небольших изменений в FireMonkey было сделано достаточно много. В основном они связаны с модификацией типов данных и добавлением новых методов и событий в некоторые классы (в частности обновился TWebBrowser).

Между тем, при переходе с XE5 особых проблем с совместимостью у меня не возникло. Я не буду здесь перечислять все изменения, они детально описаны в справке в разделе What’s New in Delphi and C++Builder XE6.

Отдельная тема, на мой взгляд, достойная обсуждения – FireDAC. Но об обновлениях в этой библиотеке доступа к данным мы поговорим не сегодня.

Субъективные впечатления

Безусловно сама среда при разработке мобильных приложений стала работать стабильнее. За пару недель плотной работы практически не было “вылетов” и “критических сбоев” в работе IDE. Дизайнер формы наконец-то стал работать с буфером обмена.

К сожалению, редактор Visual Binding при большом количестве объектов на форме по-прежнему притормаживает, поэтому “лишние” (не используемые) объекты лучше сразу делать невидимыми.

Но, повторюсь, что в целом, впечатление весьма благоприятное.

Не пропустите:

 

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика