GARANTIR DESCONTO

Fórum [OFF] Carregar Cursor Personalizado - Resposta #290769

04/08/2005

0

Entre no Bloco de Notas e digite:

  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

Adriano Santos

Responder

Posts

04/08/2005

Michael

Olá colega!

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


Responder

Gostei + 0

04/08/2005

Adriano Santos

Vou ficar no aguardo porque tentei fazer isso e não consegui, se bem que eu tô meio enrolado e nem estudei muito a respeito..

valeu


Responder

Gostei + 0

04/08/2005

Adriano Santos

Bom, como o Michael disse minha dica é viável, mas existe uma forma de carregar o cursor direto do arquivo de Recurso. Dei uma fuçada rápida na internet e encontrei uma dica que fala disso.

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.


Responder

Gostei + 0

04/08/2005

Michael

Olá colega!

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


Responder

Gostei + 0

04/08/2005

Adriano Santos

Eu postei esta dica pois o [b:580b093323]duolon[/b:580b093323] em chamou me MP e eu preferi postar pra todos. Quem se interessar melhor pelos arquivos de recursos, o link que postei na mensagem anterior é muito bom e detalhado.

Até mais e valeu ai [b:580b093323]Michael[/b:580b093323].


Responder

Gostei + 0

04/08/2005

Michael

Ele tbm me chamou por MP... :-(

[]´s


Responder

Gostei + 0

04/08/2005

Duolon

Muito Obrigado pelo esclarecimento de vcs 2 :wink:


Responder

Gostei + 0

04/08/2005

Duolon

Entre no Bloco de Notas e digite:
  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: [code] 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;


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???


Responder

Gostei + 0

04/08/2005

Adriano Santos

Esqueça a minha dica e siga a dica do Michael ou no link que postei na mensagem anterior.


Responder

Gostei + 0

04/08/2005

Duolon

Olá colega! Já tinha escrito quando vc me avisou... 1) Crie um arquivo de recurso no [b:6096d1ae5d]ImageEditor[/b:6096d1ae5d], 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:6096d1ae5d]uses[/b:6096d1ae5d] 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


Essa dica ñ faz com q o cursor fique integrado ao execultavel né?
como q faço pra ficar?


Responder

Gostei + 0

04/08/2005

Duolon

Reli tudo denovo e finalmente consegui. Ufa.... :wink:
segui a dica do Michael


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar