CheckBox no DbGrid
E ai pessoal,
E ai pessoal,
Estou com um problema. Como faço para inserir um Checkbox em um DbGrid. É que tenho uma relação de produtos e desejo listar esse produtos em um dbgrid. Sendo q uma coluna do Dbgrid tenha um checkbox. Depois de escolher os produtos, habilitando seu checkbox. Gostaria de clicar em um botao para finalizar. Onde ele vai gravar o código do produto que estao com o checkbox habilitado, juntamente com o código da OS em uma tabela de relacionamento.
Se puderem me ajudar agradeço.
Preciso saber como criar esta coluna com checkbox e como verificar se ele está habilitado.
Atenciosamente,
Fábio
E ai pessoal,
Estou com um problema. Como faço para inserir um Checkbox em um DbGrid. É que tenho uma relação de produtos e desejo listar esse produtos em um dbgrid. Sendo q uma coluna do Dbgrid tenha um checkbox. Depois de escolher os produtos, habilitando seu checkbox. Gostaria de clicar em um botao para finalizar. Onde ele vai gravar o código do produto que estao com o checkbox habilitado, juntamente com o código da OS em uma tabela de relacionamento.
Se puderem me ajudar agradeço.
Preciso saber como criar esta coluna com checkbox e como verificar se ele está habilitado.
Atenciosamente,
Fábio
Fferreira
Curtidas 0
Respostas
Paullsoftware
21/03/2006
Dê uma olhada nesse [url=http://forum.clubedelphi.net/viewtopic.php?t=74616&highlight=grid]Tópico[/url] :wink:
GOSTEI 0
Rodrigorpb
21/03/2006
Olá fferreira,
Eu já passei por isso tb, tem um componente que peguém que explica isso mas é horrível na minha opnião. Então eu fiz o seguinte:
No OnDrawColumnCell do DBGrid coloca:
Este ImageList1 é umas imagens que coloquei para True e False.
No OnColEnter do DBGrid:
No OnCellClick:
Este é o seguinte se ele estiver na Coluna IBQuerySTATUS, na hora do clique ele muda os valores borleanos no caso True e False. E quando é mudade ele salva os valores na minha tabela.
Ai no banco eu só verifico qual está True e dou o comando.
Mas quando fecho o Form eu dou um comando SQL para deixar a Coluna STATUS toda False de novo.
UPDATE CADASTRODEBATISMO SET STATUS = ´F´
Eu mudei este fonte de acordo com minhas necessidades, eu encontrei um exemplo em algum lugar da net e naum me lembro onde.
Rodrigo.
Eu já passei por isso tb, tem um componente que peguém que explica isso mas é horrível na minha opnião. Então eu fiz o seguinte:
No OnDrawColumnCell do DBGrid coloca:
procedure TFAnotarBatismo.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Column.Field = IBQuery1STATUS then begin DBGrid1.Canvas.FillRect(Rect); ImageList1.Draw(DBGrid1.Canvas,Rect.Left+10,Rect.Top+1,0); if IBQuery1STATUS.AsBoolean then ImageList1.Draw(DBGrid1.Canvas,Rect.Left+10,Rect.Top+1,1) else ImageList1.Draw(DBGrid1.Canvas,Rect.Left+10,Rect.Top+1,2); end; end;
Este ImageList1 é umas imagens que coloquei para True e False.
No OnColEnter do DBGrid:
procedure TFAnotarBatismo.DBGrid1ColEnter(Sender: TObject); begin if DBGrid1.SelectedField = IBQuery1STATUS then DBGrid1.Options := DBGrid1.Options - [dgEditing] else DBGrid1.Options := DBGrid1.Options + [dgEditing]; end;
No OnCellClick:
procedure TFAnotarBatismo.DBGrid1CellClick(Column: TColumn); begin if Column.Field = IBQuery1STATUS then begin IBQuery1.Edit; IBQuery1STATUS.AsBoolean:=not IBQuery1STATUS.AsBoolean; If Not(DM.TSSACRATUS.InTransaction) Then DM.TSSACRATUS.StartTransaction; IBQuery1.Post; IBQuery1.ApplyUpdates; DM.TSSACRATUS.CommitRetaining; end; end;
Este é o seguinte se ele estiver na Coluna IBQuerySTATUS, na hora do clique ele muda os valores borleanos no caso True e False. E quando é mudade ele salva os valores na minha tabela.
Ai no banco eu só verifico qual está True e dou o comando.
Mas quando fecho o Form eu dou um comando SQL para deixar a Coluna STATUS toda False de novo.
UPDATE CADASTRODEBATISMO SET STATUS = ´F´
Eu mudei este fonte de acordo com minhas necessidades, eu encontrei um exemplo em algum lugar da net e naum me lembro onde.
Rodrigo.
GOSTEI 0
Fferreira
21/03/2006
O Rodrigo Valeu, fiz como vc me passou e fechou certinho, só precisei fazer alguns ajustes.
Muito Obrigado a todos.
Muito Obrigado a todos.
GOSTEI 0