DBGrid - colocando checkbox em uma coluna da grid

Top  Previous  Next

/////// modo legal

 

procedure TForm1.DBGrid1DrawColumnCell(

   Sender: TObject; const Rect: TRect; DataCol: Integer; 

   Column: TColumn; State: TGridDrawState);

var

   Check: Integer;

begin

   if Column.FieldName = '' then

   begin

      DBGrid1.Canvas.FillRect(Rect);

      Check := 0;

      if Table1['PREFERRED'] then

         Check := DFCS_CHECKED;

      DrawFrameControl(DBGrid1.Canvas.Handle, Rect,

         DFC_BUTTON, DFCS_BUTTONCHECK or Check);

   end

   else

      DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;

 

------------------------------- exemplo 2 ------------------------------

// coloque ROWSELECT e ALWAYS SHOW SELECION para TRUE

 

procedure TMainForm.GridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

var

  PosX: Integer;

  Cor : TColor;

begin

  if Column.Field = TbMarca then

  begin

    PosX := Rect.Left + (Column.Width div 2) - (Image1.Picture.Bitmap.Width div 2);

    if (gdSelected in State) then Cor := clHighlight else Cor := clWindow;

    Grid.Canvas.FillRect(Rect);

    if TbMarca.AsBoolean then

      DrawTransparent(PosX, Rect.Top + 1, Image1.Picture.Bitmap, Grid.Canvas, Cor)

    else

      DrawTransparent(PosX, Rect.Top + 1, Image2.Picture.Bitmap, Grid.Canvas, Cor);

  end;

end;