Ver Mensaje Individual
  #2  
Antiguo 28-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola GerTorresM.

Creo que podrías hacer así:
Código Delphi [-]
type
  TDBGridEx = class(TDBGrid); 
  TForm1 = class(TForm)
    ...
    DBGrid1: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
  public
    procedure DBGridToClipBoard(DBGrd: TDBGridEx);
  end;
...
implementation 

uses ClipBrd;
...
{ Pasar contenido de los campos al portapapeles }
procedure TForm1.DBGridToClipBoard(DBGrd: TDBGridEx);
var
  i,j: Integer;
  BM: TBookmarkStr;
  s: string;
begin
  DBGrd.DataSource.DataSet.DisableControls;  // evita parpadeo en la grilla
  try
    BM:= DBGrd.DataSource.DataSet.Bookmark;  // guardar posición
    DBGrd.DataSource.DataSet.MoveBy(1 - DBGrd.Row); // ir a 1era fila
    s:= '';
    for i:= 1 to DBGrd.RowCount - 1 do  // nro filas mostradas
    begin
      for j:= 0 to DBGrd.FieldCount - 1 do   // campos
      begin
        s:= s + DBGrd.Fields[j].AsString;
        if i < DBGrd.RowCount  then s:= s + '-'; // separador de campos (el que gustes)
      end;
      s:= s + #10#13;                  //CRLF
      DBGrd.DataSource.DataSet.Next;   // siguiente fila
    end;
    ClipBoard.SetTextBuf(PChar(s));  // a portapapeles
    DBGrd.DataSource.DataSet.Bookmark:= BM; // restaurar posición
  finally
    DBGrd.DataSource.DataSet.EnableControls;
  end;
end;
...

Ejemplo de uso:
Código Delphi [-]
{ a portapapeles }
procedure TForm1.Button1Click(Sender: TObject);
begin
  DBGridToClipboard(TDBGridEx(DBGrid1));
end;

{ mostrar }
procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(ClipBoard.AsText);
end;


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 28-12-2010 a las 04:18:50.
Responder Con Cita