You've already forked lazarus-ccr
fpspreadsheet: Improved worksheet actions and related examples
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3715 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -11,7 +11,7 @@ object Form1: TForm1
|
|||||||
object Panel1: TPanel
|
object Panel1: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 42
|
Height = 42
|
||||||
Top = 0
|
Top = 26
|
||||||
Width = 925
|
Width = 925
|
||||||
Align = alTop
|
Align = alTop
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
@@ -49,8 +49,8 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
object WorkbookTabControl: TsWorkbookTabControl
|
object WorkbookTabControl: TsWorkbookTabControl
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 533
|
Height = 507
|
||||||
Top = 42
|
Top = 68
|
||||||
Width = 672
|
Width = 672
|
||||||
TabIndex = 0
|
TabIndex = 0
|
||||||
Tabs.Strings = (
|
Tabs.Strings = (
|
||||||
@@ -61,7 +61,7 @@ object Form1: TForm1
|
|||||||
WorkbookSource = WorkbookSource
|
WorkbookSource = WorkbookSource
|
||||||
object WorksheetGrid: TsWorksheetGrid
|
object WorksheetGrid: TsWorksheetGrid
|
||||||
Left = 2
|
Left = 2
|
||||||
Height = 503
|
Height = 477
|
||||||
Top = 28
|
Top = 28
|
||||||
Width = 668
|
Width = 668
|
||||||
FrozenCols = 0
|
FrozenCols = 0
|
||||||
@@ -114,8 +114,8 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
object InspectorTabControl: TTabControl
|
object InspectorTabControl: TTabControl
|
||||||
Left = 677
|
Left = 677
|
||||||
Height = 533
|
Height = 507
|
||||||
Top = 42
|
Top = 68
|
||||||
Width = 248
|
Width = 248
|
||||||
OnChange = InspectorTabControlChange
|
OnChange = InspectorTabControlChange
|
||||||
TabIndex = 0
|
TabIndex = 0
|
||||||
@@ -129,7 +129,7 @@ object Form1: TForm1
|
|||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object Inspector: TsSpreadsheetInspector
|
object Inspector: TsSpreadsheetInspector
|
||||||
Left = 2
|
Left = 2
|
||||||
Height = 503
|
Height = 477
|
||||||
Top = 28
|
Top = 28
|
||||||
Width = 244
|
Width = 244
|
||||||
Align = alClient
|
Align = alClient
|
||||||
@@ -175,12 +175,48 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
object Splitter1: TSplitter
|
object Splitter1: TSplitter
|
||||||
Left = 672
|
Left = 672
|
||||||
Height = 533
|
Height = 507
|
||||||
Top = 42
|
Top = 68
|
||||||
Width = 5
|
Width = 5
|
||||||
Align = alRight
|
Align = alRight
|
||||||
ResizeAnchor = akRight
|
ResizeAnchor = akRight
|
||||||
end
|
end
|
||||||
|
object ToolBar1: TToolBar
|
||||||
|
Left = 0
|
||||||
|
Height = 26
|
||||||
|
Top = 0
|
||||||
|
Width = 925
|
||||||
|
Caption = 'ToolBar1'
|
||||||
|
Images = ImageList
|
||||||
|
TabOrder = 4
|
||||||
|
object ToolButton1: TToolButton
|
||||||
|
Left = 1
|
||||||
|
Top = 2
|
||||||
|
Action = AddWorksheetAction
|
||||||
|
end
|
||||||
|
object ToolButton2: TToolButton
|
||||||
|
Left = 24
|
||||||
|
Top = 2
|
||||||
|
Action = RenameWorksheetAction
|
||||||
|
end
|
||||||
|
object ToolButton3: TToolButton
|
||||||
|
Left = 47
|
||||||
|
Top = 2
|
||||||
|
Action = RenameWorksheetAction
|
||||||
|
end
|
||||||
|
object ToolButton4: TToolButton
|
||||||
|
Left = 70
|
||||||
|
Top = 2
|
||||||
|
Width = 3
|
||||||
|
Caption = 'ToolButton4'
|
||||||
|
Style = tbsDivider
|
||||||
|
end
|
||||||
|
object ToolButton5: TToolButton
|
||||||
|
Left = 73
|
||||||
|
Top = 2
|
||||||
|
Action = AcFileExit
|
||||||
|
end
|
||||||
|
end
|
||||||
object WorkbookSource: TsWorkbookSource
|
object WorkbookSource: TsWorkbookSource
|
||||||
AutoDetectFormat = False
|
AutoDetectFormat = False
|
||||||
Options = [boAutoCalc, boCalcBeforeSaving, boReadFormulas]
|
Options = [boAutoCalc, boCalcBeforeSaving, boReadFormulas]
|
||||||
@@ -194,13 +230,15 @@ object Form1: TForm1
|
|||||||
left = 312
|
left = 312
|
||||||
top = 128
|
top = 128
|
||||||
end
|
end
|
||||||
object ActionList1: TActionList
|
object ActionList: TActionList
|
||||||
|
Images = ImageList
|
||||||
left = 434
|
left = 434
|
||||||
top = 180
|
top = 180
|
||||||
object AddWorksheetAction: TsWorksheetAddAction
|
object AddWorksheetAction: TsWorksheetAddAction
|
||||||
Category = 'FPSpreadsheet'
|
Category = 'FPSpreadsheet'
|
||||||
Caption = 'Add'
|
Caption = 'Add'
|
||||||
Hint = 'Add empty worksheet'
|
Hint = 'Add empty worksheet'
|
||||||
|
ImageIndex = 1
|
||||||
WorkbookSource = WorkbookSource
|
WorkbookSource = WorkbookSource
|
||||||
NameMask = 'Sheet%d'
|
NameMask = 'Sheet%d'
|
||||||
end
|
end
|
||||||
@@ -208,20 +246,60 @@ object Form1: TForm1
|
|||||||
Category = 'FPSpreadsheet'
|
Category = 'FPSpreadsheet'
|
||||||
Caption = 'Delete'
|
Caption = 'Delete'
|
||||||
Hint = 'Delete worksheet'
|
Hint = 'Delete worksheet'
|
||||||
|
ImageIndex = 2
|
||||||
WorkbookSource = WorkbookSource
|
WorkbookSource = WorkbookSource
|
||||||
end
|
end
|
||||||
object RenameWorksheetAction: TsWorksheetRenameAction
|
object RenameWorksheetAction: TsWorksheetRenameAction
|
||||||
Category = 'FPSpreadsheet'
|
Category = 'FPSpreadsheet'
|
||||||
Caption = 'Rename...'
|
Caption = 'Rename...'
|
||||||
Hint = 'Rename worksheet'
|
Hint = 'Rename worksheet'
|
||||||
|
ImageIndex = 3
|
||||||
WorkbookSource = WorkbookSource
|
WorkbookSource = WorkbookSource
|
||||||
end
|
end
|
||||||
|
object AcFileExit: TFileExit
|
||||||
|
Category = 'File'
|
||||||
|
Caption = 'E&xit'
|
||||||
|
Hint = 'Exit'
|
||||||
|
ImageIndex = 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object ImageList1: TImageList
|
object ImageList: TImageList
|
||||||
left = 434
|
left = 434
|
||||||
top = 249
|
top = 249
|
||||||
Bitmap = {
|
Bitmap = {
|
||||||
4C690300000010000000100000007E7E7E007E7E7E007F7F7F00808080008080
|
4C69040000001000000010000000003F9300003F9300003F9300003F9424003F
|
||||||
|
948A003E93CC004095CC004095CC004095CC004095CC004095CC004095CC0040
|
||||||
|
95CC004095CC00409599003F9400003F9300003F9324003F938A0E4B9CD33F76
|
||||||
|
C0EC5D90D4FF3365A9FFA0A0A0FFA9A9A9FFA9A9A9FFAAAAAAFFACACACFFAEAE
|
||||||
|
AEFFB0B0B0FF003E93CC003E9300003F938A0E4A9CD33E75BFEC5487CBFF3669
|
||||||
|
ADFF23569AFF3363A6FFA9A9A9FFBCBCBCFFBDBDBDFFBFBFBFFFC1C1C1FFC4C4
|
||||||
|
C4FFC7C7C7FF003C90CC003C9000003D91CC5D90D4FF3568ACFF285B9FFF1A4D
|
||||||
|
91FF4477BBFF3361A4FFA9A9A9FFBDBDBDFFBFBFBFFFC1C1C1FFC4C4C4FFC7C7
|
||||||
|
C7FFC9C9C9FF003A8DCC003A8D00003B8ECC588BCFFF1A4D91FF4376BAFF3265
|
||||||
|
A9FF4376BAFF335FA1FFAAAAAAFFBFBFBFFFC1C1C1FFC4C4C4FFB1B1B1FFBBBB
|
||||||
|
BBFFCCCCCCFF003789CC0037890000398BCC5588CCFF275A9EFF4174B8FF3164
|
||||||
|
A8FF4174B8FF335D9EFFACACACFFC1C1C1FFC4C4C4FFC7C7C7FFA8A8A8FFA8A8
|
||||||
|
A8FFBEBEBEFF003485CC00348500003688CC5386CAFF295CA0FF3F72B6FF3063
|
||||||
|
A7FF3F72B6FF335A9AFFAEAEAEFFACACACFFA5A5A5FFA5A5A5FFA5A5A5FFFDFD
|
||||||
|
FDFFA5A5A5FF122F609510295100003485CC5083C7FF1D5094FF3265A9FF2D60
|
||||||
|
A4FF3D70B4FF335897FFB0B0B0FFA2A2A2FFF2F2F2FFF2F2F2FFF2F2F2FFF2F2
|
||||||
|
F2FFF2F2F2FF1A1A1A661A1A1A1A003181CC4C7FC3FFBBBBBBFF22518CFF2C5F
|
||||||
|
A3FF3B6EB2FF335593FFB3B3B3FFAAAAAAFFA0A0A0FFA0A0A0FFA0A0A0FFE4E4
|
||||||
|
E4FFA0A0A0FF051E4D950B204600002E7DCC497CC0FF09336FFF215090FF2B5E
|
||||||
|
A2FF396CB0FF335290FFB5B5B5FFCCCCCCFFD0D0D0FFD3D3D3FF9D9D9DFF9D9D
|
||||||
|
9DFFBFBFBFFF002774CC00277400002B79CC477ABEFF2C5FA3FF376AAEFF2B5E
|
||||||
|
A2FF376AAEFF33508CFFB8B8B8FFD0D0D0FFD3D3D3FFD5D5D5FFAAAAAAFFBEBE
|
||||||
|
BEFFDCDCDCFF00246FCC00246F00002875CC4477BBFF2C5FA3FF3568ACFF2B5E
|
||||||
|
A2FF2E61A5FF334B87FFBBBBBBFFD3D3D3FFD5D5D5FFD8D8D8FFDBDBDBFFDCDC
|
||||||
|
DCFFDDDDDDFF001F68CC001F6800002571CC4174B8FF2C5FA3FF2D60A4FF2356
|
||||||
|
9AFF3D70B4FF334179FFBEBEBEFFD5D5D5FFD8D8D8FFDBDBDBFFDCDCDCFFDDDD
|
||||||
|
DDFFDDDDDDFF001258CC0012580000226DCC3F72B6FF225599FF3B6EB2FF2C51
|
||||||
|
96EC0A1C60D3000749A4000648CC000648CC000648CC000648CC000648CC0006
|
||||||
|
48CC000648CC00074A9900084B00001B64CC4174B8FF2A5094EC0A1A5ED30008
|
||||||
|
4A8A000648240006470000044500000445000004450000044500000445000004
|
||||||
|
4500000445000006480000084B0000105500000B4FCC0007498A000546240005
|
||||||
|
4700000648000006470000044500000445000004450000044500000445000004
|
||||||
|
4500000445000006480000084B007E7E7E007E7E7E007F7F7F00808080008080
|
||||||
800080808000808080008080800080808000129D000014A8000015A9009915A9
|
800080808000808080008080800080808000129D000014A8000015A9009915A9
|
||||||
00CC15A9009914A80000129D00007E7E7E007E7E7E007F7F7F00808080008080
|
00CC15A9009914A80000129D00007E7E7E007E7E7E007F7F7F00808080008080
|
||||||
800080808000808080008080800080808000129D000013A1000014A400CC75EE
|
800080808000808080008080800080808000129D000013A1000014A400CC75EE
|
||||||
@@ -326,7 +404,7 @@ object Form1: TForm1
|
|||||||
object MnuFile: TMenuItem
|
object MnuFile: TMenuItem
|
||||||
Caption = 'File'
|
Caption = 'File'
|
||||||
object MenuItem1: TMenuItem
|
object MenuItem1: TMenuItem
|
||||||
Caption = 'New Item5'
|
Action = AcFileExit
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object MnuEdit: TMenuItem
|
object MnuEdit: TMenuItem
|
||||||
|
@@ -6,7 +6,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
||||||
StdCtrls, ComCtrls, ActnList, Menus,
|
StdCtrls, ComCtrls, ActnList, Menus, StdActns,
|
||||||
fpspreadsheet, fpspreadsheetctrls, fpspreadsheetgrid, fpsActions;
|
fpspreadsheet, fpspreadsheetctrls, fpspreadsheetgrid, fpsActions;
|
||||||
|
|
||||||
type
|
type
|
||||||
@@ -14,9 +14,10 @@ type
|
|||||||
{ TForm1 }
|
{ TForm1 }
|
||||||
|
|
||||||
TForm1 = class(TForm)
|
TForm1 = class(TForm)
|
||||||
ActionList1: TActionList;
|
ActionList: TActionList;
|
||||||
Button1: TButton;
|
Button1: TButton;
|
||||||
ImageList1: TImageList;
|
AcFileExit: TFileExit;
|
||||||
|
ImageList: TImageList;
|
||||||
MainMenu: TMainMenu;
|
MainMenu: TMainMenu;
|
||||||
MenuItem1: TMenuItem;
|
MenuItem1: TMenuItem;
|
||||||
MenuItem2: TMenuItem;
|
MenuItem2: TMenuItem;
|
||||||
@@ -37,6 +38,12 @@ type
|
|||||||
AddWorksheetAction: TsWorksheetAddAction;
|
AddWorksheetAction: TsWorksheetAddAction;
|
||||||
DeleteWorksheetAction: TsWorksheetDeleteAction;
|
DeleteWorksheetAction: TsWorksheetDeleteAction;
|
||||||
RenameWorksheetAction: TsWorksheetRenameAction;
|
RenameWorksheetAction: TsWorksheetRenameAction;
|
||||||
|
ToolBar1: TToolBar;
|
||||||
|
ToolButton1: TToolButton;
|
||||||
|
ToolButton2: TToolButton;
|
||||||
|
ToolButton3: TToolButton;
|
||||||
|
ToolButton4: TToolButton;
|
||||||
|
ToolButton5: TToolButton;
|
||||||
WorkbookSource: TsWorkbookSource;
|
WorkbookSource: TsWorkbookSource;
|
||||||
WorkbookTabControl: TsWorkbookTabControl;
|
WorkbookTabControl: TsWorkbookTabControl;
|
||||||
WorksheetGrid: TsWorksheetGrid;
|
WorksheetGrid: TsWorksheetGrid;
|
||||||
|
@@ -185,6 +185,9 @@ object Form1: TForm1
|
|||||||
top = 80
|
top = 80
|
||||||
object MnuFile: TMenuItem
|
object MnuFile: TMenuItem
|
||||||
Caption = 'File'
|
Caption = 'File'
|
||||||
|
object MnuFileExit: TMenuItem
|
||||||
|
Action = AcFileExit
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object MnuEdit: TMenuItem
|
object MnuEdit: TMenuItem
|
||||||
Caption = 'Edit'
|
Caption = 'Edit'
|
||||||
@@ -196,11 +199,19 @@ object Form1: TForm1
|
|||||||
object MnuDeleteWorksheet: TMenuItem
|
object MnuDeleteWorksheet: TMenuItem
|
||||||
Caption = 'New Item5'
|
Caption = 'New Item5'
|
||||||
end
|
end
|
||||||
|
object MnuRenameWorksheet: TMenuItem
|
||||||
|
Caption = 'New Item6'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object ActionList: TActionList
|
object ActionList: TActionList
|
||||||
left = 203
|
left = 203
|
||||||
top = 144
|
top = 144
|
||||||
|
object AcFileExit: TFileExit
|
||||||
|
Category = 'File'
|
||||||
|
Caption = 'E&xit'
|
||||||
|
Hint = 'Exit'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@@ -6,7 +6,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||||
StdCtrls, ComCtrls, ExtCtrls, Grids, Buttons, Menus, ActnList,
|
StdCtrls, ComCtrls, ExtCtrls, Grids, Buttons, Menus, ActnList, StdActns,
|
||||||
fpspreadsheet, fpspreadsheetctrls, fpSpreadsheetGrid, fpsActions;
|
fpspreadsheet, fpspreadsheetctrls, fpSpreadsheetGrid, fpsActions;
|
||||||
|
|
||||||
type
|
type
|
||||||
@@ -17,8 +17,11 @@ type
|
|||||||
ActionList: TActionList;
|
ActionList: TActionList;
|
||||||
BtnLoad: TButton;
|
BtnLoad: TButton;
|
||||||
CbLoader: TComboBox;
|
CbLoader: TComboBox;
|
||||||
|
AcFileExit: TFileExit;
|
||||||
Label1: TLabel;
|
Label1: TLabel;
|
||||||
MainMenu: TMainMenu;
|
MainMenu: TMainMenu;
|
||||||
|
MnuFileExit: TMenuItem;
|
||||||
|
MnuRenameWorksheet: TMenuItem;
|
||||||
MnuDeleteWorksheet: TMenuItem;
|
MnuDeleteWorksheet: TMenuItem;
|
||||||
MnuAddWorksheet: TMenuItem;
|
MnuAddWorksheet: TMenuItem;
|
||||||
MnuWorksheets: TMenuItem;
|
MnuWorksheets: TMenuItem;
|
||||||
@@ -149,10 +152,17 @@ begin
|
|||||||
actn := TsWorksheetDeleteAction.Create(self);
|
actn := TsWorksheetDeleteAction.Create(self);
|
||||||
with TsWorksheetDeleteAction(actn) do begin
|
with TsWorksheetDeleteAction(actn) do begin
|
||||||
ActionList := self.ActionList;
|
ActionList := self.ActionList;
|
||||||
WOrkbookSource := Self.WorkbookSource;
|
WorkbookSource := Self.WorkbookSource;
|
||||||
end;
|
end;
|
||||||
MnuDeleteWorksheet.Action := actn;
|
MnuDeleteWorksheet.Action := actn;
|
||||||
|
|
||||||
|
actn := TsWorksheetRenameAction.Create(self);
|
||||||
|
with TsWorksheetRenameAction(actn) do begin
|
||||||
|
ActionList := self.ActionList;
|
||||||
|
WorkbookSource := Self.WorkbookSource;
|
||||||
|
end;
|
||||||
|
MnuRenameWorksheet.Action := actn;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.InspectorTabControlChange(Sender: TObject);
|
procedure TForm1.InspectorTabControlChange(Sender: TObject);
|
||||||
@@ -161,6 +171,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.SpeedButton1Click(Sender: TObject);
|
procedure TForm1.SpeedButton1Click(Sender: TObject);
|
||||||
|
// The same effect is obtained by using the built-in TsWorksheetAddAction.
|
||||||
var
|
var
|
||||||
sheetname: String;
|
sheetname: String;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@@ -174,6 +185,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.SpeedButton2Click(Sender: TObject);
|
procedure TForm1.SpeedButton2Click(Sender: TObject);
|
||||||
|
// The same effect is obtained by using the built-in TsWorksheetDeleteAction.
|
||||||
begin
|
begin
|
||||||
if WorkbookSource.Workbook.GetWorksheetCount = 1 then
|
if WorkbookSource.Workbook.GetWorksheetCount = 1 then
|
||||||
MessageDlg('There must be a least 1 worksheet.', mtError, [mbOK], 0)
|
MessageDlg('There must be a least 1 worksheet.', mtError, [mbOK], 0)
|
||||||
@@ -185,6 +197,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TForm1.SpeedButton3Click(Sender: TObject);
|
procedure TForm1.SpeedButton3Click(Sender: TObject);
|
||||||
|
// The same effect can be obtained by using the built-in TsWorksheetRenameAction
|
||||||
var
|
var
|
||||||
s: String;
|
s: String;
|
||||||
begin
|
begin
|
||||||
|
@@ -33,10 +33,14 @@ type
|
|||||||
property Worksheet;
|
property Worksheet;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TsWorksheetNameEvent = procedure (Sender: TObject; AWorksheet: TsWorksheet;
|
||||||
|
var ASheetName: String) of object;
|
||||||
|
|
||||||
{ Action for adding a worksheet }
|
{ Action for adding a worksheet }
|
||||||
TsWorksheetAddAction = class(TsWorksheetAction)
|
TsWorksheetAddAction = class(TsWorksheetAction)
|
||||||
private
|
private
|
||||||
FNameMask: String;
|
FNameMask: String;
|
||||||
|
FOnGetWorksheetName: TsWorksheetNameEvent;
|
||||||
procedure SetNameMask(const AValue: String);
|
procedure SetNameMask(const AValue: String);
|
||||||
protected
|
protected
|
||||||
function GetUniqueSheetName: String;
|
function GetUniqueSheetName: String;
|
||||||
@@ -45,6 +49,8 @@ type
|
|||||||
procedure ExecuteTarget(Target: TObject); override;
|
procedure ExecuteTarget(Target: TObject); override;
|
||||||
published
|
published
|
||||||
property NameMask: String read FNameMask write SetNameMask;
|
property NameMask: String read FNameMask write SetNameMask;
|
||||||
|
property OnGetWorksheetName: TsWorksheetNameEvent
|
||||||
|
read FOnGetWorksheetName write FOnGetWorksheetName;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ Action for deleting selected worksheet }
|
{ Action for deleting selected worksheet }
|
||||||
@@ -56,9 +62,14 @@ type
|
|||||||
|
|
||||||
{ Action for renaming selected worksheet }
|
{ Action for renaming selected worksheet }
|
||||||
TsWorksheetRenameAction = class(TsWorksheetAction)
|
TsWorksheetRenameAction = class(TsWorksheetAction)
|
||||||
|
private
|
||||||
|
FOnGetWorksheetName: TsWorksheetNameEvent;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
procedure ExecuteTarget(Target: TObject); override;
|
procedure ExecuteTarget(Target: TObject); override;
|
||||||
|
published
|
||||||
|
property OnGetWorksheetName: TsWorksheetNameEvent
|
||||||
|
read FOnGetWorksheetName write FOnGetWorksheetName;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure Register;
|
procedure Register;
|
||||||
@@ -128,7 +139,7 @@ end;
|
|||||||
|
|
||||||
{ TsWorksheetAddAction }
|
{ TsWorksheetAddAction }
|
||||||
|
|
||||||
constructor TsWOrksheetAddAction.Create(AOwner: TComponent);
|
constructor TsWorksheetAddAction.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
Caption := 'Add';
|
Caption := 'Add';
|
||||||
@@ -136,6 +147,8 @@ begin
|
|||||||
FNameMask := 'Sheet%d';
|
FNameMask := 'Sheet%d';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ Helper procedure which creates a default worksheetname by counting a number
|
||||||
|
up until it provides in the NameMask a unique worksheet name. }
|
||||||
function TsWorksheetAddAction.GetUniqueSheetName: String;
|
function TsWorksheetAddAction.GetUniqueSheetName: String;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
@@ -157,7 +170,18 @@ var
|
|||||||
begin
|
begin
|
||||||
if HandlesTarget(Target) then
|
if HandlesTarget(Target) then
|
||||||
begin
|
begin
|
||||||
|
// Get default name of the new worksheet
|
||||||
sheetName := GetUniqueSheetName;
|
sheetName := GetUniqueSheetName;
|
||||||
|
// If available use own procedure to specify new worksheet name
|
||||||
|
if Assigned(FOnGetWorksheetName) then
|
||||||
|
FOnGetWorksheetName(self, Worksheet, sheetName);
|
||||||
|
// Check validity of worksheet name
|
||||||
|
if not Workbook.ValidWorksheetName(sheetName) then
|
||||||
|
begin
|
||||||
|
MessageDlg(Format('"5s" is not a valid worksheet name.', [sheetName]), mtError, [mbOK], 0);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
// Add new worksheet using the worksheet name.
|
||||||
Workbook.AddWorksheet(sheetName);
|
Workbook.AddWorksheet(sheetName);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -179,7 +203,7 @@ end;
|
|||||||
constructor TsWorksheetDeleteAction.Create(AOwner: TComponent);
|
constructor TsWorksheetDeleteAction.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
Caption := 'Delete';
|
Caption := 'Delete...';
|
||||||
Hint := 'Delete worksheet';
|
Hint := 'Delete worksheet';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -187,20 +211,24 @@ procedure TsWorksheetDeleteAction.ExecuteTarget(Target: TObject);
|
|||||||
begin
|
begin
|
||||||
if HandlesTarget(Target) then
|
if HandlesTarget(Target) then
|
||||||
begin
|
begin
|
||||||
|
// Make sure that the last worksheet is not deleted - there must always be
|
||||||
|
// at least 1 worksheet.
|
||||||
if Workbook.GetWorksheetCount = 1 then
|
if Workbook.GetWorksheetCount = 1 then
|
||||||
begin
|
begin
|
||||||
MessageDlg('The workbook must contain at least 1 worksheet', mtError, [mbOK], 0);
|
MessageDlg('The workbook must contain at least 1 worksheet', mtError, [mbOK], 0);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// Confirmation dialog
|
||||||
if MessageDlg(
|
if MessageDlg(
|
||||||
Format('Do you really want to delete worksheet "%s"?', [Worksheet.Name]),
|
Format('Do you really want to delete worksheet "%s"?', [Worksheet.Name]),
|
||||||
mtConfirmation, [mbYes, mbNo], 0) <> mrYes
|
mtConfirmation, [mbYes, mbNo], 0) <> mrYes
|
||||||
then
|
then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
|
// Remove the worksheet; the workbookSource takes care of selecting the
|
||||||
|
// next worksheet after deletion.
|
||||||
Workbook.RemoveWorksheet(Worksheet);
|
Workbook.RemoveWorksheet(Worksheet);
|
||||||
// The workbooksource takes care of selecting the next worksheet
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -221,8 +249,19 @@ begin
|
|||||||
if HandlesTarget(Target) then
|
if HandlesTarget(Target) then
|
||||||
begin
|
begin
|
||||||
s := Worksheet.Name;
|
s := Worksheet.Name;
|
||||||
if InputQuery('Rename worksheet', 'New worksheet name', s) then
|
// If requested, override input box by own input
|
||||||
Worksheet.Name := s;
|
if Assigned(FOnGetWorksheetName) then
|
||||||
|
FOnGetWorksheetName(self, Worksheet, s)
|
||||||
|
else
|
||||||
|
s := InputBox('Rename worksheet', 'New worksheet name', s);
|
||||||
|
// No change
|
||||||
|
if s = WorksheetName then
|
||||||
|
exit;
|
||||||
|
// Check validity of new worksheet name
|
||||||
|
if Workbook.ValidWorksheetName(s) then
|
||||||
|
Worksheet.Name := s
|
||||||
|
else
|
||||||
|
MessageDlg(Format('"%s" is not a valid worksheet name.', [s]), mtError, [mbOK], 0);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user