From b2ed81ee6e916d7b3c4119330c3fe45e4cceef4c Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Tue, 14 Nov 2017 11:40:04 +0000 Subject: [PATCH] fpspreadsheet: Avoid quoted text when copying a single cell with linebreaks to clipboard. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6070 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../source/visual/fpspreadsheetctrls.pas | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/components/fpspreadsheet/source/visual/fpspreadsheetctrls.pas b/components/fpspreadsheet/source/visual/fpspreadsheetctrls.pas index fbdbb7f93..cf603c36b 100644 --- a/components/fpspreadsheet/source/visual/fpspreadsheetctrls.pas +++ b/components/fpspreadsheet/source/visual/fpspreadsheetctrls.pas @@ -1410,6 +1410,7 @@ var sel: TsCellRangeArray; stream: TStream; savedCSVParams: TsCSVParams; + s: String; procedure CopyToClipboard(AStream: TStream; AFileFormat: TsSpreadsheetFormat; AClipboardFormat: Integer; AParams: TsStreamParams = []); @@ -1466,9 +1467,21 @@ begin CopyToClipboard(stream, sfCSV, cfCSVFormat); // Finally write TEXT format - CsvParams.Delimiter := #9; - CopyToClipboard(stream, sfCSV, CF_TEXT); - CSVParams := savedCSVParams; + if FWorksheet.GetSelectionCount = 1 then begin + s := FWorksheet.ReadAsText(FWorksheet.ActiveCellRow, FWorksheet.ActiveCellCol); + if s <> '' then begin + stream.Write(s[1], Length(s)); + stream.WriteByte(0); + stream.Position := 0; + Clipboard.AddFormat(CF_TEXT, stream); + (stream as TMemoryStream).Clear; + end; + end else + begin + CsvParams.Delimiter := #9; + CopyToClipboard(stream, sfCSV, CF_TEXT); + CSVParams := savedCSVParams; + end; // To do: XML format, ods format finally