GARANTIR DESCONTO

Fórum Alterar campo no dbgrid #188267

13/10/2003

0

Tenho uma query que me retorna os seguintes valores:
NF FlagNF Dta
1254 1 10/10/2003
1256 1 5/10/2003
1257 0 10/10/2003

Queria que o dbgrid, no campo flagnf, qdo for ´1´ aparecesse ´SIM´ e qdo for ´0´ aparecesse ´NÃO´.

Fiz assim :
if qNF.FieldByName(´flagnf´).AsString = ´1´ then
DBGrid3.Columns[2].FieldName := ´SIM´
else
DBGrid3.Columns[2].FieldName := ´NÂO´;
Não deu certo.


Julianomc

Julianomc

Responder

Posts

13/10/2003

Rafael Heise

Você pode fazer de duas formas
1) Desenhar direto na grid no evento OnDrawCell testando o valor do registro Tabela.FieldByName(Campo) = 1 then
grid.canvas.textout(..,´Sim´) ou grid.canvas.textout(..,´Não´)

2) Ou usar um campo calculado. Para isso, na tabela você precisa adicionar todos os campos, adicionar um campo calculado e então no OnCalcField fazer if Campo = 1 then Calculado := ´Sim´ senão Calculado := ´Não´

abraços


Responder

Gostei + 0

14/10/2003

Julianomc

Teria que fazer da primeria maneira que vc indicou, mas não deu certo.


Responder

Gostei + 0

14/10/2003

Julianomc

Ele não aparece o SIM e NÂO na célula. Aparece no canto esquerdo do grid. Queria que aparecesse no campo Flagnf(dbgridNFB.Columns[2]).


Responder

Gostei + 0

14/10/2003

Rafael Heise

Mas o erro é seu.
Você está passando como parâmetros Left e Top 0 e 0 (zeros).
Não pode... dessa forma, considerando a grid uma grade ou um gráfico, na posição 0,0 ele desenhará.
Você tem que usar a posição que vem com o Rect.
Se você quer centralizado
Use
Rect.Left + ((Rect.Right - Rect.Left - Canvas.TextWidth(´Sim´)) div 2);
e
Rect.Top + ((Rect.Bottom - Rect.Top - Canvas.TextHeigth(´Sim´)) div 2);
Isso vai retornas as posições que você tem que passar no TextOut.
Não sei se as palavras estão escritas certas, mas é mais ou menos isso.
Veja no Code Inside.
Se você tivesse olhado no help veria isso...

boa sorte...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar