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

Delphi

Часть #0

Создание клиентского приложения

Поскольку в нашем случае речь идёт о мобильном приложении, клиентской приложение будет создано с помощью FireMonkey.

  • Создаем новое Multi-Device приложение (настройки не критичны);

DataSnapClient000

Я создаю клиентское приложение в группе, что дает возможность параллельно отлаживать и серверное приложение.

Читать далее

Некоторое время назад я писал о своих экспериментах с DataSnap. Сейчас, в рамках всё того же проекта, у меня появилась  несколько модифицированная задача, где использование данной технологии будет более чем уместно. Вкратце опишу задачу.

Итак, имеется настольное приложение, работающее с БД MS Access (это не мой выбор и мы условились не обсуждать его здесь). Функционал приложения довольно обширный, но некоторая его часть связана с учетом рабочего времени. На ПК запускается таймер, по окончанию его работы в БД заносятся данные об отработанном времени, выполняемом проекте и т.д. Идея заключается в том, что бы этот таймер можно было запускать на мобильном устройстве, а информация с него попадала в базу на ПК.

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

Создание сервера

Создаем новый проект.

  • Выбираем  File > New > Other из главного меню;
  • В ветке DataSnap Server выбираем DataSnap REST Application;

DataSnap00

Читать далее

Сегодня, 7 апреля, очередная версия флагманского продукта компании Embarcadero стала RAD Studio XE8 доступна для скачивания.

Delphi_XE8_680x150_CTA_Blank

Официальный пресс-релиз.

Embarcadero® RAD Studio XE8 — это комплексное решение для разработки программного обеспечения. Как и предыдущие версии, XE8 включает в себя Delphi, C++ Builder и ряд других продуктов (в зависимости от редакции). Список редакций не изменился. Продукты по прежнему доступны в редакциях Architect, Enterprise, Ultimate, Professional и Starter (только Delphi и C++ Builder).

Новая функциональность, включенная в последнюю версию.

  • 64-разрядные компиляторы Object Pascal и C++ для iOS, набор инструментов и поддержка универсальных приложений для iOS.
  • Менеджер пакетов GetIt для удобного поиска, загрузки и обновления исходного кода из IDE.
  • Создавайте приложения, определяющие местонахождение, благодаря информированию о приближении с помощью «маячков» (beacons).
  • Castalia: встраиваемый модуль по повышению производительности написания кода, интегрированный в IDE. Включает рефакторинг кода, подсветку синтаксиса, соответствие метрикам и многое другое.
  • Стили VCL: TabletLight, Sky и Glow.
  • Библиотека Box2D для отображения физического движения и  реалистичности в настольных приложениях
  • Поддержка клиентских библиотек HTTP/HTTPS на Windows, OS X, iOS и Android.
  • Интеграция DUnitX для модульного тестирования.

Обзор и общие впечатления в процессе подготовки.

Скачать триальную версии продуктов  можно на официальном сайте Embarcadero.

Читать далее

Создание отчётов в приложениях никогда не относилось к категории моих любимых занятий. Тем не менее, так или иначе, этим приходится заниматься. В своем рабочем проекте, о котором я уже не раз рассказывал, я перевёл практически все отчеты с Rave на FastReport. Последний инструмент сейчас является безусловным лидером “отчётостроения” и если есть необходимость поддерживать проект в управляемом состоянии, то подобное преобразование просто необходимо выполнить. Естественно, при этом хотелось максимально эффективно использовать возможности FastReport и оптимизировать во всех отношениях старые отчеты. Одной из типичных проблем отчётах всегда была проблема отображения Memo полей. Они могут содержать достаточно объемный текст, а могут, напротив, иметь пустые значения. Если такие данные отображать в столбце рядом с обычными данными, то визуально это будет выглядеть малопривлекательно. Читабельность отчета снижается и данные воспринимаются значительно хуже. Проблема довольно типичная, поэтому я решил сделать небольшой пост на эту тему.

На уровне логики всё решается достаточно просто. Значения Memo полей можно опционально выводить под строкой, содержащей основные данные. Примерно так:

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

Выпуск технической литературы, посвященной тому или иному продукту, наверняка как ни что другое свидетельствует о росте его популярности. За последний год я делал обзор двух книг, посвященных 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 можно существенно облегчить себе жизнь и упростить процесс “отлова” багов на машинах клиентов.

Читать далее

lost_timerПрежде чем продолжить рассказ о таймере – две новости.

Во-первых, вышел первый апдейт XE7. По традиции он доступен зарегистрированным пользователям. Список исправленных багов вы можете найти здесь. Мне хотелось посмотреть как поведет себя приложение в обновленной среде. Собственно, никаких исправлений вносить не пришлось, хотя поле для экспериментов осталось.

Вторая новость. Действие специальных предложений Embarcadero продлено до конца года:

  • возможен апгрейд с любой старой версии на новую версию XE7: Delphi, C++ Builder и RAD Studio.
  • покупатели редакций Enterprise, Ultimate и Architect получают бесплатную лицензию Rapid SQL XE6.

Ну, а теперь непосредственно к теме поста. В принципе, все, что нам осталось – попытаться запустить уже созданное приложение под Android. Для это используем то, о чем я писал в предыдущих постах. А именно новый FireUI. Я отлаживал данное приложение на Nexus 7, соответственно добавил представление Android 7″ Tablet. Дизайн пришлось “подрихтовать” лишь самую малость.

Читать далее

В прошлой части мы практически полностью реализовали логику приложения. Сейчас я хочу рассказать о, возможно, самой интересной части разработки приложения. Построении пользовательского интерфейса. Если вы еще не в курсе, что такое FireUI, то, вероятно удивитесь, что большая часть работы по построению и отладке GUI Android приложения будет производится в Windows, без использования мобильного устройства. Субъективно, я в восторге. Это быстро, удобно и во всех отношениях легко.

Приступим…

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

Digital alphabetic

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

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

Разрабатывать мы будем именно таймер, в англоязычном понимании этого термина. Т. е. на экране будет отображаться циферблат и четыре кнопки – “Пуск”, “Пауза”, “Стоп” и “Отмена”. Отсчет будет производиться в прямом направлении (т. е. время будет увеличиваться). Вариант, при котором задается время и идет обратный отсчет в англоязычной терминологии называется Stop Watch, возможно я попробую реализовать его позже.  То, приложение, которым займемся мы, по функциональности ближе к секундомеру.

Delphi XE7, позволяет значительно упростить процесс разработки, за счет того, что теперь мы можем создать и отладить реальное приложение для Win32, а затем просто добавить представления форм для необходимых мобильных устройств и, немного подкорректировав их, получить рабочее мобильное приложение. Звучит слишком красиво, что бы быть правдой? Возможно. Но проверить данное утверждение я и хочу, реализовав поставленную задачу. Читать далее

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

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

FireUI

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

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



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