[firebase-br] IBObjects - como tratar data inválida no TIB_Date?

Gladiston Santana gladiston em vidy.com.br
Segunda Abril 19 09:40:31 -03 2021


Você coloca advertências, mas não engessa um setfocus no tedit porque você
pode ficar preso numa lógica do ovo-galinha.
Você não pode usar a classe OnBefore[Apply/Edit/Post/Insert] porque pelo
que descreveu você usa TEdits comum - não há nada errado nisso -, então
sugiro que crie um método que avalie os campos do formulário e se tudo
estiver OK o botão de gravar/aceitar/aplicar fica habilitado e desabilitado
com uma mensagem de advertência quando os requisitos para gravação não
forem cumpridos, esse método seria chamado no OnChange de seus componentes.
Contudo, há um problema porque quando os seus TEdits estão vazios e passam
a ter valor, o OnChange será chamado e com todos dados OK o botão de
gravação seria liberado, tá certo, mas isso permitiria que o colaborador
clicar em "gravar" mesmo sem alterar nada dando uma falsa atualização e
disparando possíveis processos no servidor sem nenhuma necessidade. Então,
se você puder nesse método diferenciar uma alteração feita pelo colaborador
daquele que o sistema preenche pela primeira vez e só então o método
avaliar as alterações ficaria bem melhor. Isso pode ser feito de várias
formas a mais simples que eu uso é usar a tag de um componente de
referência - geralmente uso o panel/pagecontro/form onde os tedits estão
inseridos - onde enquanto Tag=0 não considera qualquer alteração, depois
que muda para Tag=1 então o método considera avaliar as regras.

inte+ e boa sorte.

Em sex., 16 de abr. de 2021 às 14:45, Andrei Luís via lista <
lista em firebase.com.br> escreveu:

> Obrigado pelo seu tempo Gladiston, então, nesse form tenho vários edits,
> entre os quais alguns TIB_Date, que são para registrar eventos que ocorrem
> numa sequência, então o cliente / usuário me solicitou que tratasse em cada
> TIB_Date para que a data digitada não seja maior que o TIB_Date anterior e
> nem maior que o TIB_Date posterior, é o único tratamento que é feito, isso
> faço no onExit de cada TIB_date, mas já coloquei um breakpoint no primeiro
> comando dentro do onExit e o erro acontece antes de entrar no evento. O
> erro acontece independente do formato da data (pensando em ser o locale),
> por exemplo o usuário digitou 10 e esbarrou no tab, aparece msg de que 10/
> /    é uma data inválida, o que de fato é, e minha busca é em achar onde
> isso está sendo tratado.
>
> []s
> Andrei
>
>
>


Mais detalhes sobre a lista de discussão lista