Delphi 2010

Блог Александра Божко

Архивы

Рубрики

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

Минитест на знание VCL

Я решил отнести данный пост к рубрике Редизайн Интерфейса, как наглядный пример того, что заменяя один компонент на другой, пусть и очень похожий функционально, не всегда получается “машинально” обновлять код, используя различные варианты автозамены и прочие ухищрения. Иногда приходится осуществлять полноценный рефакторинг.

Вчера попался мне примерно такой код (я его немного упростил):

procedure TfTest.Button2Click(Sender: TObject);
var
  i: integer;
begin
  i := 0;
  while PageControl1.PageCount > 1 do
  begin
    if PageControl1.ActivePageIndex = i then
    begin
      Inc(i);
      Continue;
    end;

    PageControl1.Pages[i].Free;
  end;
end;

Задача вполне тривиальная. Необходимо удалить все страницы PageControl’а кроме активной. Понятно, что реализация не самая элегантная, но на первый взгляд код вполне рабочий. Найдёте ошибку не заглядывая под кат?

Читать далее


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

EntityDACLogoТехнология объектно-реляционного отображения (ORM) заинтересовала меня более десяти лет назад. Именно тогда мы с группой единомышленников создали Интернет-проект «Mda по-русски» (mda-delphi.ru), посвященный вошедшему в состав Delphi 7 Architect продукту Bold for Delphi. В то время этот продукт вызвал довольно оживленный интерес у Delphi разработчиков, нам удалось организовать довольно большое и продуктивное сообщество, собрать множество материалов и полезных наработок.  К сожалению, проект исчерпал себя, отчасти ввиду кризиса Delphi, отчасти из-за субъективных обстоятельств, но в основном из-за того, что Bold перестал официально поддерживаться.

Так или иначе, интерес к подобным решениям существует, и довольно странно, что в то время как для других сред разработки есть огромное количество различных ORM библиотек, для Delphi их не так и много. Если верить Wikipedia за всю историю существования Delphi, было лишь три проприетарные реализации. Это, Bold for Delphi, абсолютно провальный проект ECO, реализованный компанией Borland для Delphi for .Net, и, возможно вы удивитесь, вполне современный, поддерживаемый и активно развивающийся проект от компании DevArtEntityDAC.
Именно о последнем продукте сегодня и пойдет речь.

Но прежде всего, давайте разберемся с тем, что же такое ORM и какие преимущества эта технология предоставляет разработчикам. Согласно всё той же Wikipedia, ORM (англ. object-relational mapping, рус. объектно-реляционное отображение) это технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».

Основная цель использования ORM подхода – увеличение продуктивности разработки. Достигается это за счет разделения бизнес-логики приложения и низкоуровневых операций по взаимодействию с БД, что, в свою очередь, позволяет разработчикам ускорить процесс создания проектов и облегчить их сопровождение.

Очевидно, что именно с этой точки зрения и следует рассматривать EntityDAC. Читать далее


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

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

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

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

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

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

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


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

Обновилась бесплатная библиотека FireMonkey компонентов Ярослава Бровина FGX.

Новая версия 0.7.0.69 предназначена только для RAD Studio RX.

Полное описание и список изменений новой версии приведен здесь.

 

365


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

Сегодня партнеры и клиенты компании Embarcadero получили письмо от Ренди Якобса, CEO компании IDERA, Inc. Я, посчитал, что русскоязычный вариант этого письмо следует выложить в блог, как это сделал из один из наших англоязычных коллег. А заодно выскажу свои соображения по данному поводу.

Я тоже читал, обсуждения в форумах (хотя и не встревал в дискуссии), общался с коллегами и, конечно, переживал за судьбу продукта, который кормит меня на протяжении практически всей моей профессиональной карьеры. Лично меня беспокоило два вопроса. Во-первых то, что  IDERA, образно говоря, DB-шная компания, и далеко не факт, что у них найдется желание и ресурсы для развития нового направления. Я имею введу средства разработки. Во-вторых, интересовало, как IDERA будет выстраивать отношение с Delphi сообществом, и будет ли компания вообще заниматься этим.

В принципе сейчас, мои ожидания можно охарактеризовать как умеренно оптимистичные. Мы получили определенные ответы на означенные выше вопросы. И, по крайней мере, стало понятно, что IDERA  планирует не просто развивать средства разработки Embarcadero (пока я называю эту группу продуктов так), но и имеет определенное виденье этого развития. И, очевидно, скоро мы увидим внятный Road Map.

Ну, а сам факт письма является подтверждением намерений IDERA выстраивать отношения с коммюнити. Так, что надеюсь, для Delphi сообщества, в том числе и русскоязычного, всё сложится наилучшим образом. Поэтому книги по Java и C# отвожу обратно в гараж и привожу полный текст письма Ренди Якобса.

Читать далее


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

Компания Idera объявила о договоренности по приобретению Embarcadero Technologies. Ожидается, что сделка будет завершена в середине октября. Официальный пресс-релиз вы можете прочесть здесь.

 

780_198_11


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

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

Цитирую Ярослава Бровина:

Главные отличия TListView от TListBox в:

  1. TListBoxItem - контрол, TListViewItem - нет
  2. В TListBoxItem можно добавлять любые контролы, используя Parent. В TListVIewItem - нет.
  3. TListVIewItem хранит только данные для отображения
  4. TListVIewItem сам выполняет отрисовку хранимых данных через метод Render
  5. За счет собственно ручной отрисовки в TListVIewItem достигается прирост скорости и малое потребление памяти (хранение только актуальных данных)
  6. Чтобы создать свой вариант TListViewItem, нужно создать свой класс итема, в нем реализовать требуемые данные (например время) и создать in-place редактор для редактирования времени, зарегистрировать его и т. д.

 

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

Во многих Android приложениях мне приходилось наблюдать следующую реализацию списков. При нажатии на элемент списка (Item, если придерживаться выбранной терминологии), производится определенное действие. Обычно вызывается новая форма для редактирования данных. Но при нажатии с удерживанием (Long Tap) производится совершенно другое действие. И эти события не пересекаются. Иными словами Android приложения умеют четко различать “длинное нажатие” от “обычного”. Более того, ни одно из этих событий не срабатывает при скроллинге списка. Наглядный пример – список писем в Яндекс Почта.

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


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

В последний день лета Embarcadero выпустила очередную версию Rad Studio. Событие ожидаемое, с недавнего времени релизы выпускаются дважды в год. Неожиданностью стало другое. А именно, смена системы нумерации версии, логотипов и прочей внешней атрибутики. За двадцатилетнюю историю Delphi подобное происходит в третий раз. Хотя, какой-то радикальной “смены имиджа” сейчас не произошло. В принципе, ничего особо странного здесь я не вижу. Тенденция. Девятки пропускаем. Windows 10 – Delphi 10 – Rad Studio 10. Итак, RAD Studio 10 Seattle.

Дальше сразу о приятном. iso-образ новой студии (7,2 Гб), наконец начал загружаться быстро (со скоростью моего домашнего канала :)). Установка тоже прошла довольно быстро и без эксцессов. При запуске новая Студия порадовала приятной обновленной заставкой.

Seattle

Читать далее


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

Часть #0

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

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

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

DataSnapClient000

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

Читать далее


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

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

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

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

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

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

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

DataSnap00

Читать далее


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

Продукты DevArt

Купить онлайн:



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