Курсор, полученный с помощью Loadcursor() в Delphi, только черно-белый. Как получить в программе цветной курсор? Автор попытался создать следующую программу:
Способ 1. Используйте Loadcursorfromfile(), чтобы загрузить значок в качестве курсора снаружи.
Функция Loadcursorfromfile() может читать файлы с суффиксами *CUR, *ICO и *ANI в качестве курсоров, где ICO — это формат цветных значков (может быть создан с помощью редактора изображений), а ANI — формат анимированных курсоров. Ниже приведен фрагмент демонстрационной программы, в котором открывается значок в виде курсора. Когда курсор перемещается в область тестирования, курсор меняется на выбранный шаблон;
{Предположим: opendialog1:Topendialog;Bitbtn1:Tbitbtn}
ПРОЦЕДУРА TForm1.BitBtn1Click(Отправитель:TObject);
вар тт: pchar; размер: целое число; s: строка;
начинать
если opendialog1.Execute, то
начинать
размер: = длина (opendialog1.имя файла);
getmem(тт,размер);
s:=opendialog1.filename;
strpcopy(тт,с);
screen.cursors[2]:=loadcursorfromfile(tt);
бф.курсор:=2;
freemem(тт,размер);
конец;
конец;
Способ 2. Загрузите цветной курсор из файла ресурсов.
Файл *CUR должен быть включен при отправке программы методом 1, поэтому загрузка цветного курсора из файла ресурсов является более подходящим методом. Используйте значок для хранения цветного курсора, сохраните значок во временном файле при его использовании и используйте Loadcursorfromfile() для чтения цветного курсора из временного файла.
Сегмент программы:
процедура ZloadfromResourse(screenindex:integer;name:Pchar);
вар тд: тикон;
начинать
пытаться
тд:=ticon.Create;
td.Handle:=LoadIcon(Hinstance,name);
td.SaveToFile('temp.cur');
screen.Cursors[screenindex]:=loadcursorfromfile('temp.cur');
удалить файл('temp.cur');
окончательно
тд.бесплатно;
конец;
конец;
Эта программа заменяет значок с именем name на курсор с серийным номером screenindex;
пример:
ZloadfromResource(2,'myicon');
Форма1.курсор:=2;