Fórum [OFF] Carregar Cursor Personalizado - Resposta #290769
04/08/2005
0
MEU_CURSOR RCDATA BANANA.ANI
Salve o arquivo como CURSORES.RC e não esqueça de localizar o arquivo BANANA.ANI no diretório C:\[PASTA DO WNDOWS]\CURSORS e copiá-lo para o diretório onde se encontra o arquivo DPR do seu projeto Delphi. O arquivo CURSORES.RC deve ser copiado no mesmo diretório.
Entre no prompt do DOS e compile o arquivo CURSORES.RC usando o programa BRCC32.EXE do Delphi. A linha de comando é:
brcc32 -r -32 CURSORES.RC
Isso fará com que seja criado um arqiuvo chamado CURSORES.RES
No fonte do form principal coloque
{$R CURSORES.RES}
Crie uma constante
const crSeuCursor = 1; // Tem que ser um valor maior que 0 (zero)
Crie a função que extrai o cursor para o diretório da aplicação, assim:
procedure ExtrairCursor;
var
DirDestino : String;
NomeArquivo: String;
Fres : TResourceStream;
fFile : TFileStream;
begin
DirDestino := ExtractFilePath(Application.ExeName);
NomeArquivo := ´BANANA.ANI´;
{Cria uma instância de TResourceStream para manipulá-lo mais tarde}
Fres := TResourceStream.Create(0,´MEU_CURSOR´,RT_RCDATA);
{Cria em memória o arquivo gravado no Resource}
fFile := TFileStream.Create(DirDestino + ´\´ + NomeArquivo,fmCreate);
try
{Copia do Resource}
Ffile.CopyFrom(Fres,Fres.Size);
finally
{Libera as variáveis necessárias.}
Fres.Free;
Ffile.Free;
end;
end;
no onCreate do form coloque a chamada a função:
procedure TForm1.FormCreate(Sender: TObject); begin ExtrairCursor; end;
Coloque um button no form e utilize digite:
procedure TForm1.Button1Click(Sender: TObject); begin Screen.Cursors [crSeuCursor] := LoadCursorFromFile(PChar(ExtractFilePath(Application.ExeName) + ´BANANA.ANI´)); // O cursor pode ser dos tipos comum (*.cur) ou animado (*.ani) // Lembre-se: o arquivo tem que estar na mesma pasta do programa // ou digite o nome do caminho dele. Form1.Cursor := crSeuCursor; end;
Bom, explicando melhor e mais resumido. A dica acima vai fazer com que toda vez que o software for aberto ele extrai o cursor BANANA.ANI que está incorporado ao executável para o diretório onde ele se encontra instalado. Daí é só fazer uso dele.
Adriano Santos
Curtir tópico
+ 0Posts
04/08/2005
Michael
Sua dica é uma alternativa viável, mas o cursor pode ser carregado diretamente de dentro do arquivo de recurso, sem que seja necessário sua extração do executável para o disco.
Em breve posto aqui como. To meio enrolado agora. ;-)
[]´s
Gostei + 0
04/08/2005
Adriano Santos
valeu
Gostei + 0
04/08/2005
Adriano Santos
Ae Michael, nem precisa se incomodar... :D eu achei o esquema.
[url=http://www.activedelphi.com.br//modules.php?op=modload&name=XForum&file=print&fid=4&tid=2339]Dica de como carregar um cursor via Recurso[/url]
Essa dica é bem legal.
Gostei + 0
04/08/2005
Michael
Já tinha escrito quando vc me avisou...
1) Crie um arquivo de recurso no [b:e699ed4ece]ImageEditor[/b:e699ed4ece], q vem com o Delphi, e adicione um cursor;
2) Desenhe o cursor do jeito que quiser e dê um nome a ele (por exemplo, ´MAO_IE´)
3) Salve o arquivo de recurso em uma pasta.
4) Abra o Delphi, crie uma nova aplicação VCL e salve-a na mesma pasta onde colocou o arquivo de recurso;
5) Defina uma constante para referenciar o cursor:
const crMeuCursor = 1; // Número > 0
6) Coloque a seguinte diretiva de compilação abaixo da seção [b:e699ed4ece]uses[/b:e699ed4ece] para incluir o arquivo de recurso dentro do executável:
{$R CURSORES.RES}7) Coloque um botão no Form, e no evento OnCreate, digite:
procedure TForm1.FormCreate(Sender: TObject); begin Screen.Cursors[crMeuCursor] := LoadCursor(HInstance, ´MAO_IE´); Button1.Cursor := crMeuCursor; end;
Ia colocar um screenshot, mas não tenho nenhum programa aqui que capture a imagem do cursor :-(
[]´s
Gostei + 0
04/08/2005
Adriano Santos
Até mais e valeu ai [b:580b093323]Michael[/b:580b093323].
Gostei + 0
04/08/2005
Michael
[]´s
Gostei + 0
04/08/2005
Duolon
Gostei + 0
04/08/2005
Duolon
MEU_CURSOR RCDATA BANANA.ANI
brcc32 -r -32 CURSORES.RC
{$R CURSORES.RES}
const crSeuCursor = 1; // Tem que ser um valor maior que 0 (zero)
Acabei de seguir esses passos eu funfou certinho :D, só q tipo, eu queria q o cursor ficasse integrado ao execultavel (.exe) e ñ q ele criasse o cursor na mesma pasta após dar 2 cliques ao arquivo execultavel, isso é possível???
Gostei + 0
04/08/2005
Adriano Santos
Gostei + 0
04/08/2005
Duolon
const crMeuCursor = 1; // Número > 0
{$R CURSORES.RES}procedure TForm1.FormCreate(Sender: TObject); begin Screen.Cursors[crMeuCursor] := LoadCursor(HInstance, ´MAO_IE´); Button1.Cursor := crMeuCursor; end;
Essa dica ñ faz com q o cursor fique integrado ao execultavel né?
como q faço pra ficar?
Gostei + 0
04/08/2005
Duolon
segui a dica do Michael
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)