Copiando os registros selecionados num dbgrid para o clipboard
Procedure CopyDBGridToClipboard(DBGrid: TDBGrid; WithHeader: Boolean;
SelectedOnly: Boolean); var
Linhas: TStringList;
i, posicao, iSelec: integer;
s: string; begin
Linhas := TStringList.Create;
Clipboard.Open;
Screen.Cursor := crHourGlass; try // Copia o Cabeçalho do DBGrid if WithHeader then begin
s := ''; for i := 0 to DBGrid.Columns.Count - 1 do begin if i > 0 then
s := s + #9; // Tabulação
s := s + DBGrid.Columns.Items[i].Field.DisplayLabel; end;
Linhas.Add(s); end;
DBGrid.DataSource.DataSet.DisableControls; // Copia os dados dos REGISTROS SELECIONADOS no DBGrid if (SelectedOnly) and (DBGrid.SelectedRows.Count > 0) then begin for iSelec := 0 to DBGrid.SelectedRows.Count-1 do begin
DBGrid.DataSource.DataSet.GotoBookmark(pointer(
DBGrid.SelectedRows.Items[iSelec]));
s := ''; for i := 0 to DBGrid.Columns.Count - 1 do begin if i > 0 then
s := s + #9; // Tabulação
s := s + DBGrid.Columns.Items[i].Field.Text; end;
Linhas.Add(s); end;
DBGrid.DataSource.DataSet.GotoBookmark(pointer(
DBGrid.SelectedRows.Items[0])); end // Copia os dados de TODOS OS REGISTROS do DBGrid else begin
Posicao := DBGrid.DataSource.DataSet.RecNo;
DBGrid.DataSource.DataSet.First; whilenot DBGrid.DataSource.DataSet.Eof do begin
s := ''; for i := 0 to DBGrid.Columns.Count - 1 do begin if i > 0 then
s := s + #9; // Tabulação
s := s + DBGrid.Columns.Items[i].Field.Text; end;
Linhas.Add(s);
DBGrid.DataSource.DataSet.Next; end;
DBGrid.DataSource.DataSet.RecNo := Posicao; end;
DBGrid.DataSource.DataSet.EnableControls;