Ir para conteúdo
Fórum Script Brasil
  • 0

Campo Data


juniorboll

Pergunta

Ai galera to com o problema no campo data que é o seguinte se eu digitar a data certo está beleza mas caso eu começe a digitar a data e saio pro proximo campo o programa da um erro e fecha, queria saber como eu posso tratar esse erro para que quando a pessoa começe a digitar ou digite a data errada não feche o programa e sim apareça alguma msg, tipo Você digitpoou a data errada, digite novamente...

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

tipo

esse campo seria o que um edit? dbedit?

de qualquer forma, no evento OnExit do componente que vai receber a data digitada você fazer

exemplo

var

_date: tdatetime;

begin

try

_date := strtodate(edit1.text);

except

showmessage('A data digitada é inválida!');

edit1.setfocus;

exit;

end;

ou você pode ir direto mesmo sem usar variaveis

try

strtodate(edit1.text);

except

...

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Lembrando também, que ao fazer validação no evento OnExit, caso haja a possibilidade de o usuário desistir da tela, algo como clicar em um botão de cancelamento, pode ser conveniente verificar se o componente com o foco é este botão e então não executar a validação. Utilizando o código do Churc, ficaria assim:

var
  _date: tdatetime;
begin
  if ActiveControl <> nomebotão then  // *** só aplica validação se for utilizar o conteúdo digitado 
  try
    _date := strtodate(edit1.text);
  except
    showmessage('A data digitada é inválida!');
    edit1.setfocus;
  exit;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo, pelo delphi sempre vai dar pau, pois o delphi mesmo você tratando o erro, ou seja, a exceção ele vai sempre mostrar aquela mensagem de erro, tente o seguinte, compile o programa e rode sem ser pelo delphi

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

mais simples juniorboll, faz a checagem ao clicar do botão que vai alterar/adicionar o campo, no botão de cadastrar por exemplo.

try

strtodate(dbedit1.text);

except

ShowMessage('data invalida!');

dbedit1.setfocus;

Exit;

end;

por exemplo...

ou melhor ainda, usa máscaras nesse campo, ai não tem como digitar errado

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Eu usei o mask no table em data... para poder escrever e num precisar de por __/__/____

vocês que sabem mais programação podem me ajudar no que eu tava pensando, é o seguinte, eu pensei em quando a pessoa começar a escrever e deixar de completar, o programa auto completa para ela, mas como sei que fazer assim seria muito dificil eu pensei em quando ele passar sem estar completa ele jogar a data atual no campo, tem como fazer isso?

Link para o comentário
Compartilhar em outros sites

  • 0
Tipo, pelo delphi sempre vai dar pau, pois o delphi mesmo você tratando o erro, ou seja, a exceção ele vai sempre mostrar aquela mensagem de erro, tente o seguinte, compile o programa e rode sem ser pelo delphi
Churc se estiver utilizando D7 por exemplo, não precisa rodar por fora, basta desabilitar este recurso em Tools->Debugger Options->Language Exceptions e desmarcar Stop on Delphi Exceptions. As vezes utilizo isto e então adiciono break-points. Só não convém mantê-lo desabilitado, já que é um bom recurso de depuração.
...eu pensei em quando a pessoa começar a escrever e deixar de completar, o programa auto completa para ela...

se você fizer, em seu evento, algo do tipo:

- DataDigitada (string) = dbedit1.text menos os espaços em branco existentes no final de text

- DataAtual (string) = DateToStr(Date)

- verificar até onde foi digitada a data no campo DataDigitada, se até a primeira contra-barra ou segunda e daí copiar o que faltou da DataAtual. Acomposição das duas seria atribuida a dbedit1.text.

p.s. não estou podendo fazer o código agora, então se a ideia for útil e algun colega puder ajudar...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...