Passar de um campo para outro se usar o TAB ou ENTER

10/07/2004

0

Pessoal!

gostaria de saber se existe alguma rotina ou comando q faça a mudança de um campo para outro sem precisar usar o TAB ou ENTER, por exemplo: no Edit 1 o campo maximo de caracteres é 5 e no Edit 2 tambem, quando eu acabar de digitar no Edit 1, automaticamente ele passe o curso para o Edit 2 e assim sucessivamente em todos os Edits que existirem no Form.


José Silva

José Silva

Responder

Posts

11/07/2004

Fabio.hc

Tente assim:

procedure TForm1.Edit1Change(Sender: TObject);
begin
   if (Sender as TEdit).MaxLength = Length((Sender as TEdit).Text) then
      Perform(WM_NEXTDLGCTL,0,0);
end;


Faça todos o edit´s chamar este evento no onChange edit1.
Defina o MaxLength de cada edit.


Responder

11/07/2004

José Silva

colega fiz o q vc mandou mais nao funcionou
coloquei a linha de comando no primeiro DBEdit e lliguei todos os outros com o mesmo comando. so q ao executar o aplicativo, informa uma mensagem de erro dizendo o seguinte:

Exceção EInvalidcast no modulo Paiol.exe. Not 000A82EB
Typecast de classe invalido.

como resolvo este problema?

Obrigado pela atenção


Responder

11/07/2004

Beppe

Tenta assim então:

procedure TForm1.DBEdit1Change(Sender: TObject); 
begin 
   if (Sender as TCustomEdit).MaxLength = Length((Sender as TCustomEdit).Text) then 
      Perform(WM_NEXTDLGCTL,0,0); 
end;



Responder

11/07/2004

Dankada

[quote:72e7d4d36b=´José Carlos S. da Silva´]colega fiz o q vc mandou mais nao funcionou
coloquei a linha de comando no primeiro DBEdit e lliguei todos os outros com o mesmo comando. so q ao executar o aplicativo, informa uma mensagem de erro dizendo o seguinte:

Exceção EInvalidcast no modulo Paiol.exe. Not 000A82EB
Typecast de classe invalido.

como resolvo este problema?

Obrigado pela atenção[/quote:72e7d4d36b]

eu acabei de testa essa rotina q o nosso amigo acima informou e ela funciona perfeitamente, vc deve esta fazendo algo errado ai

ps. seleciona todo os edits e vai no evento onChange e coloca a rotina que vai funcionar


Responder

11/07/2004

José Silva

fiz q me mandou mais deu erro na linha onde estar em negrito:

if (Sender as TCustomEdit[b:31b48ddb49]).MaxLength[/b:31b48ddb49] = Length((Sender as TCustomEdit).Text) then

este codigo so funciona com EDIT? nao funciona com DBEDIT? estou usando tabela parafox


Responder

11/07/2004

Codigodelphi

Se voce so quiser trocar TAB por ENTER pode usar o segunte codigo:

if key=#13 then
begin
selectnext(sender as twincontrol, true, true);
key:=0;
end;


Responder

12/07/2004

Moonlight

Se nenhum dos acima funcionar, dê uma olhada na pesquisa. Com certeza você vai achar algo por lá.


Responder

12/07/2004

Fabio.hc

Com DBEdit, tente assim:

procedure TForm1.DBEdit1Change(Sender: TObject);
begin
   if (Sender as TDBEdit).MaxLength = Length((Sender as TDBEdit).Text) then
       Perform(WM_NEXTDLGCTL,0,0);
end;


Ou assim:

procedure TForm1.DBEdit1Change(Sender: TObject);
begin
   if (Sender as TDBEdit).Field.DisplayWidth = Length((Sender as TDBEdit).Text) then
       Perform(WM_NEXTDLGCTL,0,0);
end;



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar