Fórum Evento onchange do DataTimePicker - Dephi 2007 #354845
05/03/2008
0
Faço isso no evento onchange do dtp usando a função YearsBetween.
Eu entrando com a data, manualmente, no dtp, o evento dispara normalmente.
Agora, se eu atribuir a data automaticamente, por exemplo clicando num botão, o evento não é disparado.
É algum bug do Delphi ou algum erro meu? (uso Delphi 2007)
Código de exemplo:
DataTimePicker.Date := now;
Evento onChange do dtp:
Edit.Text := IntToStr(YearsBetween(now, DataTimePicker.Date));
Evento onClick do botão:
DataTimePicker.Date := StrToDate(´01/01/1980´);
Rmarcelop
Curtir tópico
+ 0Posts
05/03/2008
Emarcolongo
eu não sei se isto é bug do d2007, pois não o instalei para testar,
mas o que vc pode fazer é disparar manualmente o evento onchange
logo depois de :
Evento onClick do botão:
DataTimePicker.Date := StrToDate(´01/01/1980´);
coloque
DataTimePicker.OnChange(nil);
Espero te ajudado.
Gostei + 0
05/03/2008
Rmarcelop
Porém, não era para isso ser feito automaticamente? Havendo uma mudança no dtp, o evento não teria de ser disparado?
Gostei + 0
05/03/2008
Onjahyr
Estou sem o Delphi aqui, mas vc poderia não usar o onChange e fazer direto?
Por quê não assim, direto:
// Sem precisar o evento onChange DataTimePicker.Date := StrToDate(´01/01/1980´); Edit.Text := IntToStr(YearsBetween(now, DataTimePicker.Date));
Gostei + 0
05/03/2008
Rmarcelop
Na verdade estou fazendo um formulário de cadastro padrão, com as opções de incluir, alterar e excluir.
Quando a opção é ´incluir´, eu inicio o dtp com a data atual, e a idade será mostrada no edit assim que o usuario entrar com a data de nascimento.
Quando a opção é ´alterar´ ou ´excluir´, eu inicio o dtp com a data armazenada no banco.
Por isso uso o evento onchange. Serviria para qualquer opção, porém como disse acima, na opção ´incluir´, onde a data é digitada no dtp, o evento ocorre normalmente, mas se a opção for ´alterar´ ou ´excluir´, onde a data vem do banco, o evento não dispara. Para funcionar, tive que usar a dica do amigo emarcolongo, após o comando:
DateTimePicker.Date := CampoDATA.AsDateTime;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)