Fórum MessageBox #196257
20/11/2003
0
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
Curtir tópico
+ 0Posts
20/11/2003
Vanius
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
20/11/2003
Wbb
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
20/11/2003
Edukobra
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
20/11/2003
Wbb
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
Clique aqui para fazer login e interagir na Comunidade :)