Fórum Entrada de tempo num DBGrid #271325
07/03/2005
0
Olá,
Estou com um problema na entrada de tempo num DBGrid. Tenho um campo do tipo ´Integer´ numa tabela reservado para guardar um certo tempo em segundos. No DBGrid, pretendo que o usuário entre o tempo no formato ´hh:mm:ss´. No objeto ´field´ do respectivo campo ajustei as propriedades ´EditFormat´ e ´DisplayFormat´ para ´#::´, de forma a poder receber e exibir o tempo no formado esperado.
Criei um evento ´GetText´ para este ´field´ onde faço a conversão do valor em segundos armazenado no campo ´Integer´ para o formato de exibição no DBGrid, isto é, ´hh:mm:ss´. Até aí tudo bem. Criei um evento ´SetText´ para fazer a conversão inversa, isto é, do formato de entrada ´hh:mm:ss´ para o campo ´Integer´ do banco de dados. Ocorre que o evento ´GetText´ está sendo chamado corretamente, fazendo a conversão esperada. Entretanto, o evento ´SetText´ não está sendo chamado. Assim sendo, quando entro ´00:03:46´, o valor sendo escrito no BD está sendo de ´346´ segundos, e não de ´226´ segundos já que o ´SetText´ não está sendo chamado para fazer a conversão de volta.
Como fazer com que minha rotina de reconversão seja chamada para que quando o usuário mude de campo no DBGrid (com TAB, por exemplo), o valor correto seja mostrado e armazenado no campo ´Integer´?
Grato por qualquer auxílio.
João Lira.
Estou com um problema na entrada de tempo num DBGrid. Tenho um campo do tipo ´Integer´ numa tabela reservado para guardar um certo tempo em segundos. No DBGrid, pretendo que o usuário entre o tempo no formato ´hh:mm:ss´. No objeto ´field´ do respectivo campo ajustei as propriedades ´EditFormat´ e ´DisplayFormat´ para ´#::´, de forma a poder receber e exibir o tempo no formado esperado.
Criei um evento ´GetText´ para este ´field´ onde faço a conversão do valor em segundos armazenado no campo ´Integer´ para o formato de exibição no DBGrid, isto é, ´hh:mm:ss´. Até aí tudo bem. Criei um evento ´SetText´ para fazer a conversão inversa, isto é, do formato de entrada ´hh:mm:ss´ para o campo ´Integer´ do banco de dados. Ocorre que o evento ´GetText´ está sendo chamado corretamente, fazendo a conversão esperada. Entretanto, o evento ´SetText´ não está sendo chamado. Assim sendo, quando entro ´00:03:46´, o valor sendo escrito no BD está sendo de ´346´ segundos, e não de ´226´ segundos já que o ´SetText´ não está sendo chamado para fazer a conversão de volta.
Como fazer com que minha rotina de reconversão seja chamada para que quando o usuário mude de campo no DBGrid (com TAB, por exemplo), o valor correto seja mostrado e armazenado no campo ´Integer´?
Grato por qualquer auxílio.
João Lira.
Joao Lira
Curtir tópico
+ 0
Responder
Posts
09/03/2005
Joao Lira
Olá,
Será que esse problema é tão trivial assim ou é tão complicado que ninguém sabe a resposta?
Será que esse problema é tão trivial assim ou é tão complicado que ninguém sabe a resposta?
Responder
Gostei + 0
09/03/2005
Joaoshi
Uma opinião:
Se complicar muito, vc poderia criar um campo calculado no dataset, neste campo vc entraria com a data formatada e depois faria sua conversao.
espero que ajude.
Se complicar muito, vc poderia criar um campo calculado no dataset, neste campo vc entraria com a data formatada e depois faria sua conversao.
espero que ajude.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)