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

(Resolvido) Configurar Cursor


robinhocne

Pergunta

Olá pessoal.

Como eu faço para que quando eu passar o mouse em cima do edit e quando ele estiver preenchido o cursor do mouse fica de um tipo e quando não tiver nada no edit ele fica com outro tipo de cursor?

Tipo acho que estou montando certo :

If Edit1.Text <> ' ' then
  begin
    cursor := 3dgmove;
  end
else
  begin
    cursor := 3dgarro;
  end;

Mas tipo, teria que ser na hora que for passar o mouse em cima do edit!

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Como eu faço para que quando eu passar o mouse em cima do edit e quando ele estiver preenchido o cursor do mouse fica de um tipo e quando não tiver nada no edit ele fica com outro tipo de cursor?

Tenta dessa maneira:

OBS: não tenho estes cursores, poranto usei os que acompanham o delphi

procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   If Edit1.Text <> '' then
     begin
       Edit1.cursor := crHandPoint;
     end
   else
     begin
       Edit1.cursor := crMultiDrag;
     end;

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Como eu faço para que quando eu passar o mouse em cima do edit e quando ele estiver preenchido o cursor do mouse fica de um tipo e quando não tiver nada no edit ele fica com outro tipo de cursor?

Tenta dessa maneira:

OBS: não tenho estes cursores, poranto usei os que acompanham o delphi

procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   If Edit1.Text <> '' then
     begin
       Edit1.cursor := crHandPoint;
     end
   else
     begin
       Edit1.cursor := crMultiDrag;
     end;

end;
abraço
Ok, deu certo colocando assim, mas eu queria colocar esse procedimento no meu formulario que monto os edits em tempo de execução, e ai eu fiz, mas tenho certeza que está errada:
procedure Tfrmpraticas.MudarCursor(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);

var
  Conta : Integer;
begin
   If TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).Text <> '' then
     begin
       TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).Cursor := crHandPoint;
     end
   else
     begin
       TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).cursor := crMultiDrag;
     end;
end;

Como ficaria isso com os componentes em tempo de execução

Link para o comentário
Compartilhar em outros sites

  • 0
Ok, deu certo colocando assim, mas

eu queria colocar esse procedimento no meu formulario que monto os edits em tempo de execução, e ai eu fiz, mas tenho certeza que está errada:

procedure Tfrmpraticas.MudarCursor(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);

var
  Conta : Integer;
begin
   If TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).Text <> '' then
     begin
       TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).Cursor := crHandPoint;
     end
   else
     begin
       TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).cursor := crMultiDrag;
     end;
end;
Como ficaria isso com os componentes em tempo de execução
mas tenho certeza que está errada: Amigo... Vou te dar uma ajuda...mas voce precisa estudar mais logica de programação e sintaxe dos comandos do delphi
procedure vermouse;
var i : Integer;
begin

  for i := 0 to Form1.ComponentCount -1 do
    begin
       if Form1.Components[i] is TEdit then
         begin
            if TEdit(Form1.Components[i]).Text = '' then
               begin
                  if Form1.Components[i] is TEdit then
                     TEdit(Form1.Components[i]).Cursor := crHandPoint;
                  end
               else
                  begin
                     if Form1.Components[i] is TEdit then
                        TEdit(Form1.Components[i]).Cursor := crMultiDrag;
                  end;
         end;
    end;

end;

procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   vermouse;
end;

procedure TForm1.Edit2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   vermouse;
end;

procedure TForm1.Edit3MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   vermouse;
end;

OBS: Ao passar com o cursor nos edits que estiverem no formulario, ele fara uma verificação...

se houver algum conteudo no edit ele mostrara um tipo de cursor ... caso contrario mostrara outro tipo.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Ok, deu certo colocando assim, mas

eu queria colocar esse procedimento no meu formulario que monto os edits em tempo de execução, e ai eu fiz, mas tenho certeza que está errada:

procedure Tfrmpraticas.MudarCursor(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);

var
  Conta : Integer;
begin
   If TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).Text <> '' then
     begin
       TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).Cursor := crHandPoint;
     end
   else
     begin
       TEdit( FindComponent( 'ed_' + IntToStr( Conta ) ) ).cursor := crMultiDrag;
     end;
end;
Como ficaria isso com os componentes em tempo de execução
mas tenho certeza que está errada: Amigo... Vou te dar uma ajuda...mas voce precisa estudar mais logica de programação e sintaxe dos comandos do delphi
procedure vermouse;
var i : Integer;
begin

  for i := 0 to Form1.ComponentCount -1 do
    begin
       if Form1.Components[i] is TEdit then
         begin
            if TEdit(Form1.Components[i]).Text = '' then
               begin
                  if Form1.Components[i] is TEdit then
                     TEdit(Form1.Components[i]).Cursor := crHandPoint;
                  end
               else
                  begin
                     if Form1.Components[i] is TEdit then
                        TEdit(Form1.Components[i]).Cursor := crMultiDrag;
                  end;
         end;
    end;

end;

procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   vermouse;
end;

procedure TForm1.Edit2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   vermouse;
end;

procedure TForm1.Edit3MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   vermouse;
end;
OBS: Ao passar com o cursor nos edits que estiverem no formulario, ele fara uma verificação... se houver algum conteudo no edit ele mostrara um tipo de cursor ... caso contrario mostrara outro tipo. abraço
ficou dessa maneira:
procedure Tfrmpraticas.MudarCursor;
var i : Integer;
begin

  for i := 0 to frmpraticas.ComponentCount -1 do
    begin
       if frmpraticas.Components[i] is TEdit then
         begin
            if TEdit(frmpraticas.Components[i]).Text = '' then
               begin
                  if frmpraticas.Components[i] is TEdit then
                     TEdit(frmpraticas.Components[i]).Cursor := crHandPoint;
                  end
               else
                  begin
                     if frmpraticas.Components[i] is TEdit then
                        TEdit(frmpraticas.Components[i]).Cursor := crMultiDrag;
                  end;
         end;
    end;
end;
Ai eu coloque no Evento do Mouse, mas.... os edits é criado em tempo de execucao:
for a := 1 to 7 do
            begin
               // cria o edit do codigo do aluno
               edits := TEdit.Create( Self );
               with edits do
                  begin

                     Cursor     := crCross;
                     Parent     := sbxPra;
                     Top        := top_edit;
                     Left       := left_edit;
                     Name       := 'ed_' + IntToStr( a ) + FormatDateTime( 'hhnn', HoraAtual );
                     Width      := 65;
                     //Enabled   := False;
                     ReadOnly   := True;
                     Text       := '';
                     OnDblClick := PreencheEdit;
                     OnKeyDown  := BloqueioDesbloqueio;
                     OnMouseMove := MudarCursor;         <<<<<<<<<<Procedure MudarCursor
                         with Font do
                           Begin
                              Height  := 15;
                              Name    := 'Courier New';
                              Size    := 10;
                           //   Style   := [fsBold];
                           end;
                  end;
             end;

Ai quando eu rodo ele e passo o mouse em cima ele dá esse erro:

Access violation at address 00428690 in module 'sistemacfc.exe'. Read of address 0000010

e agora o que estou fazendo de errado, passei o fim de semana inteiro nisso e nada.?

Link para o comentário
Compartilhar em outros sites

  • 0
Access violation at address 00428690 in module 'sistemacfc.exe'. Read of address 0000010

e agora o que estou fazendo de errado, passei o fim de semana inteiro nisso e nada.?

voce passar mais tempo nisso se não entender o que esta fazendo....

Cursor     := crCross;
                     Parent     := sbxPra;
                     Top        := top_edit;
                     Left       := left_edit;
                     Name       := 'ed_' + IntToStr( a ) + FormatDateTime( 'hhnn', HoraAtual );
                     Width      := 65;
                     //Enabled   := False;
                     ReadOnly   := True;
                     Text       := '';
--------------------------------------> ate aqui voce trabalhou com properiedades do componente ( sem erros )

                     OnDblClick := PreencheEdit;
                     OnKeyDown  := BloqueioDesbloqueio;
                     OnMouseMove := MudarCursor; 

--------------------------------------> aqui são eventos do componete, que antes de atribuir a eles uma procedure, voce tem que criar estes eventos  (Access violation at address 00428690 in module 'sistemacfc.exe'. Read of address 0000010 )

agora estou sem tempo para te explicar... quem sabe outro colega o ajude

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Access violation at address 00428690 in module 'sistemacfc.exe'. Read of address 0000010

e agora o que estou fazendo de errado, passei o fim de semana inteiro nisso e nada.?

voce passar mais tempo nisso se não entender o que esta fazendo....

Cursor     := crCross;
                     Parent     := sbxPra;
                     Top        := top_edit;
                     Left       := left_edit;
                     Name       := 'ed_' + IntToStr( a ) + FormatDateTime( 'hhnn', HoraAtual );
                     Width      := 65;
                     //Enabled   := False;
                     ReadOnly   := True;
                     Text       := '';
--------------------------------------> ate aqui voce trabalhou com properiedades do componente ( sem erros )

                     OnDblClick := PreencheEdit;
                     OnKeyDown  := BloqueioDesbloqueio;
                     OnMouseMove := MudarCursor; 

--------------------------------------> aqui são eventos do componete, que antes de atribuir a eles uma procedure, voce tem que criar estes eventos  (Access violation at address 00428690 in module 'sistemacfc.exe'. Read of address 0000010 )
agora estou sem tempo para te explicar... quem sabe outro colega o ajude abraço
OnDblClick := PreencheEdit;
   OnKeyDown  := BloqueioDesbloqueio;

Mas esses dois evento aqui nessa mesma posição ele funciona normalmente....sem problemas!

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