MessageBox

Delphi

20/11/2003

Pessoal,

Em meu programa as mudanças de foco dos campos é feita através de Enter. Em alguns campos eu coloquei algumas verificações (como formato de CEP, por ex.) e, caso o usuário digite errado o número uma mensagem de erro é emitida. Até aí tudo OK. O problema acontece após fechar a mensagem que programei. Como a mudança do cursor é automática ao pressionar Enter, o próximo campo deveria receber o foco mas não está recebendo. Ao contrário, fica até travada a entrada do cursor. Para que eu consiga fazer com que o campo seguinte receba o cursor, e consequntemente o foco, é necessário que um outro campo seja ativado o foco antes. Aí sim aquele campo que estava na sequência é habilitado e recebe o cursor normalmente.
Quando o usuário não gera erro, a mesnsagem não é emitida e o processo segue sem problemas ao pressionar Enter.

Alguém já viu isso? Gostaria de saber por que quando uma mensagem é emitida dá esse erro e como resolver.

Obrigado.
wbb


Wbb

Wbb

Curtidas 0

Respostas

Vanius

Vanius

20/11/2003

Boa tarde.


O texto ta meio confuso, mas tente.

Apos a msg de erro coloque:

campo2.setFocus; //vai para o 2º campo
Campo1.setFocus; //volta para o 1º campo.


De uma lida na Revista ClubeDelphi nº 31, ´O guia completo de Validação de dados.´
ou clubedelphi.com.br/edicao31/download.asp e acesse o link ´Métodos de Validação´.

Abraços,


Vanius


GOSTEI 0
Wbb

Wbb

20/11/2003

Obrigado pela ajuda novamente Vanius.

Realmente é uma coisa de outro mundo esses tipos de erros... Fica confuso mesmo.
De qualquer forma, estou testando agora da seguinte maneira:

Application.MessageBox(´TEXTO PARA EXIBIÇÃO´, ´TÍTULO´, MB_OK + MB_ICONERROR);

Estou fazendo alguns testes e me parece que até agora funcionou. Vou testar mais para ter certeza.
Antes eu estava fazendo como segue e dava o problema que citei:

MessageBox(Handle, ´TEXTO PARA EXIBIÇÃO´, ´TÍTULO´, MB_OK + MB_ICONERROR);

Valeu pela dica!
wbb


GOSTEI 0
Edukobra

Edukobra

20/11/2003

Caro amigo pelo que entendi o problema seu está na validação da digitação, tipo assim:
if editCep <> valor then
begin
messagebox(handle,´mensagem´,´Erro´,MBN_OK or MB_ICONWARNING);
editCep.SetFocus;
SetActiveWindows(application.handle);
end;

Tente desta maneira que eu acho que vai resolver.
O problema do messagebox é que ele perde o foco em algumas situações, então é necessário colocar setactivewindow(appliction.handle), eu não manjo muito bem desta parte, mas sei que desta maneira a aplicação continua com o foco.


GOSTEI 0
Wbb

Wbb

20/11/2003

edukobra,
Agradeço a atenção. Da forma Application.MessageBox conforme comentei antes, acabou dando certo.
Tentei usar da sua maneira e realmente deu certo também. Na falta de solução agora está sobrando... Antes assim! :D

Obrigado mais uma vez.
wbb


GOSTEI 0
POSTAR