diff --git a/components/fpspreadsheet/docs/fpspreadsheet-wiki.chm b/components/fpspreadsheet/docs/fpspreadsheet-wiki.chm
index 29a9924d7..5b428d5a8 100644
Binary files a/components/fpspreadsheet/docs/fpspreadsheet-wiki.chm and b/components/fpspreadsheet/docs/fpspreadsheet-wiki.chm differ
diff --git a/components/fpspreadsheet/examples/db_import_export/main.pas b/components/fpspreadsheet/examples/db_import_export/main.pas
index d69ca64db..0c2bbbaed 100644
--- a/components/fpspreadsheet/examples/db_import_export/main.pas
+++ b/components/fpspreadsheet/examples/db_import_export/main.pas
@@ -450,12 +450,13 @@ procedure TForm1.ExportUsingVirtualMode(var DataFileName: string);
var
worksheet: TsWorksheet;
begin
+ {
if FILE_FORMATS[RgFileFormat.ItemIndex] = sfOpenDocument then
begin
MessageDlg('Virtual mode is not yet implemented for .ods files.', mtError, [mbOK], 0);
exit;
end;
-
+ }
FExportDataset.Open;
FWorkbook := TsWorkbook.Create;
diff --git a/components/fpspreadsheet/examples/fpsspeedtest/fpsspeedtest.lpi b/components/fpspreadsheet/examples/fpsspeedtest/fpsspeedtest.lpi
index 100e21dc8..798f73a05 100644
--- a/components/fpspreadsheet/examples/fpsspeedtest/fpsspeedtest.lpi
+++ b/components/fpspreadsheet/examples/fpsspeedtest/fpsspeedtest.lpi
@@ -40,7 +40,6 @@
-
@@ -48,7 +47,6 @@
-
diff --git a/components/fpspreadsheet/examples/fpsspeedtest/mainform.lfm b/components/fpspreadsheet/examples/fpsspeedtest/mainform.lfm
index 767b7f1b5..6acb681e0 100644
--- a/components/fpspreadsheet/examples/fpsspeedtest/mainform.lfm
+++ b/components/fpspreadsheet/examples/fpsspeedtest/mainform.lfm
@@ -2,31 +2,32 @@ object Form1: TForm1
Left = 445
Height = 593
Top = 178
- Width = 764
+ Width = 780
Caption = 'fpsSpeedTest'
ClientHeight = 593
- ClientWidth = 764
+ ClientWidth = 780
KeyPreview = True
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
+ OnDestroy = FormDestroy
OnKeyPress = FormKeyPress
LCLVersion = '1.5'
object StatusBar: TStatusBar
Left = 0
Height = 23
Top = 570
- Width = 764
+ Width = 780
Panels = <>
end
object Panel1: TPanel
Left = 0
Height = 52
Top = 0
- Width = 764
+ Width = 780
Align = alTop
BevelOuter = bvNone
ClientHeight = 52
- ClientWidth = 764
+ ClientWidth = 780
TabOrder = 1
object BtnWrite: TButton
Left = 8
@@ -41,7 +42,7 @@ object Form1: TForm1
Left = 184
Height = 39
Top = 6
- Width = 576
+ Width = 488
Anchors = [akTop, akLeft, akRight]
AutoSize = False
Caption = 'Press ESC to cancel when current file is completely written.'#13#10'This may take some time...'
@@ -58,6 +59,16 @@ object Form1: TForm1
OnClick = BtnReadClick
TabOrder = 1
end
+ object BtnSaveResults: TButton
+ Left = 680
+ Height = 29
+ Top = 12
+ Width = 91
+ Anchors = [akTop, akRight]
+ Caption = 'Save results'
+ OnClick = BtnSaveResultsClick
+ TabOrder = 2
+ end
end
object ParameterPanel: TPanel
Left = 0
@@ -174,7 +185,7 @@ object Form1: TForm1
Left = 0
Height = 4
Top = 52
- Width = 764
+ Width = 780
Align = alTop
Shape = bsTopLine
end
@@ -182,7 +193,7 @@ object Form1: TForm1
Left = 182
Height = 514
Top = 56
- Width = 582
+ Width = 598
Align = alClient
Font.Height = -12
Font.Name = 'Courier New'
@@ -191,4 +202,11 @@ object Form1: TForm1
ScrollBars = ssAutoVertical
TabOrder = 3
end
+ object SaveDialog: TSaveDialog
+ DefaultExt = '.txt'
+ Filter = 'Text files (*.txt)|*.txt|All files (*.*)|*.*'
+ Options = [ofOverwritePrompt, ofPathMustExist, ofEnableSizing, ofViewDetail]
+ left = 708
+ top = 65
+ end
end
diff --git a/components/fpspreadsheet/examples/fpsspeedtest/mainform.pas b/components/fpspreadsheet/examples/fpsspeedtest/mainform.pas
index 4e46fbc7d..9da0af963 100644
--- a/components/fpspreadsheet/examples/fpsspeedtest/mainform.pas
+++ b/components/fpspreadsheet/examples/fpsspeedtest/mainform.pas
@@ -15,6 +15,7 @@ type
TForm1 = class(TForm)
Bevel1: TBevel;
+ BtnSaveResults: TButton;
BtnWrite: TButton;
BtnRead: TButton;
CgFormats: TCheckGroup;
@@ -26,17 +27,22 @@ type
Memo: TMemo;
ParameterPanel: TPanel;
RgContent: TRadioGroup;
+ SaveDialog: TSaveDialog;
StatusBar: TStatusBar;
procedure BtnReadClick(Sender: TObject);
+ procedure BtnSaveResultsClick(Sender: TObject);
procedure BtnWriteClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
+ procedure FormDestroy(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: char);
private
{ private declarations }
FDir: String;
FEscape: Boolean;
FCurFormat: TsSpreadsheetFormat;
+ FErrCounter: Integer;
+ FErrLog: TStringList;
procedure EnableControls(AEnable: Boolean);
function GetRowCount(AIndex: Integer): Integer;
procedure ReadCellDataHandler(Sender: TObject; ARow, ACol: Cardinal;
@@ -89,6 +95,13 @@ const
COLCOUNT = 100;
+function LeftPad(AText: String; ALength: Integer): String;
+begin
+ Result := AText;
+ while Length(Result) < ALength do Result := ' ' + Result;
+end;
+
+
{ TForm1 }
procedure TForm1.ReadCellDataHandler(Sender: TObject; ARow, ACol: Cardinal;
@@ -191,12 +204,16 @@ begin
ok := true;
break;
except
+ on E:Exception do begin
+ inc(FErrCounter);
+ FErrLog.Add(Format('[%d] = %s', [FErrCounter, E.Message]));
+ end;
end;
finally
MyWorkbook.Free;
end;
end;
- if not ok then Log := Log + ' xxxx ';
+ if not ok then Log := Log + LeftPad(Format('[%d]',[FErrCounter]),5) + ' ';
end;
finally
@@ -274,8 +291,11 @@ begin
end;
end;
except
- on E: Exception do
- Log := Log + format('xxxx ', [(GetTickCount - Tm) / 1000]);
+ on E: Exception do begin
+ inc(FErrCounter);
+ FErrLog.Add(Format('[%d] = %s', [FErrCounter, E.Message]));
+ Log := Log + LeftPad(Format('[%d]',[FErrCounter]),5) + ' ';
+ end;
end;
fname := Trim(Log);
@@ -345,6 +365,7 @@ begin
FEscape := false;
EnableControls(false);
+ FErrLog.Clear;
if CbSingleCol.Checked then numCols := 1 else numCols := COLCOUNT;
@@ -394,6 +415,8 @@ begin
Memo.Append(DupeString('-', len));
end;
+ if FErrLog.Text <> '' then
+ Memo.Append(FErrLog.Text);
Memo.Append('Ready');
finally
Memo.Append('');
@@ -401,6 +424,14 @@ begin
end;
end;
+procedure TForm1.BtnSaveResultsClick(Sender: TObject);
+begin
+ if SaveDialog.Filename <> '' then
+ SaveDialog.InitialDir := ExtractFileDir(SaveDialog.Filename);
+ if SaveDialog.Execute then
+ Memo.Lines.SaveToFile(SaveDialog.Filename);
+end;
+
procedure TForm1.BtnWriteClick(Sender: TObject);
var
Rows: integer;
@@ -412,6 +443,7 @@ begin
FEscape := false;
EnableControls(false);
+ FErrLog.Clear;
if CbSingleCol.Checked then numCols := 1 else numCols := COLCOUNT;
Memo.Append ('Running: Building TsWorkbook and writing to different file formats');
@@ -478,6 +510,7 @@ procedure TForm1.EnableControls(AEnable: Boolean);
begin
BtnWrite.Enabled := AEnable;
BtnRead.Enabled := AEnable;
+ BtnSaveResults.Enabled := AEnable;
RgContent.Enabled := AEnable;
CgFormats.Enabled := AEnable;
CgRowCount.Enabled := AEnable;
@@ -504,9 +537,16 @@ begin
CgRowCount.Checked[rc30k] := true;
CgRowCount.Checked[rc40k] := true;
+ FErrLog := TStringList.Create;
+
ReadFromIni;
end;
+procedure TForm1.FormDestroy(Sender: TObject);
+begin
+ FErrLog.Free;
+end;
+
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
begin
if Key = #27 then begin
diff --git a/components/fpspreadsheet/examples/visual/fpsctrls/main.lfm b/components/fpspreadsheet/examples/visual/fpsctrls/main.lfm
index 80126338d..7be2cda62 100644
--- a/components/fpspreadsheet/examples/visual/fpsctrls/main.lfm
+++ b/components/fpspreadsheet/examples/visual/fpsctrls/main.lfm
@@ -83,9 +83,9 @@ object MainForm: TMainForm
'FileFormat=sfExcel8'
'ActiveWorksheet=Sheet1'
'Options=boAutoCalc, boCalcBeforeSaving, boReadFormulas'
- 'FormatSettings='
+ '(-) FormatSettings='
' ThousandSeparator=.'
- ' DecimalSeparator=.'
+ ' DecimalSeparator=,'
' ListSeparator=;'
' DateSeparator=.'
' TimeSeparator=:'
@@ -3796,7 +3796,6 @@ object MainForm: TMainForm
Caption = 'File'
object MenuItem50: TMenuItem
Action = AcFileOpen
- Caption = '&Open ...x'
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF