Condição de data em delphi
boa tarde galera, sou novo aqui no forum e tenho uma duvida que eu acho que nao é tao dificil mas nao consegui achar em lugar algum.
tenho uma tela de cadastro no delphi e um campo de data de nascimento, um DBEdit, que é do tipo date, quero que nao de para cadastrar pessoas menores de 18 anos, entao estava tentando com o codigo:
Begin
if strtodate(DBEdit3.text) >= 01/01/1998 then
begin
application.MessageBox('Por favor, Digite uma data válida','Atenção', MB_OK+MB_ICONEXCLAMATION);
abort;
end
else
end;
ele roda no entando nao da muito certo, pois nao consigo cadastrar com ano 1900 ou superior (meio doido o negocio kkkk).
entao galera gostaria de saber se tem uma forma de fazer essa condição, se ja houver um tópico assim, me desculpem eu realmente nao achei, obrigado a todos e uma boa tarde.
tenho uma tela de cadastro no delphi e um campo de data de nascimento, um DBEdit, que é do tipo date, quero que nao de para cadastrar pessoas menores de 18 anos, entao estava tentando com o codigo:
Begin
if strtodate(DBEdit3.text) >= 01/01/1998 then
begin
application.MessageBox('Por favor, Digite uma data válida','Atenção', MB_OK+MB_ICONEXCLAMATION);
abort;
end
else
end;
ele roda no entando nao da muito certo, pois nao consigo cadastrar com ano 1900 ou superior (meio doido o negocio kkkk).
entao galera gostaria de saber se tem uma forma de fazer essa condição, se ja houver um tópico assim, me desculpem eu realmente nao achei, obrigado a todos e uma boa tarde.
Silvio Souza
Curtidas 0
Melhor post
Tone Costa.
25/11/2016
O código abaixo vai funcionar
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
DataInicial : TDateTime;
begin
DataInicial := IncMonth(now,(18*-12));
if StrToDate(Edt_DataNascimento.Text) > dataInicial then
begin
showMessage('Você não tem 18 anos ');
Abort;
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
DataInicial : TDateTime;
begin
DataInicial := IncMonth(now,(18*-12));
if StrToDate(Edt_DataNascimento.Text) > dataInicial then
begin
showMessage('Você não tem 18 anos ');
Abort;
end;
end;
GOSTEI 1
Mais Respostas
Bruno
25/11/2016
Tenta converter o formato de data para o Ingles e compara o resultado...
var
Data_Atual: string;
Data_vencimento: string;
begin
Data_Atual := FormatDateTime('yyyy/mm/dd', Date);
Data_Vencimento := '2014/02/20';
if (Data_Vencimento < Data_Atual) then
ShowMessage('A Data de Vencimento é menor que a data atual');
end;
provavelmente vi funcionar.. eu nao testei aq.
mas qlqr coisa agnt tenta outra forma se nao der certo
var
Data_Atual: string;
Data_vencimento: string;
begin
Data_Atual := FormatDateTime('yyyy/mm/dd', Date);
Data_Vencimento := '2014/02/20';
if (Data_Vencimento < Data_Atual) then
ShowMessage('A Data de Vencimento é menor que a data atual');
end;
provavelmente vi funcionar.. eu nao testei aq.
mas qlqr coisa agnt tenta outra forma se nao der certo
GOSTEI 0
Silvio Souza
25/11/2016
entao no caso eu tenho q declarar uma variavel que vai receber a data que eu digitar no edit né?
tipo em vez de "Data_vencimento" eu coloco, por exemplo data_informada = dbedit3 ? algo assim?
tipo em vez de "Data_vencimento" eu coloco, por exemplo data_informada = dbedit3 ? algo assim?
GOSTEI 0
Silvio Souza
25/11/2016
Muito obrigado, deu super certo, sei que é chato pedir mas vc poderia explicar o codigo pra mim poder entender melhor?
Tipo quero aprender mesmo sabe? se voce puder mesmo, se nao de boa eu tento entender aqui, mas muito obrigado deu certinho.
Tipo quero aprender mesmo sabe? se voce puder mesmo, se nao de boa eu tento entender aqui, mas muito obrigado deu certinho.
GOSTEI 0
Tone Costa.
25/11/2016
Não sei se é a minha resposta, mas ....
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
DataInicial : TDateTime; { Definir uma variavel para ser a data minima para a pessoa ter 18 anos.}
begin
DataInicial := IncMonth(now,(18*-12))
; { aqui eu uso a funcao incMonth para somar meses em uma data. Como no caso eu quero que seja retroativo, eu faço a conta negativa que vai subtrair da data de hoje 216 meses que corresponde a 18 anos x 12 meses, encontrando assim a data minima de uma pessoa com 18 anos}
if StrToDate(Edt_DataNascimento.Text) > dataInicial then { Aqui verifico se a data de nascimento for maior que a data minima para maiores de 18 anos}
begin
showMessage(''Você não tem 18 anos '');
Abort;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
DataInicial : TDateTime; { Definir uma variavel para ser a data minima para a pessoa ter 18 anos.}
begin
DataInicial := IncMonth(now,(18*-12))
; { aqui eu uso a funcao incMonth para somar meses em uma data. Como no caso eu quero que seja retroativo, eu faço a conta negativa que vai subtrair da data de hoje 216 meses que corresponde a 18 anos x 12 meses, encontrando assim a data minima de uma pessoa com 18 anos}
if StrToDate(Edt_DataNascimento.Text) > dataInicial then { Aqui verifico se a data de nascimento for maior que a data minima para maiores de 18 anos}
begin
showMessage(''Você não tem 18 anos '');
Abort;
end;
GOSTEI 1
Silvio Souza
25/11/2016
sim era vc mesmo Tone, poxa vlw mesmo vou tentar mudar a condição para dar o erro em uma pessoa com mais de 100 anos tbm, muito obrigado, abraço
GOSTEI 0