Array
(
)

Trocar e Atualizar Valor Booleano em Grid

Adalberto
   - 07 mar 2006

Boa tarde, pessoal...

Tenho uma Grid que é alimentada por uma ADOQuery onde há um campo do tipo Boolean (Sim/Nâo) que é um campo de uma tabela Access. Na Grid os campos saem como ´True´ ou ´False´.

Há uma forma, sem usar campo Lookup, de que saia ´Sim´ ou ´Nâo´ no lugar, podendo ainda ser atualizado/trocado (´Sim´ para ´Não´ e vice-versa) utilizando por exemplo um combobox na coluna ?

Espero ter explicado direito.

Obrigado pela ajuda.


Paullsoftware
   - 07 mar 2006

certo, mais só uma ideia... não seria legal usar Chekebox???

daí vc adapta o código abaixo ao seu critério...
no OnCellClick do Grid
#Código

if Column.Field=DM_BANCO.DETLOCACAODEVOLVIDO then
begin
DM_BANCO.DETLOCACAO.Edit;
if DM_BANCO.DETLOCACAODEVOLVIDO.AsString=´S´ then
begin
DM_BANCO.DETLOCACAODEVOLVIDO.AsString := ´N´;
DM_BANCO.DETLOCACAO.Post;
end else
begin
DM_BANCO.DETLOCACAODEVOLVIDO.AsString := ´S´;
DM_BANCO.DETLOCACAO.Post;
end;
end;

no OnCollEnter do Grid
#Código

if DBGrid1.SelectedField=DM_BANCO.DETLOCACAODEVOLVIDO then
DBGrid1.Options := DBGrid1.Options - [dgEditing]
else
DBGrid1.Options := DBGrid1.Options + [dgEditing];

no OnDrawColumnCell do Grid
#Código
if Column.Field=DM_BANCO.DETLOCACAODEVOLVIDO then
begin
DBGrid2.Canvas.FillRect(Rect);
FPRINCIPAL.ImageList1.Draw(DBGrid2.Canvas,Rect.Left+10,Rect.Top+1,0);
if DM_BANCO.DETLOCACAODEVOLVIDO.AsString = ´S´ then
FPRINCIPAL.ImageList1.Draw(DBGrid2.Canvas,Rect.Left+10,Rect.Top+1,2)//Aqui carrego de um imagemList a segunda imagem que é uma imagem semelhante a um campo chekebox com seleção
else
FPRINCIPAL.ImageList1.Draw(DBGrid2.Canvas,Rect.Left+10,Rect.Top+1,1);//Aqui carrego de um imagemList a segunda imagem que é uma imagem semelhante a um campo chekebox sem seleção
end;


é só uma ideia, mais espero ter ajudado! :wink: