вторник, 29 октября 2013 г.

Полезняшки. С чего мы начинаем приложение в Delphi

Суть заметки в двух словах: организация dpr-файла и вынос мозга инициализации приложения в DataModule.

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

среда, 23 октября 2013 г.

Полезняшки. Ссылки на модули, “помогающие” нашему приложению, выносим в отдельный модуль

Не секрет, что друзья не растут в о.. что для корректного функционирования некоторых модулей, их упоминание в uses должно быть как можно раньше. Такие как: менеджер памяти, логгер исключений и другие полезности. Обычно их помещают в uses файла проекта (в dpr-файл). И (ну у меня – как правило) необходимость использования той, или иной фичи может регулироваться дефайнами {$ifdef}.

Но есть одна особенность: dpr-файл генерируется и обновляется средой Delphi. И если разместить {$ifdef} в uses dpr-файла, то такой {$ifdef} может пропасть.

воскресенье, 20 октября 2013 г.

Визард для Delphi? Вопросик читателям…

Есть такой замечательный редактор – Notepad++. Я его использую почти каждый день для редактирования всяких файлов, связанных с нашими проектами, но не используемые непосредственно в IDE. Ну там sql, xml, txt, cmd, bat, makefile и прочие. Конечно эти файлы можно открывать и в Delphi, но там подсветка синтаксиса для xml-файлов более скудная, а остальные и не подсвечивает вовсе.

И захотелось мне вдруг внедрить в делфи такой редактор. Для начала – хотя бы просто в отдельный проект. В будущем, возможно, как некий визард для IDE. (Да, про SynEdit и TSynMemo я знаю.)

воскресенье, 13 октября 2013 г.

FM: Camera Test v2

Вот и у меня получилось установить Delphi XE5 и запустить из Delphi-приложение на планшете с Android’ом. Погоняв тестовые проекты, решил пересобрать свои старые из Delphi XE2…

пятница, 11 октября 2013 г.

Полезняшки. Переход к FocusControl при клике на TLabel

У TLabel есть такая полезная особенность. Если в Caption добавить символ амперсанда (&), то следующая за этим символом буква становится ускорителем. При этом, при прорисовке заголовка, сам символ скрывается, а буква-ускоритель – подчёркивается. Это означает, что если нажать Alt + <буква>, то произойдёт установка фокуса ввода в контрол, на который ссылается свойство TLabel.FocusControl. Произойдёт автоматически – это нормальное поведение для GUI в Windows.

понедельник, 7 октября 2013 г.

"Халявы не будет!”

Навеяно Что бы сделали мы с Delphi XE5/XE6... - подводим итоги и забавными комментариями к посту Комната 3D, Delphi, Платформа приложений FM.

Размышляя о “халяве” в обучении, мне вспомнились школьные и студенческие годы. Вот по порядку. В школе нас учат писать буквы и цифры. Сначала рисуем палочки, потом кружочки/квадратики. А дома мы это повторяем-закрепляем. Бесплатно. Но тетради, карандаши, ручки – это нам покупали родители. Т.е. на самом деле и не бесплатно вовсе.

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

Вспоминаю уроки ИЗО и труда. Дома тоже можно было бесплатно рисовать/лепить/вырезать/выпиливать... Но бумага, краски, пластилин, фанера – это всё покупалось. И пилки к лобзику бесплатно никто не давал.

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

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

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

Это я всё к тому, что Delphiинструмент платный, но в этом нет ничего такого… ни плохого, ни хорошего. Это нормально. Хочешь владеть инструментом – покупай и практикуйся. Не хочешь – хватит и занятий в ВУЗе.

Другой вопрос о ценовой политике… Ну и о учебных материалах к новым технологиям…

 

P.S.: да простят меня читатели за пустой трёп…

пятница, 4 октября 2013 г.

Мысли по поводу локализации строк и кодогенерации

Кратенько, в стиле Александра Люлина. Два момента:

а) мне понравилась идея Александра с локализацией, типа
type TLocString = record Key, Value: string; end;
и далее:
var SAskDelete = (Key: 'AskDelete'; Value: 'Удалить?');
и далее:
  if Ask(SAskDelete.Value) then
С одной стороны это удобно, я прям в коде вижу:
  - и переменную
  - и Key
  - и Value по-умолчанию
Но:
  - не очень удобно объявлять такие переменные
  - не очень удобно (и не наглядно) писать ".Value"
Ссылка на идею: (18-ть лет с Delphi - Что ещё умеет наш фреймворк?)

б) у нас используется такой вариант: все строковые переменные объявлены как обычно:
var SAskDelete: string;
инициализируются они (и реагируют на смену языка) в спец. примерно так:
procedure InitResStrings;
begin
  SAskDelete := ResGet('AskDelete', 'Удалить?');
end;
и конечно эта процедура подписывается на обновления
initialization
  ResReg(@InitResStrings);

.

.