Der mit Loadcursor() in Delphi erhaltene Cursor ist nur schwarzweiß. Wie erhält man einen farbigen Cursor im Programm? Der Autor hat versucht, das folgende Programm zu erstellen:
Methode 1: Verwenden Sie Loadcursorfromfile(), um das Symbol als Cursor von außen zu laden
Die Funktion Loadcursorfromfile() kann Dateien mit den Suffixen *CUR, *ICO und *ANI als Cursor lesen, wobei ICO ein Farbsymbolformat ist (kann mit Image Editor erstellt werden) und ANI ein animiertes Cursorformat ist. Das Folgende ist ein Demonstrationsprogrammabschnitt, der ein Symbol als Cursor öffnet. Wenn sich der Cursor in den Testbereich bewegt, ändert sich der Cursor in das ausgewählte Muster.
{Angenommen: opendialog1:Topendialog;Bitbtn1:Tbitbtn}
PROzedur TForm1.BitBtn1Click(Sender:TObject);
var tt:pchar;size:integer;s:string;
beginnen
wenn opendialog1.Execute dann
beginnen
size:=length(opendialog1.filename);
getmem(tt,size);
s:=opendialog1.filename;
strpcopy(tt,s);
screen.cursors[2]:=loadcursorfromfile(tt);
bf.cursor:=2;
freemem(tt,size);
Ende;
Ende;
Methode 2: Laden Sie den farbigen Cursor aus der Ressourcendatei
Beim Senden des Programms mit Methode 1 muss die *CUR-Datei enthalten sein, daher ist das Laden des farbigen Cursors aus der Ressourcendatei eine praktikablere Methode. Verwenden Sie ein Symbol, um den farbigen Cursor zu speichern, speichern Sie das Symbol bei Verwendung in einer temporären Datei und verwenden Sie Loadcursorfromfile(), um den farbigen Cursor aus der temporären Datei zu lesen.
Programmabschnitt:
procedure ZloadfromResource(screenindex:integer;name:Pchar);
var td:ticon;
beginnen
versuchen
td:=ticon.Create;
td.Handle:=LoadIcon(Hinstance,name);
td.SaveToFile(′temp.cur′);
screen.Cursors[screenindex]:=loadcursorfromfile(′temp.cur′);
deletefile(′temp.cur′);
Endlich
td.free;
Ende;
Ende;
Dieses Programm ändert das Symbol mit dem Namen „name“ in den Cursor mit der Seriennummer screenindex;
Beispiel:
ZloadfromResource(2,′myicon′);
Form1.cursor:=2;