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

Delphi

10/07/2004

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

Curtidas 0

Respostas

Fabio.hc

Fabio.hc

10/07/2004

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.


GOSTEI 0
José Silva

José Silva

10/07/2004

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


GOSTEI 0
Beppe

Beppe

10/07/2004

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;



GOSTEI 0
Dankada

Dankada

10/07/2004

[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


GOSTEI 0
José Silva

José Silva

10/07/2004

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


GOSTEI 0
Codigodelphi

Codigodelphi

10/07/2004

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;


GOSTEI 0
Moonlight

Moonlight

10/07/2004

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


GOSTEI 0
Fabio.hc

Fabio.hc

10/07/2004

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;



GOSTEI 0
POSTAR