spready: Update to recent changes in fpspreadsheet, primarily show/hide columns/rows, add/remove page breaks.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7081 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz 2019-07-27 20:45:22 +00:00
parent 10a21f6ba9
commit a67900a950
6 changed files with 359 additions and 30 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -105,7 +105,9 @@
<Unit5>
<Filename Value="sformatsettingsform.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="FormatSettingsForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="sFormatsettingsForm"/>
</Unit5>
<Unit6>