296______________________________________________Глава 4

отлично от crDefault, то соответствующие свойства компонентов отменяются и
курсор имеет глобальный вид, заданный в Screen. Этим можно воспользоваться
для такой частой задачи, как изменение курсора на форму «песочные часы» во
время выполнения каких-то длинных операций. Это можно сделать следующим
образом:

Screen->Cursor = crHourGlass;

try
{

выполнение требуемых длинных операций

}
catch (...)
{

Screen->Cursor = crDefault; // восстановление курсора

throw;

)
Screen->Cursor = crDefault;

При успешном или аварийном окончании (см. раздел 4.9) длинных операций
курсор в любом случае возвращается в значение по умолчанию.

Если в приложении в какие-то отрезки времени используется отличный от
crDefault глобальный вид курсора, то приведенный код можно изменить, чтобы по
окончании длинных операций восстановить прежнее глобальное значение:

TCursor Save_Cursor = Screen-cursor;

Screen->Cursor = crHourGlass;

try
(

выполнение требуемых длинных операций
}

catch (...)
(

Screen->Cursor = Save_Cursor;

throw;

}
Screen->Cursor = Save_Cursor;

Имеется также свойство Cursors[ I ], которое представляет собой список до-
ступных приложению курсоров. Вы можете создать и использовать также свой
собственный курсор. Создается он и включается в ресурс приложения встроенным
в C++Builder Редактором Изображений (Image Editor). Как работать с этим редак-
тором поясняется в разделе 5.1.2.4. А регистрируется созданный вами курсор с по-
мощью функции LoadCursor. Сделать это можно следующим образом.

Пусть, например, вы создали свой курсор и включили его в ресурс приложе-
ния под именем NEWCURSOR. Тогда в своем приложении вы можете ввести гло-
бальную константу, обозначающую ваш курсор. Например:

const crMyCursor = 1;

Значение этой константы может лежать в пределах от -32768 до 32767. Но
важно, чтобы она не совпадала с предопределенными значениями стандартных
курсоров, лежащими в диапазоне от 0 до -21.

В обработчике события OnCreate формы вы можете ввести оператор, регистри-
рующий ваш курсор в свойстве Cursors:

Screen->Cursors[crMyCursor]=LoadCursor(HInstance,"NEWCURSOR");

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

Тогда в нужный момент вы можете установить этот курсор в качестве глобаль-
ного оператором

Screen->Cursor = crMyCursor;