Не знаю как у вас, а у меня коде (vcl приложение) полным-полно таких конструкций:
var tmpOldCursor: TCursor; begin tmpOldCursor := Screen.Cursor; try Screen.Cursor := crHourglass; // код который может работать относительно долго // например, выполнять запрос в БД finally Screen.Cursor := tmpOldCursor; end; end;
И мне это надоело. По двум причинам:
- увеличение размера модулей - по 8 строк кода на каждый такой случай
- разбухание секции uses, ведь чтобы это работало нужно в каждый модуль работающий с курсором добавить uses Forms, Controls;
Поэтому давайте уже воспользуемся механизмом подсчёта ссылок в интерфейсах, и реализуем маленький класс избавляющий нас написания лишнего кода. Так чтобы вышеприведённый пример можно было упростить до 1й строки.
begin TLazyCursorHelper.ChangeToHourglass; // код который может работать относительно долго // например, выполнять запрос в БД end; // а здесь курсор должен восстановиться