O cursor obtido usando Loadcursor() no Delphi é apenas preto e branco. Como obter um cursor colorido no programa? O autor tentou criar o seguinte programa:
Método 1: Use Loadcursorfromfile() para carregar o ícone como cursor de fora
A função Loadcursorfromfile() pode ler arquivos com o sufixo *CUR, *ICO e *ANI como cursores, onde ICO é um formato de ícone colorido (pode ser produzido com o Image Editor) e ANI é um formato de cursor animado. A seguir está um segmento de programa de demonstração que abre um ícone como um cursor. Quando o cursor se move para a área de teste, o cursor mudará para o padrão selecionado;
{Suponha: opendialog1:Topendialog;Bitbtn1:Tbitbtn}
Procedimento TForm1.BitBtn1Click(Sender:TObject);
var tt:pchar;tamanho:inteiro;s:string;
começar
se opendialog1.Execute então
começar
tamanho:=comprimento(opendialog1.nome do arquivo);
getmem(tt,tamanho);
s:=opendialog1.nome do arquivo;
strpcopy(tt,s);
screen.cursors[2]:=carregarcursordoarquivo(tt);
bf.cursor:=2;
memória livre(tt,tamanho);
fim;
fim;
Método 2: carregar o cursor colorido do arquivo de recursos
O arquivo *CUR deve ser incluído ao enviar o programa usando o método 1, portanto carregar o cursor colorido do arquivo de recursos é um método mais viável. Use um ícone para armazenar o cursor colorido, armazene o ícone em um arquivo temporário ao usá-lo e use Loadcursorfromfile() para ler o cursor colorido do arquivo temporário.
Segmento do programa:
procedimento ZloadfromResourse(screenindex:inteiro;nome:Pchar);
var td:ticon;
começar
tentar
td:=ticon.Criar;
td.Handle:=LoadIcon(Hinstance,nome);
td.SaveToFile(′temp.cur′);
screen.Cursors[screenindex]:=loadcursorfromfile(′temp.cur′);
deletefile(′temp.cur′);
finalmente
td.grátis;
fim;
fim;
Este programa altera o ícone nomeado nome no cursor com o número de série screenindex;
exemplo:
ZloadfromResourse(2,′meuícone′);
Formulário1.cursor:=2;