Cristhor1982,
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ClipBrd;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
ClipBoard2StringGrid: TButton;
StringGrid2Clipboard: TButton;
txtRows: TEdit;
Label1: TLabel;
txtCols: TEdit;
Label2: TLabel;
procedure ClipBoard2StringGridClick(Sender: TObject);
procedure StringGrid2ClipboardClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure Split(const Delimiter: Char; Input: string; const Strings: TStrings);
begin
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := Input;
end;
procedure TForm1.ClipBoard2StringGridClick(Sender: TObject);
var
StrList : TStringList;
Row, Col, Data : Integer;
begin
StrList := TStringList.Create;
if Clipboard.HasFormat(CF_TEXT) then
begin
Split(' ',Clipboard.AsText,StrList);
StringGrid1.FixedRows := 1;
StringGrid1.FixedCols := 1;
StringGrid1.RowCount := StrToIntDef(txtRows.Text,1)+1; StringGrid1.ColCount := StrToIntDef(txtCols.Text,1)+1;
for Row:= 1 to StringGrid1.RowCount do
StringGrid1.Rows[Row].Clear;
for Col:= 1 to StringGrid1.ColCount do
StringGrid1.Cols[Col].Clear;
Data := 0;
for Row:= 1 to StringGrid1.RowCount do
for Col:= 1 to StringGrid1.ColCount-1 do
begin
if (Data <= StrList.Count-1) then
begin
StringGrid1.Cells[Col,Row] := StrList.Strings[Data];
inc(Data);
end
end
end;
StrList.Free;
end;
procedure TForm1.StringGrid2ClipboardClick(Sender: TObject);
var
StringData : String;
Row,Col : Integer;
begin
Clipboard.Clear;
StringData := '';
for Row := 1 to StringGrid1.RowCount do
begin
for Col := 1 to StringGrid1.ColCount-1 do
begin
if (StringGrid1.cells[Col,Row] <> ' ') then
StringData := StringData + StringGrid1.cells[Col,Row] + #9;
end;
StringData := StringData + #13 + #10;
end;
Clipboard.AsText := StringData;
end;
end.
El código anterior permite copiar por medio del Clipboard filas y columnas de data desde y hacia un control TStringGrid, es práctico para el intercambio de data con Excel.
Espero sea útil
Nelson.