Watch, Follow, &
Connect with Us

Vsevolod Leonov

Переход с VCL на FireMonkey

Прошлый проект

всплыл в памяти вместе с бывшим шефом. Бывший (а как вы расставались с предыдущим шефом?) - человек дела, начал с главного. Как насчёт позволить приложению занять еще одну нишу - мир Mac-ов? Мы ваяли семейство проектов. Согласно маркетингу, расчетный движок был один, а набор функционала с интерфейсной мордой в том или ином случае образовывал некое решение. Часть таких "комплектов" имею ярко выраженную "имиджевую" составляющую, поэтому можно говорить о хороших перспективах.

Детали

Проект реализовывался на BDS 2006. Я слышал массу нареканий относительно стабильности данной среды, причем некоторые совпадают с моим мироощущением. Но и даже там вполне нормально удавалось реализовывать проекты. Исходники тоже пришлось тянуть с "тройки", а остановились именно на BDS 2006, т.к. она была тогда самой свежей.

2-этапная миграция

Первая была с 2006 на XE2. Заняла 2 часа времени. Регресса не заметно, но полный цикл тестирования не запускаем, т.к. задача поменять не VCL 2006-го на VCL XE2, а именно совершить переход на FireMonkey (сокращенно FM).

Миграция с VCL XE2 на FM XE2 также двух-этапная. Я бы даже сказал, что "распадается на два направления". Первое - переделать интерфейс. Конечно, есть технологии ковертации, но, правды ради, есть более весомые основания для ре-конструкции "с нуля" (from scratch - пополняем словарный запас). Определенно, некоторые метафоры устарели (да-да, стали немодными), поэтому весь интерфейс можно сделать поудачней.

Вторая часть - переделка графической части, т.е. блока "чистого рисования". При проектировании классов я изначально постарался выполнить разделение логики и визуальщины, поэтому TClass и TVisualClass спокойно сосуществуют при наличии однонаправленной связи (ссылки) от второго к первому.

TVisualClass

Имеет ссылку на Canvas : TCanvas и метод Paint, использующий классические методы рисования. Вот именно преодоление расхождений между TCanvas в VCL и FireMonkey и является первоочередной задачей.

Вспомнил

о хорошей презентации Бояна Митова (Boian Mitov) на CodeRage 6. Нашёл, достал, пересмотрел. Всем советую.

Английский язык г-на Митова очень выразительный, поэтому видео очень легко воспринимается в оригинале DualCompileControl(eng).

Для любителей "литературного" перевода есть возможность посмотреть локализацию DualCompileControl(rus).

Posted by Vsevolod Leonov on August 9th, 2012 under C++Builder XE2, CodeRage, Delphi XE2, FireMonkey |



5 Responses to “Переход с VCL на FireMonkey”

  1. Vsevolod Leonov Says:

    Илья, спасибо Вам за позитивный комментарий.
    Я сам не выкладываю, жду, когда это сделают другие :) На самом деле стараюсь именно файлы оставить, чтобы можно было независимо смотреть.

  2. Алексей Тимохин Says:

    Всеволод, иметь возможность скачать файлы это хорошо. Но вставок с видео с Youtube или DailyMotion очень не хватает.
    Спасибо keeper-у, который переодически заливает ролики на youtube.

    Потому что одно дело, когда ролик можно посмотреть не отходя от кассы. И совсем другое, когда ролик надо сначала скачать, потом распаковать, а потом посмотреть. У меня в 90% случаев всё останавливается на стадии "скачать" и до стадии "посмотреть" не доходит. Пока ролик скачивается, я про него успеваю забыть.

  3. Георгий Says:

    Всеволод, спасибо за перевод. Интересный материал.

    Всеволод, может знайте, может нет, Mitov жалко не упомянул об этом, есть ли простое решение перевода конструкций:

    procedure WMXXX(); message WM_XXXX, … TMessage …

    на Mac?

    Скинте ссылочку если где то встречали..

  4. Vsevolod Leonov Says:

    Да, скоро будут анонсы развешены.
    В Москве и Питере будет John Thomas, директор по продуктам (Delphi, естественно).
    Елена, будет онлайн-трансляция, приглашаю Вас посмотреть!
    В блоге буду постоянно размещать ссылки, чтобы никто ничего не пропустил.

  5. дмитрий Says:

    Немного не в теме, но помогите.
    пиши в билдере xe2 код для работы с open office,
    Variant App = CreateOleObject("com.sun.star.ServiceManager");
    Variant Desktop = App.OleFunction("createInstance","com.sun.star.frame.Desktop");
    выдаёт ошибку "неправильный тип переменной"
    на delphi xe2
    OO := CreateOleObject(’com.sun.star.ServiceManager’);
    Desktop := OO.createInstance(’com.sun.star.frame.Desktop’);

    все работает, не пойму почему.

Leave a Comment



Server Response from: BLOGS2