Ajuda urgente!!! Datas!!!

Delphi

27/07/2014

Estou criando um programa de controle leiteiro para meu pai, e criei um form para o cadastro de animais. Como eu faço para, se a pessoas cadastrar um animal com menos de 365 dias e coloque no campo Categoria, no qual está um TDBLookupComboBox, a categoria Novilha, mostre um mensagem dizendo: "Este animal não tem idade o suficiente para se considerado uma novilha!"?
Obs.: Sou iniciante e se explicarem, expliquem bem detalhado....
Obrigado!!!
Luís Guilherme

Luís Guilherme

Curtidas 0

Melhor post

Valquiria Silva

Valquiria Silva

28/07/2014

Olá Luís.

Você tem um campo para colocar a data de nascimento do animal?
Se tiver, pode calcular a diferença entra a data de nascimento até a data atual e quando o usuário selecionar a categoria você verifica.
Veja se o código abaixo te ajuda.

Obs.: Declare no uses DateUtils;

procedure TForm1.verificaIdade;
begin
   {Indice da categoria novilha}
   if DBLookupComboBox.ItemIndex = 1 then //este é o seu  TDBLookupComboBox
   begin
       //esta função retorna em dias a diferença entre as duas datas
       if DaysBetween(dtDBDataNascimento.Date, now) < 365 then // A primeira é data de nascimento do animal a segunda é data corrente (hoje)
       begin
          MessageBox(0,'Este animal não tem idade o suficiente para se considerado uma novilha!', 'Cadastro de animais',0); // Exibe mensagem caso seja menor 
          DBLookupComboBox.SetFocus;// volta o foco.
       end;
   end;
end;



Chame esta função no evento OnExit do seu DBLookupComboBox.
GOSTEI 1

Mais Respostas

Luís Guilherme

Luís Guilherme

27/07/2014

Vou testar aqui!!!
GOSTEI 0
Luís Guilherme

Luís Guilherme

27/07/2014

Deu estes erros..
Que não existe o membro verficaIdade no fanimais
e que não existe o membro itemIndex no TDBLookupComboBox
mas obrigado por enquanto
GOSTEI 0
Valquiria Silva

Valquiria Silva

27/07/2014

Olá Luís.

fanimais é o seu formulário?

Se for declare a função verificaidade no seu formulario

procedure Fanimais.verificaIdade;
begin
   {Tente usar o text do DBLookupComboBox }
   if SameText(Trim(DBLookupComboBox.Text), 'Novilha') then //aqui compara se o text do dblookup é igual a 'Novilha'  // não é case sensitive  
   begin
       //esta função retorna em dias a diferença entre as duas datas
       if DaysBetween(dtDBDataNascimento.Date, now) < 365 then // A primeira é data de nascimento do animal a segunda é data corrente (hoje)
       begin
          MessageBox(0,'Este animal não tem idade o suficiente para se considerado uma novilha!', 'Cadastro de animais',0); // Exibe mensagem caso seja menor 
          DBLookupComboBox.SetFocus;// volta o foco.
       end;
   end;
   
end;


Feito isso aperte as teclas Ctr+Shift+C, e essa função será declarada no cabeçalho do seu formulário, na seção private

e use no evento que te falei.

Qualquer coisa poste ai novamente.
GOSTEI 1
Luís Guilherme

Luís Guilherme

27/07/2014

Funcionou!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Muito obrigado!!!!!!!!!
GOSTEI 0
POSTAR