DBGrid - checkbox dentro da grid |
Top Previous Next |
Primeiro declare a função DesenhaCheckBox (se você usa Gestor, ela já existe no FuncoesGestorUnit) procedure DesenhaCheck(Grid: TDBGrid; const Column: TColumn; const Rect: TRect; const State: TGridDrawState; const Campo: TField; CorFundo: TColor = 0); var PosX: Integer; Cor : TColor; begin if Column.Field = Campo then begin PosX := Rect.Left + (Column.Width div 2) - (TImage.Picture.Bitmap.Width div 2); // imagem do CHECKED if (gdSelected in State) then Cor := clHighlight else Cor := clWindow; if CorFundo <> 0 then Cor := CorFundo; Grid.Canvas.FillRect(Rect); if Campo.asString = 'S' then mGraf.DrawTransparent(PosX, Rect.Top + 1, TImage.Picture.Bitmap, Grid.Canvas, Cor) // imagem do CHECKED else mGraf.DrawTransparent(PosX, Rect.Top + 1, TImage.Picture.Bitmap, Grid.Canvas, Cor); // imagem do UNCHECKED end; end;
No Evento Grid.OnCellClick
procedure TForm1.DBGrid1CellClick(Column: TColumn); begin if DBGrid.SelectedField = TbCampoCheckBox then begin Tb.Edit;
if TbCampoCheckBox.AsString = 'S' then TbCampoCheckBox.AsString := 'N' else TbCampoCheckBox.AsString := 'S';
Tb.Post; end; end;
Evento Grid.OnDrawColumnCell
procedure TForm1.MinhaGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin DesenhaCheck(MinhaGrid, Column, Rect, State, TbCampoCheckBox); end;
|