mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 21:39:11 +02:00
LCL, stringgrid, allow to export to CSV only visible columns, from Alexsander Rosa
git-svn-id: trunk@39114 -
This commit is contained in:
parent
47a8c9c3a4
commit
2c9cbd6b0e
@ -1558,8 +1558,10 @@ type
|
|||||||
procedure CopyToClipboard(AUseSelection: boolean = false);
|
procedure CopyToClipboard(AUseSelection: boolean = false);
|
||||||
procedure LoadFromCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true);
|
procedure LoadFromCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true);
|
||||||
procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=','; WithHeader: boolean=true);
|
procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=','; WithHeader: boolean=true);
|
||||||
procedure SaveToCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true);
|
procedure SaveToCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true;
|
||||||
procedure SaveToCSVFile(AFileName: string; ADelimiter: Char=','; WithHeader: boolean=true);
|
VisibleColumnsOnly: boolean=false);
|
||||||
|
procedure SaveToCSVFile(AFileName: string; ADelimiter: Char=','; WithHeader: boolean=true;
|
||||||
|
VisibleColumnsOnly: boolean=false);
|
||||||
|
|
||||||
property Cells[ACol, ARow: Integer]: string read GetCells write SetCells;
|
property Cells[ACol, ARow: Integer]: string read GetCells write SetCells;
|
||||||
property Cols[index: Integer]: TStrings read GetCols write SetCols;
|
property Cols[index: Integer]: TStrings read GetCols write SetCols;
|
||||||
@ -10367,7 +10369,6 @@ procedure TCustomStringGrid.LoadFromCSVStream(AStream: TStream;
|
|||||||
var
|
var
|
||||||
Lines, HeaderL: TStringList;
|
Lines, HeaderL: TStringList;
|
||||||
i, j, StartRow: Integer;
|
i, j, StartRow: Integer;
|
||||||
S: String;
|
|
||||||
begin
|
begin
|
||||||
Lines := TStringList.Create;
|
Lines := TStringList.Create;
|
||||||
HeaderL := TStringList.Create;
|
HeaderL := TStringList.Create;
|
||||||
@ -10432,9 +10433,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomStringGrid.SaveToCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true);
|
procedure TCustomStringGrid.SaveToCSVStream(AStream: TStream; ADelimiter: Char;
|
||||||
|
WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
|
||||||
var
|
var
|
||||||
i,StartRow: Integer;
|
i,j,StartRow: Integer;
|
||||||
HeaderL, Lines: TStringList;
|
HeaderL, Lines: TStringList;
|
||||||
C: TGridColumn;
|
C: TGridColumn;
|
||||||
begin
|
begin
|
||||||
@ -10453,6 +10455,7 @@ begin
|
|||||||
if c=nil then
|
if c=nil then
|
||||||
HeaderL.Add(Cells[i, 0])
|
HeaderL.Add(Cells[i, 0])
|
||||||
else
|
else
|
||||||
|
if c.Visible or not VisibleColumnsOnly then
|
||||||
HeaderL.Add(c.Title.Caption);
|
HeaderL.Add(c.Title.Caption);
|
||||||
end;
|
end;
|
||||||
HeaderL.Delimiter:=ADelimiter;
|
HeaderL.Delimiter:=ADelimiter;
|
||||||
@ -10471,17 +10474,39 @@ begin
|
|||||||
end else
|
end else
|
||||||
StartRow := FixedRows;
|
StartRow := FixedRows;
|
||||||
for i:=StartRow to RowCount-1 do begin
|
for i:=StartRow to RowCount-1 do begin
|
||||||
|
if Columns.Enabled and VisibleColumnsOnly then begin
|
||||||
|
HeaderL := TStringList.Create;
|
||||||
|
try
|
||||||
|
for j := 1 to FixedCols do
|
||||||
|
HeaderL.Add('');
|
||||||
|
for j := 0 to ColCount-1 do begin
|
||||||
|
c := ColumnFromGridColumn(j);
|
||||||
|
if c=nil then Continue;
|
||||||
|
if c.Visible then
|
||||||
|
HeaderL.Add(Cells[j,i]);
|
||||||
|
end;
|
||||||
|
HeaderL.Delimiter:=ADelimiter;
|
||||||
|
HeaderL.StrictDelimiter := False; //force quoting of strings that contain whitespace or Delimiter
|
||||||
|
Lines.Add(HeaderL.DelimitedText); // Add the row in Lines
|
||||||
|
finally
|
||||||
|
HeaderL.Free;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
Rows[i].StrictDelimiter := False; //force quoting of strings that contain whitespace or Delimiter
|
Rows[i].StrictDelimiter := False; //force quoting of strings that contain whitespace or Delimiter
|
||||||
Rows[i].Delimiter:=ADelimiter;
|
Rows[i].Delimiter:=ADelimiter;
|
||||||
Lines.Add(Rows[i].DelimitedText);
|
Lines.Add(Rows[i].DelimitedText);
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
Lines.SaveToStream(AStream);
|
Lines.SaveToStream(AStream);
|
||||||
finally
|
finally
|
||||||
Lines.Free;
|
Lines.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomStringGrid.SaveToCSVFile(AFileName: string; ADelimiter: Char=','; WithHeader: boolean=true);
|
procedure TCustomStringGrid.SaveToCSVFile(AFileName: string; ADelimiter: Char;
|
||||||
|
WithHeader: boolean=true; VisibleColumnsOnly: boolean=false);
|
||||||
var
|
var
|
||||||
TheStream: TFileStream;
|
TheStream: TFileStream;
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user