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

Прочее

Листаю свежекупленную книгу Даниеля Тети (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.

Jim McKeeth

Marco Cantu


David I

Sarina Dupont

DevArt

ModelMaker Tools

 Роман Янковский

Николай Зверев

Владимир Тимофеев

 

Пост шпаргалка. Если вы обладатель Delphi XE6 или Delphi XE7, вам не нужно делать каких-то хитрых телодвижений, для того, создания кнопок на панели, соответствующей приложению в TaskBar‘е. Вы можете воспользоваться компонентом TTaskBar и, таким образом, решить все проблемы. Но, что делать, пользователям Delphi предыдущих версий (попутно напомню,  что при покупке последней версии Delphi вы получаете ключи ко всем предыдущим версиям, начиная с Delphi 7)?

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

Создание TaskbarList‘а ничем особо не отличается. Этот код будет работать и в Windows 7 и в Windows 8:

 

  procedure CreateTaskBarList();
  begin
      TaskbarList := CreateComObject(CLSID_TaskbarList) as ITaskbarList;
      TaskbarList.HrInit;
      Supports(TaskbarList, IID_ITaskbarList2, TaskbarList2);
      Supports(TaskbarList, IID_ITaskbarList3, TaskbarList3);
      Supports(TaskbarList, IID_ITaskbarList4, TaskbarList4);

    if not Application.MainFormOnTaskBar then
      FormHandle := Application.Handle
    else FormHandle := Application.MainForm.Handle;

      TaskbarList3.ThumbBarSetImageList(FormHandle, FMain.ImageList2.Handle);
  end;

Естественно, предварительно нужно проверить версию Windows (она должна быть не ниже 7). Я делаю это так же как и Dr. Bob:

  NeedCreateTBwButtons:= ((Win32MajorVersion=6) and (Win32MinorVersion>0)) or (Win32MajorVersion>6);

В надежде на то, что в последующих версиях Windows этот функционал никуда не денется. Ниже приведены значения переменных для существующих версий системы.

Win32MajorVersion Win32MinorVersion
6
  • Windows 8 (version 6.2)
  • Windows 7 (version 6.1)
  • Windows Vista (version 6.0)
5
  • Windows XP (version 5.1)
  • Windows 2000 (version 5.0)

А вот с кнопками на панели все не так просто. То, что показано в исходном примере работать будет. Но только для случая с одной кнопкой. Если внимательно почитать документацию, то в качестве параметра для метода ThumbBarAddButtons передается ссылка на массив THUMBBUTTON, а не на отдельную кнопку. Максимальное количество элементов в массиве – 7. Массив должен быть статическим.

Я описал его так:

ThbButtons: array [0..3] of TThumbButton;

Соответственно, кнопки я создаю следующим образом:

    ThbButtons[0].iId := 42;
    ThbButtons[0].iBitmap := 0;
    ThbButtons[0].dwMask := THB_FLAGS or THB_BITMAP or THB_TOOLTIP;
    ThbButtons[0].dwFlags :=  THBF_ENABLED;

    StrCopy(ThbButtons[0].szTip, PChar('Start Timer'));

    ThbButtons[1].iId := 43;
    ThbButtons[1].iBitmap := 1;

    ThbButtons[1].dwMask := THB_FLAGS or THB_BITMAP or THB_TOOLTIP;
    ThbButtons[1].dwFlags :=  THBF_ENABLED;

    StrCopy(ThbButtons[1].szTip, PChar('Pause Timer'));

    ThbButtons[2].iId := 44;
    ThbButtons[2].iBitmap := 2;

    ThbButtons[2].dwMask := THB_FLAGS or THB_BITMAP or THB_TOOLTIP;
    ThbButtons[2].dwFlags :=  THBF_ENABLED ;

    StrCopy(ThbButtons[2].szTip, PChar('Stop Timer'));

    ThbButtons[3].iId := 45;
    ThbButtons[3].iBitmap := 3;

    ThbButtons[3].dwMask := THB_FLAGS or THB_BITMAP or THB_TOOLTIP;
    ThbButtons[3].dwFlags :=  THBF_ENABLED;

    StrCopy(ThbButtons[3].szTip, PChar('Cancel'));

    TaskbarList3.ThumbBarAddButtons(FormHandle, 4, @ThbButtons);

Значения флагов, что называется “dwFlags”, не буду здесь их перечислять, для этого есть документация.

Как вы, наверное, уже догадались, здесь я реализовал кнопки  таймера. Обработчик события нажатия кнопок можно реализовать так. как и в базовом примере (отловить сообщение WM_COMMAND). В демонстрационном примере он у меня сработал, а вот в реальном приложении, – почему-то нет. Вероятно, где-то что-то перекрывается. Я не слишком огорчился сему факту, и использовал событие OnMessage компонента ApplicationEvents.

Получилось примерно так: Читать далее

В книжном магазине Books.Ru очередная раздача. Всего один день, книги по свободной цене. На этот раз я себе выбрал следующее:

 

Книг много, полный список здесь.

 

 

Embarcadero:

Выпущена RAD Studio XE7.

Robert Love:

Mason Wheeler:

Andreas Hausladen:

Владислав Баженов:

Владимир Тимофеев:

 Андрей Ефимов:

Александр Люлин:

Андрей Терехов:

Прочее:

Блоги сотрудников компании Embarcadero переехали на новую площадку

В комплектацию продукта(Delphi/C++Builder/RAD Studio) входит Контракт на поддержку и сопровождение в течение первого года использования.


Delphi 10.1 Berlin Professional (Обновление со старых версий:55 855,11 руб.)

Delphi 10.1 Berlin Enterprise (Обновление со старых версий:148 381,22 руб.)

Delphi 10.1 Berlin Architect (Обновление со старых версий:244 093,71 руб.)

buy-now


C++Builder 10.1 Berlin Professional (Обновление со старых версий:55 855,11 руб.)

C++Builder 10.1 Berlin Enterprise (Обновление со старых версий:148 381,22 руб.)

C++Builder 10.1 Berlin Architect (Обновление со старых версий:244 093,71 руб.)

buy-now


RAD Studio 10.1 Berlin Professional 154 956,51 руб.(Обновление со старых версий:107 371,44 руб.)

RAD Studio 10.1 Berlin Enterprise (Обновление со старых версий:191 289,54 руб.)

RAD Studio 10.1 Berlin Architect (Обновление со старых версий:287 001,41 руб.)

buy-now


RAD Solution Pack for VCL + 1 год обновлений 121 877,43 руб.

RAD Solution Pack for FMX + 1 год обновлений 121 877,43 руб.

RAD Solution Pack for VCL & FMX + 1 год обновлений 176 105,43 руб.

buy-now

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 Читать далее

В своем блоге Александр Бондарь публикует своего рода методические пособие по RAD Studio. Дело это, безусловно, полезное с точки зрения популяризации Delphi, поэтому этот блог и включен в ленту новостей Delphifeeds.Ru. Хотя, наверняка, для большинства читателей сайта, работающих с Delphi/C++ Builder на практике, в этих постах интересного мало. В свое время у меня был некоторый педагогический опыт и опыт написания методических пособий. К сожалению, с тех пор минуло довольно много времени и найти их я не смог. Но на волне ностальгии, меня посетила мысль в своем блоге дополнить данное пособие, парочкой интересных,  на мой взгляд, кейсов. Не думаю, что для профессионалов здесь будут какие-то откровения, но для “продвинутых” студентов это может быть интересно.

Этимология форм

Если говорить о формах, то весьма важно разобраться с их сущностью. Понятно, что речь идет об объекте, но объект этот не совсем обычный. Начальные значения его свойств хранятся в специальных файлах форм. В случае VCL они имеют расширение *.dfm, если речь идет о FireMonkey, то *.fmx. Данные файлы можно отредактировать, как с использованием IDE, так и в обычном текстовом редакторе. В первом случае, достаточно в редакторе форм из контекстного меню выбрать пункт View as Text. Во втором случае следует найти файл с именем модуля, содержащего форму и расширением *.dfm или  *.fmx, и открыть его в текстовом редакторе. После этого, можно поменять какое-либо из свойств формы, например, Caption и, вернувшись в редактор формы,  посмотреть как изменится внешний вид формы. Заодно и поэкспериментировать с кодировками. Читать далее

В книжном магазине Books.Ru в очередной раз объявлена акция. Более тысячи книг продаются по принципу “заплати сколько хочешь”. Список “попавших под раздачу” книг значительно расширился. Появились и книги по Delphi, iOS и Android.

Ниже привожу “список избранного”, т. е. те книги, которые потенциально могут заинтересовать читателей блога.

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



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