Passar de um campo para outro se usar o TAB ou ENTER
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.
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
Curtidas 0
Respostas
Fabio.hc
10/07/2004
Tente assim:
Faça todos o edit´s chamar este evento no onChange edit1.
Defina o MaxLength de cada edit.
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
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
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
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
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
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
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
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
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;
if key=#13 then
begin
selectnext(sender as twincontrol, true, true);
key:=0;
end;
GOSTEI 0
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
10/07/2004
Com DBEdit, tente assim:
Ou 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