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 @@ + +