Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tfrutuoso

Máscara de campo hora no dbgrid

Recommended Posts

Bom dia pessoal

Tenho uma consulta que trago o valor do campo hora (time no banco), e
carrego as informações em um dbgrid.
No banco o campo hora está gravado assim: 16:30:00
Preciso que no dbgrid mostre apenas o 16:30, sem os segundos.

Como faço para colocar a máscara dentro do dbgrid?

ja tentei assim:

 

TNumericField(dm.TB_cartaodig.FieldByName('ENT1')).DisplayFormat := '!90:00;1;_';
TNumericField(dm.TB_cartaodig.FieldByName('SAIDA1')).DisplayFormat := '!90:00;1;_';
TNumericField(dm.TB_cartaodig.FieldByName('ENT2')).DisplayFormat := '!90:00;1;_';
TNumericField(dm.TB_cartaodig.FieldByName('SAIDA2')).DisplayFormat := '!90:00;1;_';
assim:
TNumericField(dm.TB_cartaodig.FieldByName('ENT1')).DisplayFormat := '00:00';
TNumericField(dm.TB_cartaodig.FieldByName('SAIDA1')).DisplayFormat := '00:00';
TNumericField(dm.TB_cartaodig.FieldByName('ENT2')).DisplayFormat := '00:00';
TNumericField(dm.TB_cartaodig.FieldByName('SAIDA2')).DisplayFormat := '00:00';
tambem assim:
TTimeField(dm.TB_cartaodig.FieldByName('ENT1')).DisplayFormat := FormatDateTime('hh:nn',dm.TB_cartaodig.FieldByName('ENT1').AsDateTime);
TTimeField(dm.TB_cartaodig.FieldByName('SAIDA1')).DisplayFormat := FormatDateTime('hh:nn',dm.TB_cartaodig.FieldByName('SAIDA1').AsDateTime);
TTimeField(dm.TB_cartaodig.FieldByName('ENT2')).DisplayFormat := FormatDateTime('hh:nn',dm.TB_cartaodig.FieldByName('ENT2').AsDateTime);
TTimeField(dm.TB_cartaodig.FieldByName('SAIDA2')).DisplayFormat := FormatDateTime('hh:nn',dm.TB_cartaodig.FieldByName('SAIDA2').AsDateTime);
e com o Edit Mask, no AfterOpen da Query, e nada ate o momento, nem para digitar no formato 08:30.
será que alguem pode me ajudar nesta situação.
Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai meu camarada....

Você vai no sua query e usa o AfterPost e coloca assim...

 TDateTimeField(SuaTabela.FieldByName('HORA')).DisplayFormat := FormatDatetime('hh:nn',SuaTabela.fieldbyname('HORA').AsDateTime); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou testar aqui Adriano, qualquer novidade ja posto aqui.


Opa Adriano, acabei de colocar no codigo e nada quando vou digitar na DBGrid não pega o formato 08:30 (5 caracteres) e nem fica com esse formato, lembrando que na minha tabela esta com TIME o campo, sera que tenho que trocar a coluna para outro formato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você não troca no banco de dados mesmo?

 

O código que te passei quando você carrega o dbgrid fica com o formato que você quer(hh:nn)?

 

Ou vc altera o size para 5 caracteres...rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então porque vc não trava em 5 caracteres ...e será que se o usuario digitar errado não vai dar pau....na hora de gravar vc tem que fazer a verificação e gravar....

Formatei o pc agora pouco to sem o delphi aki agora pra testar com vc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Adriano, beleza?

 

Conseguiu ver se funcionou no seu?


Bom dia Adriano, beleza?

 

Consegui resolver da seguinte maneira, coloquei no evento da DBGridCellClick

 

TTimeField(dm.SQL_cartaodig.FieldByName('ENT1')).EditMask := '!99:99;1;_';
TTimeField(dm.SQL_cartaodig.FieldByName('SAIDA1')).EditMask := '!99:99;1;_';
TTimeField(dm.SQL_cartaodig.FieldByName('ENT2')).EditMask := '!99:99;1;_';
TTimeField(dm.SQL_cartaodig.FieldByName('SAIDA2')).EditMask := '!99:99;1;_';

e funcionou, muito obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.