diff --git a/applications/spready/sformatsettingsform.lfm b/applications/spready/sformatsettingsform.lfm
index 387df0b60..92bdbe7a5 100644
--- a/applications/spready/sformatsettingsform.lfm
+++ b/applications/spready/sformatsettingsform.lfm
@@ -11,16 +11,16 @@ object FormatSettingsForm: TFormatSettingsForm
OnCreate = FormCreate
Position = poMainFormCenter
ShowHint = True
- LCLVersion = '1.5'
+ LCLVersion = '2.1.0.0'
object PageControl: TPageControl
Left = 8
Height = 438
Top = 8
Width = 454
- ActivePage = PgCurrency
+ ActivePage = PgNumber
Align = alClient
BorderSpacing.Around = 8
- TabIndex = 1
+ TabIndex = 0
TabOrder = 0
OnChange = PageControlChange
object PgNumber: TTabSheet
@@ -39,7 +39,7 @@ object FormatSettingsForm: TFormatSettingsForm
Left = 16
Height = 15
Top = 51
- Width = 108
+ Width = 107
Caption = 'Thousand separator:'
ParentColor = False
end
@@ -170,13 +170,13 @@ object FormatSettingsForm: TFormatSettingsForm
end
object PgDateTime: TTabSheet
Caption = 'Date/time'
- ClientHeight = 401
+ ClientHeight = 410
ClientWidth = 446
object LblNumFormat1: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 20
- Width = 160
+ Width = 128
Caption = 'Long date format string:'
ParentColor = False
end
@@ -211,9 +211,9 @@ object FormatSettingsForm: TFormatSettingsForm
end
object LblNumFormat2: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 52
- Width = 162
+ Width = 129
Caption = 'Short date format string:'
ParentColor = False
end
@@ -243,65 +243,65 @@ object FormatSettingsForm: TFormatSettingsForm
end
object LblDateSeparator: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 83
- Width = 102
+ Width = 79
Caption = 'Date separator:'
ParentColor = False
end
object LblLongMonthNames: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 116
- Width = 130
+ Width = 107
Caption = 'Long month names:'
ParentColor = False
end
object LblShortMonthNames: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 148
- Width = 132
+ Width = 108
Caption = 'Short month names:'
ParentColor = False
end
object LblLongDayNames: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 180
- Width = 111
+ Width = 90
Caption = 'Long day names:'
ParentColor = False
end
object LblShortDayNames: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 212
- Width = 113
+ Width = 91
Caption = 'Short day names:'
ParentColor = False
end
object LblNumFormat3: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 252
- Width = 160
+ Width = 129
Caption = 'Long time format string:'
ParentColor = False
end
object LblNumFormat4: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 284
- Width = 162
+ Width = 130
Caption = 'Short time format string:'
ParentColor = False
end
object LblTimeSeparator: TLabel
Left = 16
- Height = 20
+ Height = 15
Top = 315
- Width = 103
+ Width = 81
Caption = 'Time separator:'
ParentColor = False
end
@@ -343,8 +343,8 @@ object FormatSettingsForm: TFormatSettingsForm
end
object Label3: TLabel
Left = 4
- Height = 40
- Top = 357
+ Height = 30
+ Top = 376
Width = 438
Align = alBottom
BorderSpacing.Around = 4
@@ -355,7 +355,7 @@ object FormatSettingsForm: TFormatSettingsForm
object Bevel1: TBevel
Left = 0
Height = 3
- Top = 350
+ Top = 369
Width = 446
Align = alBottom
Shape = bsBottomLine
@@ -381,7 +381,7 @@ object FormatSettingsForm: TFormatSettingsForm
object LblDateTimeSample: TLabel
Left = 6
Height = 36
- Top = 2
+ Top = 0
Width = 287
Anchors = [akTop, akLeft, akRight]
AutoSize = False
diff --git a/applications/spready/sformatsettingsform.pas b/applications/spready/sformatsettingsform.pas
index 5b464abf0..16c326735 100644
--- a/applications/spready/sformatsettingsform.pas
+++ b/applications/spready/sformatsettingsform.pas
@@ -357,6 +357,11 @@ begin
// Thousand separator
Result.ThousandSeparator := FCbThousandSeparator.Separator;
+ if Result.DecimalSeparator = '.' then
+ Result.ListSeparator := ','
+ else if Result.DecimalSeparator = ',' then
+ Result.ListSeparator := ';';
+
// --- Currency format parameters ---
// Currency symbol
Result.CurrencyString := EdCurrencySymbol.Text;
diff --git a/applications/spready/smain.lfm b/applications/spready/smain.lfm
index ece412dcd..61fa33c90 100644
--- a/applications/spready/smain.lfm
+++ b/applications/spready/smain.lfm
@@ -35,6 +35,8 @@ object MainForm: TMainForm
EditorLineMode = elmMultiLine
FrozenCols = 0
FrozenRows = 0
+ PageBreakPen.Color = clBlue
+ PageBreakPen.Style = psDash
ReadFormulas = True
TextOverflow = True
WorkbookSource = WorkbookSource
@@ -1964,6 +1966,65 @@ object MainForm: TMainForm
Hint = 'Automatically detect the type of the cell content.'
OnExecute = AcSettingsAutoDetectCellTypeExecute
end
+ object AcShowPageBreaks: TAction
+ Category = 'View'
+ AutoCheck = True
+ Caption = 'Show page breaks'
+ Checked = True
+ OnExecute = AcShowPageBreaksExecute
+ end
+ object AcHideCols: TAction
+ Category = 'Worksheet'
+ Caption = 'Hide column(s)'
+ Hint = 'Hide selected column(s)'
+ OnExecute = AcHideColsExecute
+ end
+ object AcHideRows: TAction
+ Category = 'Worksheet'
+ Caption = 'Hide row(s)'
+ Hint = 'Hide selected row(s)'
+ OnExecute = AcHideRowsExecute
+ end
+ object AcShowCols: TAction
+ Category = 'Worksheet'
+ Caption = 'Show columns'
+ Hint = 'Show columns'
+ OnExecute = AcShowColsExecute
+ end
+ object AcShowRows: TAction
+ Category = 'Worksheet'
+ Caption = 'Show row(s)'
+ Hint = 'Show row(s) previously hidden'
+ OnExecute = AcShowRowsExecute
+ end
+ object AcAddPageBreakCol: TAction
+ Category = 'Worksheet'
+ Caption = 'Add page break'
+ Hint = 'Add page break before active cell'
+ OnExecute = AcAddPageBreakColExecute
+ OnUpdate = AcAddPageBreakColUpdate
+ end
+ object AcAddPageBreakRow: TAction
+ Category = 'Worksheet'
+ Caption = 'Add page break'
+ Hint = 'Add page break above active cell'
+ OnExecute = AcAddPageBreakRowExecute
+ OnUpdate = AcAddPageBreakRowUpdate
+ end
+ object AcRemovePageBreakCol: TAction
+ Category = 'Worksheet'
+ Caption = 'Remove page break'
+ Hint = 'Remove page break left of active cell'
+ OnExecute = AcRemovePageBreakColExecute
+ OnUpdate = AcRemovePageBreakColUpdate
+ end
+ object AcRemovePageBreakRow: TAction
+ Category = 'Worksheet'
+ Caption = 'Remove page break'
+ Hint = 'Remove page break above active cell'
+ OnExecute = AcRemovePageBreakRowExecute
+ OnUpdate = AcRemovePageBreakRowUpdate
+ end
end
object ImageList: TImageList
left = 176
@@ -4503,6 +4564,10 @@ object MainForm: TMainForm
Action = AcWorksheetShowHeaders
AutoCheck = True
end
+ object MenuItem199: TMenuItem
+ Action = AcShowPageBreaks
+ AutoCheck = True
+ end
object MenuItem164: TMenuItem
Action = AcWorksheetRTL
AutoCheck = True
@@ -4519,6 +4584,24 @@ object MainForm: TMainForm
object MenuItem174: TMenuItem
Caption = '-'
end
+ object MenuItem210: TMenuItem
+ Action = AcHideRows
+ end
+ object MenuItem209: TMenuItem
+ Action = AcShowRows
+ end
+ object MenuItem211: TMenuItem
+ Caption = '-'
+ end
+ object MenuItem205: TMenuItem
+ Action = AcAddPageBreakRow
+ end
+ object MenuItem207: TMenuItem
+ Action = AcRemovePageBreakRow
+ end
+ object MenuItem206: TMenuItem
+ Caption = '-'
+ end
object MenuItem175: TMenuItem
Action = AcFrozenRows
AutoCheck = True
@@ -4544,6 +4627,26 @@ object MainForm: TMainForm
object MenuItem173: TMenuItem
Caption = '-'
end
+ object MenuItem200: TMenuItem
+ Action = AcHideCols
+ end
+ object MenuItem201: TMenuItem
+ Action = AcShowCols
+ Caption = 'Show column(s)'
+ Hint = 'Show hidden column(s) within selection'
+ end
+ object MenuItem202: TMenuItem
+ Caption = '-'
+ end
+ object MenuItem203: TMenuItem
+ Action = AcAddPageBreakCol
+ end
+ object MenuItem208: TMenuItem
+ Action = AcRemovePageBreakCol
+ end
+ object MenuItem204: TMenuItem
+ Caption = '-'
+ end
object MenuItem172: TMenuItem
Action = AcFrozenCols
AutoCheck = True
@@ -4788,6 +4891,10 @@ object MainForm: TMainForm
Action = AcShowHeaders
AutoCheck = True
end
+ object MenuItem198: TMenuItem
+ Action = AcShowPageBreaks
+ AutoCheck = True
+ end
object MenuItem133: TMenuItem
Caption = '-'
end
diff --git a/applications/spready/smain.pas b/applications/spready/smain.pas
index eacd902f8..9a185e96c 100644
--- a/applications/spready/smain.pas
+++ b/applications/spready/smain.pas
@@ -40,6 +40,15 @@ type
AcSettingsReadFormulas: TAction;
AcSettingsAutoUpdateRowheights: TAction;
AcSettingsAutoDetectCellType: TAction;
+ AcShowPageBreaks: TAction;
+ AcHideCols: TAction;
+ AcShowCols: TAction;
+ AcAddPageBreakCol: TAction;
+ AcAddPageBreakRow: TAction;
+ AcRemovePageBreakCol: TAction;
+ AcRemovePageBreakRow: TAction;
+ AcHideRows: TAction;
+ AcShowRows: TAction;
AcWorksheetShowHeaders: TAction;
AcWorksheetShowGrid: TAction;
AcWorksheetProtection: TAction;
@@ -103,7 +112,21 @@ type
MenuItem195: TMenuItem;
MenuItem196: TMenuItem;
MenuItem197: TMenuItem;
+ MenuItem198: TMenuItem;
+ MenuItem199: TMenuItem;
MenuItem2: TMenuItem;
+ MenuItem200: TMenuItem;
+ MenuItem201: TMenuItem;
+ MenuItem202: TMenuItem;
+ MenuItem203: TMenuItem;
+ MenuItem204: TMenuItem;
+ MenuItem205: TMenuItem;
+ MenuItem206: TMenuItem;
+ MenuItem207: TMenuItem;
+ MenuItem208: TMenuItem;
+ MenuItem209: TMenuItem;
+ MenuItem210: TMenuItem;
+ MenuItem211: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem51: TMenuItem;
@@ -441,6 +464,10 @@ type
WorkbookTabControl: TsWorkbookTabControl;
WorksheetGrid: TsWorksheetGrid;
procedure AcAboutExecute(Sender: TObject);
+ procedure AcAddPageBreakColExecute(Sender: TObject);
+ procedure AcAddPageBreakColUpdate(Sender: TObject);
+ procedure AcAddPageBreakRowExecute(Sender: TObject);
+ procedure AcAddPageBreakRowUpdate(Sender: TObject);
procedure AcAutoRowHeightsExecute(Sender: TObject);
procedure AcColAddExecute(Sender: TObject);
procedure AcColDeleteExecute(Sender: TObject);
@@ -453,14 +480,23 @@ type
procedure AcFrozenColsUpdate(Sender: TObject);
procedure AcFrozenRowsExecute(Sender: TObject);
procedure AcFrozenRowsUpdate(Sender: TObject);
+ procedure AcHideColsExecute(Sender: TObject);
+ procedure AcHideRowsExecute(Sender: TObject);
procedure AcNumFormatCustomGetNumberFormatString(Sender: TObject;
AWorkbook: TsWorkbook; var ANumFormatStr: String);
+ procedure AcRemovePageBreakColExecute(Sender: TObject);
+ procedure AcRemovePageBreakColUpdate(Sender: TObject);
+ procedure AcRemovePageBreakRowExecute(Sender: TObject);
+ procedure AcRemovePageBreakRowUpdate(Sender: TObject);
procedure AcRowAddExecute(Sender: TObject);
procedure AcRowDeleteExecute(Sender: TObject);
procedure AcRowHeightExecute(Sender: TObject);
procedure AcSettingsAutoDetectCellTypeExecute(Sender: TObject);
procedure AcSettingsAutoUpdateRowheightsExecute(Sender: TObject);
procedure AcSettingsReadFormulasExecute(Sender: TObject);
+ procedure AcShowColsExecute(Sender: TObject);
+ procedure AcShowPageBreaksExecute(Sender: TObject);
+ procedure AcShowRowsExecute(Sender: TObject);
procedure AcSortColAscExecute(Sender: TObject);
procedure AcSortExecute(Sender: TObject);
procedure ActionListUpdate(AAction: TBasicAction; var Handled: Boolean);
@@ -558,6 +594,56 @@ begin
end;
end;
+procedure TMainForm.AcAddPageBreakColExecute(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ c: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ c := WorksheetGrid.GetWorksheetCol(WorksheetGrid.Col);
+ sheet.AddPageBreakToCol(c);
+ WorksheetGrid.Invalidate;
+ end;
+end;
+
+procedure TMainForm.AcAddPageBreakColUpdate(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ c: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ c := WorksheetGrid.GetWorksheetCol(WorksheetGrid.Col);
+ AcAddPageBreakCol.Enabled := not sheet.IsPageBreakCol(c);
+ end;
+end;
+
+procedure TMainForm.AcAddPageBreakRowExecute(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ r: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ r := WorksheetGrid.GetWorksheetRow(WorksheetGrid.Row);
+ sheet.AddPageBreakToRow(r);
+ WorksheetGrid.Invalidate;
+ end;
+end;
+
+procedure TMainForm.AcAddPageBreakRowUpdate(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ r: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ r := WorksheetGrid.GetWorksheetRow(WorksheetGrid.Row);
+ AcAddPageBreakRow.Enabled := not sheet.IsPageBreakRow(r);
+ end;
+end;
+
procedure TMainForm.AcAutoRowHeightsExecute(Sender: TObject);
begin
Screen.Cursor := crHourglass;
@@ -701,6 +787,40 @@ begin
AcFrozenRows.Checked := WorksheetGrid.FrozenRows > 0;
end;
+procedure TMainForm.AcHideColsExecute(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ i: Integer;
+ rng: TsCellRange;
+ c: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ for i:=0 to sheet.GetSelectionCount-1 do begin
+ rng := sheet.GetSelection[i];
+ for c := rng.Col1 to rng.Col2 do
+ WorksheetGrid.HideCol(WorksheetGrid.GetGridCol(c));
+ end;
+ end;
+end;
+
+procedure TMainForm.AcHideRowsExecute(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ i: Integer;
+ rng: TsCellRange;
+ r: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ for i:=0 to sheet.GetSelectionCount-1 do begin
+ rng := sheet.GetSelection[i];
+ for r := rng.Row1 to rng.Row2 do
+ WorksheetGrid.HideRow(WorksheetGrid.GetGridRow(r));
+ end;
+ end;
+end;
+
procedure TMainForm.AcNumFormatCustomGetNumberFormatString(Sender: TObject;
AWorkbook: TsWorkbook; var ANumFormatStr: String);
var
@@ -721,6 +841,56 @@ begin
end;
end;
+procedure TMainForm.AcRemovePageBreakColExecute(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ c: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ c := WorksheetGrid.GetWorksheetCol(WorksheetGrid.Col);
+ sheet.RemovePageBreakFromCol(c);
+ WorksheetGrid.Invalidate;
+ end;
+end;
+
+procedure TMainForm.AcRemovePageBreakColUpdate(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ c: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ c := WorksheetGrid.GetWorksheetCol(WorksheetGrid.Col);
+ AcRemovePageBreakCol.Enabled := sheet.IsPageBreakCol(c);
+ end;
+end;
+
+procedure TMainForm.AcRemovePageBreakRowExecute(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ r: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ r := WorksheetGrid.GetWorksheetRow(WorksheetGrid.Row);
+ sheet.RemovePageBreakFromRow(r);
+ WorksheetGrid.Invalidate;
+ end;
+end;
+
+procedure TMainForm.AcRemovePageBreakRowUpdate(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ r: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ r := WorksheetGrid.GetWorksheetRow(WorksheetGrid.Row);
+ AcRemovePageBreakRow.Enabled := sheet.IsPageBreakRow(r);
+ end;
+end;
+
{ Adds a row before the active cell }
procedure TMainForm.AcRowAddExecute(Sender: TObject);
begin
@@ -862,6 +1032,23 @@ begin
WorkbookSource.Options := WorkbookSource.Options - [boReadFormulas];
end;
+procedure TMainForm.AcShowColsExecute(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ i: Integer;
+ rng: TsCellRange;
+ c: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ for i:=0 to sheet.GetSelectionCount-1 do begin
+ rng := sheet.GetSelection[i];
+ for c := rng.Col1 to rng.Col2 do
+ WorksheetGrid.ShowCol(WorksheetGrid.GetGridCol(c));
+ end;
+ end;
+end;
+
procedure TMainForm.AcShowGridLinesExecute(Sender: TObject);
begin
WorksheetGrid.ShowGridLines := AcShowGridLines.Checked;
@@ -882,6 +1069,28 @@ begin
AcShowHeaders.Checked := WorksheetGrid.ShowHeaders;
end;
+procedure TMainForm.AcShowPageBreaksExecute(Sender: TObject);
+begin
+ WorksheetGrid.ShowPageBreaks := AcShowPageBreaks.Checked;
+end;
+
+procedure TMainForm.AcShowRowsExecute(Sender: TObject);
+var
+ sheet: TsWorksheet;
+ i: Integer;
+ rng: TsCellRange;
+ r: Cardinal;
+begin
+ sheet := WorksheetGrid.Worksheet;
+ if sheet <> nil then begin
+ for i:=0 to sheet.GetSelectionCount-1 do begin
+ rng := sheet.GetSelection[i];
+ for r := rng.Row1 to rng.Row2 do
+ WorksheetGrid.ShowRow(WorksheetGrid.GetGridRow(r));
+ end;
+ end;
+end;
+
procedure TMainForm.AcSortColAscExecute(Sender: TObject);
var
c: Cardinal;
diff --git a/applications/spready/snumformatform.pas b/applications/spready/snumformatform.pas
index e4a07f1a7..eeb8741e8 100644
--- a/applications/spready/snumformatform.pas
+++ b/applications/spready/snumformatform.pas
@@ -707,10 +707,16 @@ begin
cs := DefaultFormatSettings.CurrencyString;
CbCurrSymbol.ItemIndex := CbCurrSymbol.Items.IndexOf(cs);
+ if VarIsNull(ASample) then begin
+ FSampleValue := 1.25;
+ FSampleText := 'test';
+ end else
if varIsStr(ASample) then
FSampleText := VarToStr(ASample)
- else
+ else begin
FSampleValue := ASample;
+ if isNaN(FSamplevalue) then FSamplevalue := 1.25;
+ end;
InitNumFormats(FWorkbook.FormatSettings);
SetNumFormatStr(ANumFormatStr);
end;
diff --git a/applications/spready/spready.lpi b/applications/spready/spready.lpi
index 76dd2ae62..e7223f073 100644
--- a/applications/spready/spready.lpi
+++ b/applications/spready/spready.lpi
@@ -105,7 +105,9 @@
+
+