Fórum Grid com colunas tipo checkbox #285567
21/06/2005
0
Flacandido
Curtir tópico
+ 0Posts
21/06/2005
Daia
Gostei + 0
21/06/2005
Massuda
Gostei + 0
21/06/2005
Sandra
http://forum.clubedelphi.net/viewtopic.php?t=29891&highlight=guinther+pauli
Gostei + 0
21/06/2005
Jairroberto
Você pode simular um check box com imagens, pintando a coluna do tipo Boolean de acordo com o valor do campo vinculado a ela. Veja um exemplo de código:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var r: TRect; Centro: Integer; b: TBitmap; begin inherited; if Column.Field.DataType = ftBoolean then begin with TDBGrid(Sender) do begin DefaultDrawColumnCell(Rect, DataCol, Column, State); if not Column.Field.IsNull then begin b := TBitmap.Create; try if Column.Field.AsBoolean then b.LoadFromResourceName(HInstance, ´CHECK_ON´) else b.LoadFromResourceName(HInstance, ´CHECK_OFF´); Centro := ((Rect.Right - Rect.Left + 1) div 2) + Rect.Left; r.Top := Rect.Top + 2; r.Bottom := r.Top + b.Height; r.Left := Centro - ((b.Width + 1) div 2); r.Right := r.Left + b.Width; Canvas.FillRect(Rect); Canvas.Draw(r.Left, r.Top, b); finally b.Free; end; end; end; end else TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
Você também pode usar o mouse para alterar o valor do campo:
procedure TForm1.DBGrid1CellClick(Column: TColumn); begin if Column.Field.DataType = ftBoolean then begin if not (Column.Field.DataSet.State in dsEditModes) then Column.Field.DataSet.Edit; Column.Field.AsBoolean := not Column.Field.AsBoolean; end; end;
Um abraço,
Jair
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)