Eis a função.

procedure DBGridToClipBoard(DBGrid: TDBGrid; PastHeader: Boolean);
var
  StrToCopy: string;
  Idx, IdxCol: Integer;
  BookMark, SavedBookMark: TBookMark;
begin
  if DBGrid.SelectedRows.Count = 0 then
    Exit;

  StrToCopy := '';

 if yes = true then begin
  if PastHeader then
  begin
    StrToCopy := DBGrid.Columns[0].Title.Caption;
    for IdxCol := 1 to DBGrid.Columns.Count - 1 do
      StrToCopy := format('%s'#9'%s', [StrToCopy,
        DBGrid.Columns[IdxCol].Title.Caption]);
    StrToCopy := StrToCopy + #13#10;
  end;
 end;
  with DBGrid.DataSource.DataSet do
  begin
    //salva a posição atual no DBGrid
    SavedBookMark := GetBookmark;
    //evita movimentação no DBGrid
    DisableControls;
    for Idx := 0 to DBGrid.SelectedRows.Count - 1 do
    begin
      //posiciona na linha selecionada
      GotoBookMark(Pointer(DBGrid.SelectedRows[Idx]));
      StrToCopy := StrToCopy + DBGrid.Columns[0].Field.AsString;
      for IdxCol := 1 to DBGrid.Columns.Count - 1 do
        StrToCopy := Format('%s'#9'%s', [StrToCopy,
          DBGrid.Columns[IdxCol].Field.AsString]);
      StrToCopy := StrToCopy + #13#10;
    end;
    ClipBoard.Clear;
    ClipBoard.SetTextBuf(PAnsiChar(StrToCopy));
    //Restauramos o posicionamento inicial do DBGrid
    GotoBookMark(SavedBookMark);
    FreeBookMark(SavedBookMark);
    //reabilitamos movimentação no DBGrid
    EnableControls;
  end;
end;

2009/10/30 rzzanatta <rzzana...@yahoo.com.br>

>
>
> Olá galera, eu queria saber se poderia selecionar os dados de um dbgrid e
> dar Ctrl+C e colar num documento qualquer...como faço isso?
>
> 
>


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

Responder a