Condição de data em delphi

Delphi

25/11/2016

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.
Silvio Souza

Silvio Souza

Curtidas 0

Melhor post

Tone Costa.

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;
GOSTEI 1

Mais Respostas

Bruno

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
GOSTEI 0
Silvio Souza

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?
GOSTEI 0
Silvio Souza

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.
GOSTEI 0
Tone Costa.

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;
GOSTEI 1
Silvio Souza

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
POSTAR