суббота, 12 декабря 2015 г.

Полезняшки. Переключение раскладки клавиатуры при вводе логина и пароля

В наших проектах есть такое требование – логин и пароль пользователя к БД должны быть введены в английской раскладке клавиатуры. Ну так исторически сложилось. А чтобы голову пользователя не напрягать таким ограничением, перед вводом пароля или логина раскладка клавиатуры принудительно переключается на английскую (а потом возвращается та, которая была).

И есть ещё такая полезняшка: при завершении работы, приложение сохраняет пользовательскую раскладку, а при следующем запуске – восстанавливает её.

пятница, 27 ноября 2015 г.

Семинар Embarcadero по RAD Studio 10 Seattle в Питере

Состоялся очередной семинар Embarcadero в Санкт-Петербурге. Это уже стало традицией - с одним из релизов раз в год приезжать к нам в гости, и каждый раз, начиная с 2012 года, я хожу на это мероприятие. Даже не для того, чтобы узнать, что "там" нового - это всё можно узнать в сети. А просто на людей посмотреть, на их энтузиазм, зарядиться позитивом.

понедельник, 21 сентября 2015 г.

Блокировка перерисовки окна на время обновления его дочерних окон

Открыл для себя сообщение WM_SETREDRAW. Позволяет на какое-то время отключить перерисовку контрола (окна), тем самым избавить пользователя от лишних мерцаний, эффекта шлейфа и тому подобного. Применил в своём сплиттере, теперь при изменении размеров – красота. Сравните две анимашки (т.к. это gif – сохранил в оттенках серого, иначе появляются цветовые артефакты).

Delphi Notes Splitter обновлён (v1.09)

По этой ссылке можно перейти на страницу с заметкой о компоненте и ссылкой на исходник.
Версия 1.07.
Версия 1.08.

В новой версии:

(*) Метод UpdateControlSize обрамлён сообщением WM_SETREDRAW для плавного изменения размеров компонент, окружающих сплиттер

Ссылка для скачивания: Исходник компонента + исходник демо приложения + скомпилированное демо (zip-архив 216 К)
В следующей заметке расскажу чуть более подробнее о WM_SETREDRAW и там будет наглядный пример.

среда, 18 февраля 2015 г.

Своя подсветка синтаксиса в IDE Delphi. Пример

Мне очень нравятся Build Events в Delphi. Это когда с проектом можно связать некую команду (например, cmd-скрипт), которая будет выполняться перед сборкой (или после сборки) приложения. Будь то по F9, либо при внешней сборке с помощью MSBuild. Мне это нужно для актуализации автогенерируемого кода, используемого проектом.
На днях занимался оптимизацией Prebuild-события, постоянно правил свой cmd-скрипт, и мне очень быстро надоело переключаться между Delphi и Notepad++ (в котором редактировал скрипт). Немного покопавшись в ToolsApi, у меня получилось сделать подсветку синтаксиса для CMD/BAT-файлов.

понедельник, 15 декабря 2014 г.

Укрощение автопрокрутки

Люблю я Delphi. И нравятся мне в ней такие фичи, как: Ctrl+Shift+Enter (Find Local References), Ctrl+Shift+E (Refactor \ Rename), и многие другие. Вот окошки озвученных фич у меня расположены как-то так:
image
Мне так удобнее – слева от редактора кода. А когда результаты поиска большие (или список для рефакторинга большой) – то на экране так больше помещается. Есть один минус – при клике в строчку, которая не помещается на экране по ширине – происходит автоматическая прокрутка по горизонтали (на картинке выше такая строчка выделена подчёркиванием). Т.е. дерево уезжает влево и родительские узлы прячутся за прокруткой – меня это сильно отвлекает и раздражает.
Не секрет, что эти деревья реализованы на VirtualTreeView-компоненте, поэтому такое “лечится” в одно действие:
  VTV.TreeOptions.AutoOptions := VTV.TreeOptions.AutoOptions + [toDisableAutoscrollOnFocus];
Добавляем в пакет, устанавливаем – и готово!
Исходники доступны по ссылке.

воскресенье, 16 ноября 2014 г.

Общее оформление файла

Эта заметка является продолжением к заметкам Стиль оформления кода. Вместо вступления, Настройки окружения и Регистр букв.

(Я планировал немного другой порядок публикаций, но отсутствие времени (ну т.е. лень) не даёт мне возможности навести порядок в некоторых промежуточных моментах.)

.

.