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

(Resolvido) Campo de Data Paradox


Eder

Pergunta

Ola

Tenho um campo de data, e este campo é opcional para o usuario digitar, na maioria das vezes este campo vai ficar em branco(vazio). Porem como eu usei o EditMask e fiz uma mascara neste formato dd/mm/aaaa, sempre quando o usuario entra e digita algo(por engano as vezes), qualquer numero, e ai o usuario vê que não deveria ter digitado e tenta sair do campo, ai o erro acontece dizendo que a data é inválida, mesmo ele limpando o campo.

Pelo que notei só da o erro porque o campo tem Maskara...se não tiver não da erro, mas eu gostaria de ficar a maskara pois facilita a digitação. Neste caso uma solução seria o usuário cancelar a inclusão do registro, mas ai também não ficaria legal, fazer o camarada digitar todos os campos de novo.

Como eu poderia controlar este erro?? pois com certeza o usuario vai acabar entrando no campo e digitando as vezes por engano e vai tentar limpar e sair e vai dar erro.

muito Grato

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

exemplo: de Laércio Martins Carpes - lcarpes@iap.org.br

Ao usar um componente maskedit, quando você apaga a data e sai do campo ele dá a seguinte mensagem:

Invalid input value. Use escape key to abandon changes.

Para resolver isto basta :

procedure TForm1.MaskEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = vk_back
then maskedit1.clear;
end;
Outra maneira:
unit DBDateEdit;

interface

uses
   DateUtils, MaskUtils, DB, SysUtils, Classes, Controls, StdCtrls, Mask, DBCtrls;

type
   TDBDateEdit = class(TDBEdit)
   private
     procedure DateComplete;
   public
     procedure ValidateEdit; override;
   end;

procedure Register;

implementation

procedure Register;
begin
   RegisterComponents('delphi.about.com', [TDBDateEdit]);
end;


{ TDBDateEdit }
procedure TDBDateEdit.DateComplete;
begin
   // implementation
end;

procedure TDBDateEdit.ValidateEdit;
var
   pos : integer;
begin
   if (IsMasked) then
   if (Field.DataType = ftDateTime) OR (Field.DataType = ftDate) then
   begin
     if not Validate(Text, pos) then
     begin
       DateComplete;
     end;
   end;

   inherited;

end;

end.
Outra maneira: Mascara = !99/99/9999;1;_
procedure TFrmBlMaster.MaskEdit1Exit(Sender: TObject); 
var 
   data: TDate; 
   x: string; 
begin 
 x:=Copy(edit1.text,10,1); 
 if x =  ' ' then 
      begin 
      Showmessage('Formato da Data Inválida!!!'); 
      Flag:=True; 
      end 
 else 
    begin 
        try 
           data := StrToDate(Edit1.Text); 
       except 
             begin 
                   showmessage('Formato da Data Inválida!!!'); 
                  edit1.setfocus; 
              end 
        end; 
    end; 
end;

abraço

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...