среда, 22 мая 2019 г.

Как замена Free на FreeAndNil может поломать логику

Этот пост посвящается всем любителям споров FreeAndNil vs Free. Покажу пример, когда бездумную замену второго на первое делать нельзя.
Для понимания проблемы, покажу историю развития вопроса. Понятно, что если задачу решать полностью с нуля, то её можно решить разными способами, и можно выбрать решение, когда FreeAndNil будет лучшим и правильным вариантом. Однако в исторической перспективе получилось так, как получилось, я увидел что FreeAndNil всё поломает и решил об этом написать заметку.

воскресенье, 4 ноября 2018 г.

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

Начало.
Версия 1.07.
Версия 1.08.
Версия 1.09.
Версия 1.10.

Текущая версия 1.11 доступна на gitub'е, в новой версии:
+ Добавлена поддержка VCL стилей
+ Добавлена поддержка старых версий Delphi
* UpdateControlSize вызывает WM_SETREDRAW только если:
  а) Parent не является окном верхнего уровня (иначе есть вероятность "провалиться" сквозь окно,
     а так же наблюдаются глюки прорисовки в Delphi7 при dpi > 96)
  б) включено свойство Parent.DoubleBuffered (при выключенном DoubleBuffered эффект не заметен)
! Исправлена проблема поиска AlignControl при первом "кидании" компонента на форму в дизайнере

вторник, 16 октября 2018 г.

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

Начало.
Версия 1.07.
Версия 1.08.
Версия 1.09.

Текущая версия 1.10 доступна на gitub'е, в новой версии:
(*) Изменён алгоритм определения цвета кнопки при наведении мыши
(*) Оптимизация отрисовки в методе DrawArrow
(!) CMDialogKey заменён на CMChildKey (иначе VK_ESCAPE может не дойти до контрола)

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

А Вы перешли на WIN64? (Часть 2)

В предыдущей заметке я рассказывал о начале работ по адаптации наших приложений к платформе Win64. Эта заметка является продолжением.

четверг, 29 сентября 2016 г.

среда, 29 июня 2016 г.

Задачка

Может ли класс-деструктор (или finalization-секция модуля) выполниться раньше обычного деструктора? Если может, то при каком условии?

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

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

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

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

.

.