Verificar quais itens checkados DBGRID

Delphi

31/12/2014

Boa noite, estou precisando resolver um problema. Eu tenho uma DBGrid ligada a um ClientDataSet. Esse CDS tem um Field do tipo Boolean, daí eu fiz os seguintes procedimentos na minha DBGrid:
procedure TfrmEnvSMS.gridTelefonesCellClick(Column: TColumn);
begin
  with dmDados do
  begin
    CDSNumTel.Edit;

    if CDSNumTelSEL.Value = False then
      CDSNumTelSEL.Value := True
    else
      CDSNumTelSEL.Value := False;

    CDSNumTel.Post;
  end;
end;

procedure TfrmEnvSMS.gridTelefonesDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Check: Integer;
  R: TRect;
  DrawState: Integer; DrawRect: TRect;
begin
  with dmDados do
  begin
    if Column.FieldName = 'SEL' then
    begin

      gridTelefones.Canvas.FillRect(Rect);
      Check := 0;
      if CDSNumTelSEL.Value = True then
        Check := DFCS_CHECKED
      else
        Check := 0;
      R:=Rect;
      InflateRect(R,-2,-2); //Diminue o tamanho do CheckBox
      gridTelefones.Canvas.Font.Color := clWindow;
      gridTelefones.Canvas.Brush.Color := clWindow;
      gridTelefones.Canvas.FillRect(Rect);
      DrawFrameControl(gridTelefones.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check);
    end;
  end;
end;


Esses eventos acima fazem aparecer o checkbox na grid e faz com que eu marque ou desmarque o Check.
Agora vem minha dúvida, eu tenho uma rotina para envio de e-mail que deve verificar no CDS quais são os dados que estão checkados, para que somente seja enviado e-mail para esses dados checkados. Digamos que eu tenho 5 registros no CDS porém eu selecionei somente 2 na DBGrid, daí o e-mail seria enviado somente para os dois.

Se precisarem de mais alguma informação me avisem.
Uso Delphi XE
Marlon Minotti

Marlon Minotti

Curtidas 0
POSTAR