CheckBox no DbGrid
21/03/2006
0
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
Posts
21/03/2006
Paullsoftware
21/03/2006
Rodrigorpb
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.
21/03/2006
Fferreira
Muito Obrigado a todos.
Clique aqui para fazer login e interagir na Comunidade :)