uses Clipbrd;
function StringGridSelectText(mStringGrid: TStringGrid): string;
var
I, J: Integer;
S: string;
begin
Result := '''''''';
ifnot Assigned(mStringGrid) then Exit;
for J := mStringGrid.Selection.Top to mStringGrid.Selection.Bottom dobegin
S := '''''''';
for I := mStringGrid.Selection.Left to mStringGrid.Selection.Right do
S := S + #9 + mStringGrid.Cells[I, J];
Delete(S, 1, 1);
Result := Result + S + #13#10;
end;
end; { StringGridSelectText }procedure StringGridPasteFromClipboard(mStringGrid: TStringGrid);
var
vTextList: TStringList;
vLineList: TStringList;
I, J: Integer;
begin
vTextList := TStringList.Create;
vLineList := TStringList.Create;
vLineList.Delimiter := #9;
try
vTextList.Text := Clipboard.AsText;
for J := 0to vTextList.Count - 1dobeginif J + mStringGrid.Row >= mStringGrid.RowCount then Break;
vLineList.DelimitedText := vTextList[J];
for I := 0to vLineList.Count - 1dobeginif I + mStringGrid.Col >= mStringGrid.ColCount then Break;
mStringGrid.Cells[I + mStringGrid.Col, J + mStringGrid.Row] := vLineList[I];
end;
end;
finally
vTextList.Free;
vLineList.Free;