You've already forked lazarus-ccr
fpspreadsheet: Add change palette notification to visual control system.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3804 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -951,6 +951,7 @@ type
|
||||
FOnAddWorksheet: TsWorksheetEvent;
|
||||
FOnRemoveWorksheet: TsRemoveWorksheetEvent;
|
||||
FOnSelectWorksheet: TsWorksheetEvent;
|
||||
FOnChangePalette: TNotifyEvent;
|
||||
FFileName: String;
|
||||
FLockCount: Integer;
|
||||
FLog: TStringList;
|
||||
@ -1065,6 +1066,8 @@ type
|
||||
property Options: TsWorkbookOptions read FOptions write FOptions;
|
||||
{@@ This event fires whenever a new worksheet is added }
|
||||
property OnAddWorksheet: TsWorksheetEvent read FOnAddWorksheet write FOnAddWorksheet;
|
||||
{@@ This event fires whenever the workbook palette changes. }
|
||||
property OnChangePalette: TNotifyEvent read FOnChangePalette write FOnChangePalette;
|
||||
{@@ This event fires whenever a worksheet is changed }
|
||||
property OnChangeWorksheet: TsWorksheetEvent read FOnChangeWorksheet write FOnChangeWorksheet;
|
||||
{@@ This event fires whenever a workbook is loaded }
|
||||
@ -7323,6 +7326,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
Result := Length(FPalette) - 1;
|
||||
|
||||
if Assigned(FOnChangePalette) then FOnChangePalette(self);
|
||||
end;
|
||||
|
||||
{@@ ----------------------------------------------------------------------------
|
||||
@ -7589,6 +7594,8 @@ begin
|
||||
{$IFDEF RNGCHECK}
|
||||
{$R+}
|
||||
{$ENDIF}
|
||||
|
||||
if Assigned(FOnChangePalette) then FOnChangePalette(self);
|
||||
end;
|
||||
|
||||
{@@ ----------------------------------------------------------------------------
|
||||
|
@ -40,7 +40,7 @@ type
|
||||
which kind of item has changed: the workbook, the worksheet, a cell value,
|
||||
or a cell formatting, etc. }
|
||||
TsNotificationItem = (lniWorkbook, lniWorksheet, lniCell, lniSelection,
|
||||
lniAbortSelection, lniRow);
|
||||
lniAbortSelection, lniRow, lniPalette);
|
||||
{@@ This set accompanies the notification between WorkbookSource and visual
|
||||
controls and describes which items have changed in the spreadsheet. }
|
||||
TsNotificationItems = set of TsNotificationItem;
|
||||
@ -75,6 +75,7 @@ type
|
||||
AFormat: TsSpreadsheetFormat; AWorksheetIndex: Integer = 0);
|
||||
procedure SetFileName(const AFileName: TFileName);
|
||||
procedure SetOptions(AValue: TsWorkbookOptions);
|
||||
procedure WorkbookChangedPaletteHandler(Sender: TObject);
|
||||
procedure WorkbookOpenedHandler(Sender: TObject);
|
||||
procedure WorksheetAddedHandler(Sender: TObject; ASheet: TsWorksheet);
|
||||
procedure WorksheetChangedHandler(Sender: TObject; ASheet: TsWorksheet);
|
||||
@ -761,6 +762,7 @@ begin
|
||||
FWorkbook.OnChangeWorksheet := @WorksheetChangedHandler;
|
||||
FWorkbook.OnRemoveWorksheet := @WorksheetRemovedHandler;
|
||||
FWorkbook.OnSelectWorksheet := @WorksheetSelectedHandler;
|
||||
FWorkbook.OnChangePalette := @WorkbookChangedPaletteHandler;
|
||||
// Pass options to workbook
|
||||
SetOptions(FOptions);
|
||||
end;
|
||||
@ -867,9 +869,6 @@ procedure TsWorkbookSource.NotifyListeners(AChangedItems: TsNotificationItems;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
//if FControlLockCount > 0 then
|
||||
// exit;
|
||||
|
||||
for i:=0 to FListeners.Count-1 do
|
||||
if TObject(FListeners[i]) is TsCellCombobox then
|
||||
TsCellCombobox(FListeners[i]).ListenerNotification(AChangedItems, AData)
|
||||
@ -1069,6 +1068,15 @@ begin
|
||||
FPendingOperation := AOperation;
|
||||
end;
|
||||
|
||||
{@@ ----------------------------------------------------------------------------
|
||||
Event handler called whenever the palette of the workbook is changed.
|
||||
-------------------------------------------------------------------------------}
|
||||
procedure TsWorkbookSource.WorkbookChangedPaletteHandler(Sender: TObject);
|
||||
begin
|
||||
Unused(Sender);
|
||||
NotifyListeners([lniPalette]);
|
||||
end;
|
||||
|
||||
{@@ ----------------------------------------------------------------------------
|
||||
Event handler called whenever a new workbook is opened.
|
||||
-------------------------------------------------------------------------------}
|
||||
@ -1825,7 +1833,9 @@ var
|
||||
activeCell: PCell;
|
||||
begin
|
||||
Unused(AData);
|
||||
if (Worksheet = nil) or ([lniCell, lniSelection]*AChangedItems = []) then
|
||||
if (Worksheet = nil) or
|
||||
([lniCell, lniSelection, lniPalette]*AChangedItems = [])
|
||||
then
|
||||
exit;
|
||||
|
||||
activeCell := GetActiveCell;
|
||||
@ -1833,6 +1843,11 @@ begin
|
||||
(lniSelection in AChangedItems)
|
||||
then
|
||||
ExtractFromCell(activeCell);
|
||||
|
||||
if (FFormatItem in [cfiFontColor, cfiBorderColor, cfiBackgroundColor]) and
|
||||
(lniPalette in AChangedItems)
|
||||
then
|
||||
Populate;
|
||||
end;
|
||||
|
||||
{@@ ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user