Claro que tem!

const
  CtrlState: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or 
DFCS_CHECKED);

eventos da Grid.



procedure TfrmExportaXML.DBGrid2DblClick(Sender: TObject);
begin
  if not (DM.ClientDataSet.State in [dsEdit]) then
    DM.ClientDataSet.Edit;
  if DBGrid2.SelectedIndex = 8 then
  begin
    if DM.ClientDataSet.FieldByName('CAMPO').AsString = '0' then
      DM.ClientDataSet.FieldByName('CAMPO').AsString := '1'
    else
     DM.ClientDataSet.FieldByName('CAMPO').AsString := '0';
  end
  else
  begin
    if DBGrid2.SelectedIndex = 9 then
    begin
      if DM.ClientDataSet.FieldByName('CAMPO').AsString = '0' then
        DM.ClientDataSet.FieldByName('CAMPO').AsString := '1'
      else
        DM.ClientDataSet.FieldByName('CAMPO').AsString := '0';
    end
    else
    begin
      if DBGrid2.SelectedIndex = 10 then
      begin
        if DM.ClientDataSet.FieldByName('CAMPO').AsString = '0' then
          DM.ClientDataSet.FieldByName('CAMPO').AsString := '1'
        else
          DM.ClientDataSet.FieldByName('CAMPO').AsString := '0';
      end;
    end;
  end
end;

procedure TfrmExportaXML.DBGrid2DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if DM.ClientDataSet.RecordCount > 0 then
  begin
    if (Column.FieldName = 'CAMPO') or
       (Column.FieldName = 'CAMPO') or
       (Column.FieldName = 'CAMPO')then
    begin
      Self.DBGrid2.Canvas.FillRect(Rect);
      CheckBoxRectangle.Left := Rect.Left + 2;
      CheckBoxRectangle.Right := Rect.Right - 2;
      CheckBoxRectangle.Top := Rect.Top + 2;
      CheckBoxRectangle.Bottom := Rect.Bottom - 2;

      if (DataCol = 8) then
      begin
        if (DM.ClientDataSet.FieldByName('CAMPO').AsString = '1') then
          DrawFrameControl(Self.DBGrid2.Canvas.Handle, CheckBoxRectangle, 
DFC_BUTTON, CtrlState[True])
        else
          DrawFrameControl(Self.DBGrid2.Canvas.Handle, CheckBoxRectangle, 
DFC_BUTTON, CtrlState[False]);
      end
      else
      begin
        if (DataCol = 9) then
        begin
          if (DM.ClientDataSet.FieldByName('CAMPO').AsString = '1') then
            DrawFrameControl(Self.DBGrid2.Canvas.Handle, CheckBoxRectangle, 
DFC_BUTTON, CtrlState[True])
          else
            DrawFrameControl(Self.DBGrid2.Canvas.Handle, CheckBoxRectangle, 
DFC_BUTTON, CtrlState[False]);
        end
        else
        begin
          if (DataCol = 10) then
          begin
          if (DM.ClientDataSet.FieldByName('CAMPO').AsString = '1') then
            DrawFrameControl(Self.DBGrid2.Canvas.Handle, CheckBoxRectangle, 
DFC_BUTTON, CtrlState[True])
          else
            DrawFrameControl(Self.DBGrid2.Canvas.Handle, CheckBoxRectangle, 
DFC_BUTTON, CtrlState[False]);
          end;
        end;
      end;
   end;
  end;
end;

  ----- Original Message ----- 
  From: Tiago Zacchi 
  To: Grupo_Delphi-Br 
  Sent: Friday, June 15, 2007 8:01 AM
  Subject: [delphi-br] CheckBox na DBGrid. Tem Como?


  Olá pessoal!

  Gostaria de seber se tem fazer com que um dos campos da minha DBGrid seja um 
CheckBox, ou algo parecido! Tem como fazer isso ?

  Obrigado, 

  [As partes desta mensagem que não continham texto foram removidas]



   

[As partes desta mensagem que não continham texto foram removidas]

Responder a