Страницы

суббота, 29 мая 2010 г.

Эксперты для комфортной работы в Delphi: CnWizards, часть 1 - улучшение дизайнера форм.

image

Эксперт (здесь) – это design-time пэкэдж или dll-ка, расширяющая стандартные возможности Delphi.

CnPack Wizards - набор инструментов для Delphi, написанный группой разработчиков из Китая, на данный момент является наиболее мощным и удобным бесплатным инструментом для Delphi. Функционал этого набора просто огромен и способен фантастически упростить работу программиста. Официальный сайт проекта: www.cnpack.org но не так давно проект переехал на Google Code.

Этот набор экспертов в данный момент доступен на 5 языках, включая русский. Проект сопровождается подробной справкой, которая существует пока только в английском и китайском варианте.

В этом посте я расскажу о том, как cnWizards расширяют дизайнер форм Delphi.

В последних версиях Delphi кнопочки дизайнера появляются на отдельном тулбаре, а вот в ранних версиях Delphi они размещались прямо вокруг формы. См. иллюстрацию.

Дизайнер формы с расширениями cnWizards в Delphi 6

Эти кнопочки появляются при активном дизайнере формы. Они могут выглядеть по-разному, в зависимости от версии Delphi и настроек дизайнера.

Эксперты для комфортной работы в Delphi: gExperts

Эксперт (здесь) – это design-time пэкэдж или dll-ка, расширяющая стандартные возможности Delphi.

Меню gExperts - эксперта для Delphi IDE

gExperts – это наверное наиболее старый и популярный набор экспертов с открытым исходным кодом. Работают с Delphi 2 по Delphi 2010. Домашняя страничка эксперта (www.gexperts.org) до сих пор является наиболее полным источником информации по работе с Open Tools Api и написании собственных экспертов. (в момент написания поста, сервер не отвечает, но я надеюсь что это временное явление).

В последние годы этот набор экспертов почти не обновляется. И некоторые его фичи уже реализованы и в другом крупном наборе экспертов – CnPack Wizards (о нём речь пойдёт в следующем посте). Но я до сих пор с удовольствием использую в работе оба набора.

Причина по которой я не хочу отказываться от gExperts – это несколько небольших, но очень удобных фич:

Grep Search

Grep Search - полнотекстовый поиск по файлам проекта/папкам (Alt+Shift+S). Без него как без рук. Умеет искать в .pas и .dfm файлах, искать только в текущем файле, только в файлах текущего проекта, во всех файлах группы проектов, а также в указанных папках. Поиск происходит довольно быстро. Результаты отображаются в виде удобного списка.

пятница, 28 мая 2010 г.

Чего не хватает в Delphi

Публикация для конкурса проводимого агрегатором Delphi новостей DelphiFeeds.ru.

Интеграция с SVN

Я говорю не просто о добавлении комманд Update/Commit в какие либо меню. Всё это возможно и в варианте интеграции SVN в Delphi для бедных. Я говорю о широкой визуальной поддержке. Чтобы на Tab-ах редактора и в дереве проекта отображался значок как в TortoiseSVN.

Чтобы изменённые строки в исходниках подсвечивались другим цветом.

Мне понравилось, как сделана интеграция SVN в NetBeans.

Интеграция SVN в IDE NetBeans

SVN команды доступны в отдельном субменю при правом клике как на файле в дереве так по заголовку таба в редакторе.

четверг, 27 мая 2010 г.

Delphi 2010: Open Tools API интерфейсы для интеграции системы контроля версий в IDE.

Embarcadero уже долгое время обещает интегрировать поддержку систем контроля версий в Delphi. И эта функция довольно востребована. Официально даже было объявлено, что эта поддержка доступна уже в Delphi 2010. Давайте посмотрим, что приготовила для нас Embarcadero.

Для работы с VCS (Version Control System - системами контроля версий) в файле ToolsApi.pas добавлены 3 интерфейса:

  1. IOTAVersionControlNotifier - интерфейс отвечающий непосредственно за реализацию связи с VCS.
  2. IOTANotifier - базовый интерфейс для уведомлений. Содержит методы позволяющие получать уведомления при изменении файла, его сохранении и закрытии редактора.
  3. IOTAVersionControlServices - сервисный интерфейс, позволяющий подключить и отключить свою реализацию VCS.

среда, 26 мая 2010 г.

Одной строкой: о модерации комментариев и рекламе в блоге

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

Favicon

Сегодня наконец настроил отображение favicon-ки в Google Chrome и Firefox.

О рекламе: итоги за полгода

В январе этого года, я начал попытки монетизации этого блога. Пришло время подвести кое-какие итоги.

вторник, 25 мая 2010 г.

Заметки о процессе ведения проектов в Delphi. Мой опыт.

Это старый пост из архива, который почему-то не был опубликован. Он немного устарел, и описывает то как я видел процесс разработки 1,5 года назад. Если интересно, то позже я напишу о том, как я вижу этот процесс сейчас.

Как-то так получилось, что в основном, мне приходилось заниматься сопровождать и развивать чужие проекты. А характерным признаком всех моих мест работ было одно – бардак. На всех работах, одним проектом занимался только один программист. У проекта обычно есть руководитель, который формулирует задания. Руководитель кода не знает, и программировать не умеет. В проекте могут участвовать люди, занимающиеся поддержкой и развитием базы данных, тестированием продукта, общением с клиентами и установкой новых версий. Практически все проекты, с которыми я работал, относились к бухгалтерским программам, и напрямую работали с базой данных(Firebird). Обычно в фирме таких проектов было несколько, но общего кода, не считая сторонних компонентов, у них почти не было. Так что у меня нет опыта работы в команде. И практически нет опыта следования процессу разработки. Только на одной из моих работ, для программистов была написана инструкция о том, как правильно работать. Там были как разумные вещи, так и не очень(in my humble opinion). Но, полностью инструкции не следовал ни один из программистов. Поэтому большинство моих рассуждений – это отчаянная попытка придумать велосипед навести порядок и превратить бардак в процесс так, чтобы это не сильно напрягало ни меня, ни других программистов и позволило навести и сохранить порядок в проекте.


Процесс выглядит так:

суббота, 22 мая 2010 г.

Текучка 12: Велосипед для езды по минному полю. Или почему не стоит вешать обработчики Application.On...

Это история о том, как один программист, начал изобретать групповой делегат (multicast delegate) для обработки события Application.OnMessage, не зная о том, что подобный класс включён в стандартную поставку Delphi.

Одному программисту понадобилось сделать так, чтобы одна из форм обрабатывала событие Application.OnMessage. Программист не раз встречал подобный код у себя в библиотеках. Обычно это делалось так:

  • в секции юнита initialization, запоминался старый обработчик события
  • затем вешался свой обработчик события, который после выполнения своих операций вызывал запомненный старый обработчик
  • а восстанавливалась цепочка, как правило, в секции finalization

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