Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Trocar Cursores em Delphi


-= NemesiS =-

Pergunta

Olá pessoal do Script Brasil.

Gostaria de saber como faço pra trocar os cursores padrão do delphi, de uma vez só (sem ter que ficar declarando em todo form o novo cursor..)

tenho pronto os cursores que vou usar , um para cada situação , seta, maozinha, sql wait, ampulheta.., etc..

como posso declarar a substituição dos cursores padroes pelo meu de uma vez só, sem ter que declarar todas vez em todo o form.. ?????

Toda ajuda é bem vinda !

Valews pessoal.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

O arquivo que guarda os cursores do delphi é o controls.res que está dentro da pasta LIB

pelo help do delphi temos

Este exemplo mostra como acrescentar cursores a uma aplicação. Assume que um cursor de costume com o nome NewCursor foi acrescentado aos recursos (.RES arquivo) da aplicação. Você pode adicionar o cursor usando o editor de imagem. (Ferramentas | o Editor de Imagem)

O código seguinte faz este cursor disponível para a aplicação pela constante crMyCursor e joga este este como cursor global para a aplicação.

const  
  crMyCursor = 5;  
procedure TForm1.FormCreate(Sender: TObject);  
begin  
  Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'NewCursor');  
  Cursor := crMyCursor;  
end;

ainda não fiz um teste se trocando o arquivo controls.res por um outro, feito por mim funcionaria ...

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Jhonas.

até aki eu intendi perfeitamente.

const  
  crMyCursor = 5;  
procedure TForm1.FormCreate(Sender: TObject);  
begin  
  Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'NewCursor');  
  Cursor := crMyCursor;  
end;
entaum por exemplo posso ciar uma função global assim.
function setCursor():boolean; begin

Screen.Cursors[crDefault] := loadCursorFromFile('dafault.cur');
Screen.Cursors[crWait] := loadCursorFromFile('wait.cur');
Screen.Cursors[crHand] := loadCursorFromFile('hand.cur');
Screen.Cursors[crSqlWait] := loadCursorFromFile('sql.cur');
...
..
.

end;
e para cada cursor vou usar: Cursor := crMeuCursor ??, iso não é só para a seta (crDefault) ???, e para a mão, a ampulheta, sql etc...?? como ficaria ?? Só mais uma dúvida.
crMyCursor = 5;

porque igaul á 5 ????

oque significa o 5 ??

resumindo, ai em cada form somente chamo a função. certo ?

Valews.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

cada cursor possui um numero como indice .... crMyCursor = 5 significa que o indice de numero 5 passará a ter este novo icnone definido para ele ... exemplo:

Constant Value Image

crDefault 0 Whatever cursor is the default for the window class (usually crArrow).

crNone -1

crArrow -2

crCross -3

crIBeam -4

crSizeNESW -6

crSizeNS -7

crSizeNWSE -8

crSizeWE -9

crUpArrow -10

crHourGlass -11

crDrag -12

crNoDrop -13

crHSplit -14

crVSplit -15

crMultiDrag -16

crSQLWait -17

crNo -18

crAppStart -19

crHelp -20

crHandPoint -21

crSize -22 (obsolete)

crSizeAll -22

Para ver melhor, clique na propriedade Cursor do Form e tecle F1 depois clique em TCursor

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Jhonas.

Declarei algumas constatntes de cursores que irei usar, como você mensionou.

depois usei o screen.cursor[crConstDoCursor] := loadCursorFromFile('meusursor.ani')

mesmo assim não deu certo. :(

será que ele não consegue interpretar cursores do tipo .ani ??

ai depois procurei o arquivo controls.res e modifiquei o arquivo para os meus cursores. (na pasta do delphi, lógico fiz um backup :) )

fechei e abri o delphi, compilei o meu projeto, e ai sim funcionou, mas porém não são todos os cursores que estão no arquivo .res

preciso ainda substituir a ampulheta, e mais alguns que não estão no arquivo.

o cursor crSqlWait está no arquivo .res é do tipo cur, existe a possibilidade de carregar um arquivo .ani (animado) no lugar de um .cur ??

meus cursores estão em uma pasta no meu projeto e terão de ser carregados atraves de: loadCursorFromFile();

Toda ajuda é bem vinda.

Valews

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

ai depois procurei o arquivo controls.res e modifiquei o arquivo para os meus cursores. (na pasta do delphi, lógico fiz um backup )

fechei e abri o delphi, compilei o meu projeto, e ai sim funcionou, mas porém não são todos os cursores que estão no arquivo .res

Observe no post acima que os indices começam com 0 e vão decrescendo -1, -2, -3 ... etc procure usar do mesmo modo

procure no help do delphi .... tem mais informações sobre como usar outros cursores

exemplo :

TScreen.Cursors

Lists the cursors available to the application.

property Cursors[index: Integer]: HCursor;

Description

Use Cursor to access a particular cursor for use by the application or by a control within the application. TScreen includes several built-in cursors that are indexed by symbolic cursor constants. The image associated with the built-in cursors constants can be changed by setting the Cursors property.

Custom cursors can be added to the Cursors property for use by the application or any of its controls. To add a custom cursor to an application:

1 Create the cursor resource using a resource editor.

2 Declare a cursor constant with a value that does not conflict with an existing cursor constant.

3 Use the Windows API function LoadCursor to obtain a handle to the new cursor.

4 Set the Cursors property, indexed by the newly declared cursor constant, to the handle obtained from LoadCursor.

Note: Don’t call the Windows API function DestroyCursor when finished with a custom cursor; Delphi does this automatically.

Tradução

TScreen.Cursors

Listas os cursores disponível à aplicação.

propriedade Cursors[index: Integer]: HCursor;

Descrição

Use Cursors para ter acesso um cursor particular para uso pela aplicação ou por um controle dentro da aplicação. TScreen inclui vários cursores embutidos que são indexados através de constantes de cursor simbólicas. A imagem associada com as constantes de cursores embutidas pode ser mudada setando a propriedade Cursors.

Podem ser acrescentados cursores à propriedade de Cursors para uso pela aplicação ou quaisquer de seus controles. Para acrescentar um cursor a uma aplicação:

1 crie o recurso de cursor usando um editor de recurso.

2 declare uma constante cursor com um valor que não está em conflito com uma constante de cursor existente.

3 use a função API do Windows LoadCursor para obter um handle para o novo cursor.

4 Setar a propriedade de Cursors, indexada pela constante de cursor recentemente declarada, para a Handle obtida de LoadCursor.

Nota: não chame a função API do Windows DestroyCursor quando finalizar com um cursor de costume; Delphi faz isto automaticamente.

Carregar um cursor animado em sua aplicação

Delphi

procedure TForm1.Button3Click(Sender: TObject);
const 

NovoCursor = 1;
begin
Screen.Cursors[ NovoCursor ] :=
LoadCursorFromFile('c:\windows\cursorsglobe.ani' );
Cursor := NovoCursor;
end; 

OBS. Para descarregar o cursor animado troque a string 'c:\windows\cursors\globe.ani' por 'OCR_NORMAL'.
outro exemplo
implementation

{$R *.DFM}
{$R cursors.RES}

const
   CrNewCursor = 5;

procedure TForm1.FormCreate(Sender: TObject);
var
   Res : TResourceStream;
begin
   Res := TResourceStream.Create(hInstance, 'MY_Cursor',
Pchar('anicursor'));
   Res.SavetoFile('move.ani');
   Res.Free;
   Screen.Cursors[CrNewCursor] := LoadCursorFromFile('move.ani');
   DeleteFile('move.ani');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
      Label1.Cursor := CrNewCursor;
end;
end.
outros http://www.mail-archive.com/delphi-br@yaho...r/msg00705.html
Colocando cursores animados em arquivos de recursos  
{Criando o arquivo RC
ANICUR RCDATA "c:\windows\cursors\appstart.ani"
User o BRCC32.EXE para criar o arquivo CURSOR.RES
Declare no form que for usar:}

{$R CURSOR.RES}

var
CurRes : TResourceStream;
begin
CurRes := TResourceStream.Create(hInstance, 'ANICUR', RT_RCDATA);
try
CurRes.savetofile('tempcur.ani');
try
Screen.Cursors[1] := LoadCursorFromFile('tempcur.ani');
Screen.Cursor := 1;
finally
DeleteFile('tempcur.ani');
end;
finally
CurRes.Free;
end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Colega tem aqui uma dica de como usar seus cursores animados.

unit UnitLogin;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, jpeg, ExtCtrls,db, Buttons, DBCtrls, yupack, RXCtrls, Mylabel,
  RxGrdCpt;
const
MythNo =1; //aqui você declara o cursor, ou os cursores...(só o nome dos cursor sem .ani )
type
  TFrmLogin = class(TForm)
    iblnome: TLabel;
    iblsenha: TLabel;
    EdSenha: TEdit;
    PnlMensagem1: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    EdNome: TComboBox;
    PnlMensagem: TLabel;
    Bevel1: TBevel;
    RxGradientCaption1: TRxGradientCaption;
    Image1: TImage;
    procedure BtnCancelarClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure EdNomeChange(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure EdSenhaKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateEdNomeList;
  end;

var
  FrmLogin: TFrmLogin;

implementation
Para usar o cursor,meta ele no directório da Aplicação e use assim.;)
procedure TFrmLogin.FormCreate(Sender: TObject);
begin
Screen.Cursors [MythNo] := LoadCursorFromFile ('MythNo.ani');//Aqui você chama o cursor ??? .ani.
Screen.cursor:=MythNo;
end;

Espero que tenha ajudado você. :D

Abraços

Editado por António44
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...