fpspreadsheet: Fix bugs in TsWorkbookTabControl related to hidden worksheets (clicking of tabs, renaming of tabs).

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6561 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2018-07-13 12:50:57 +00:00
parent a36d9de949
commit 8d26e4cf10

View File

@ -1742,9 +1742,13 @@ end;
the corresponding worksheet and notify its listening components of the change. the corresponding worksheet and notify its listening components of the change.
-------------------------------------------------------------------------------} -------------------------------------------------------------------------------}
procedure TsWorkbookTabControl.Change; procedure TsWorkbookTabControl.Change;
var
sheetName: String;
begin begin
if (FWorkbookSource <> nil) and (FLockCount = 0) then if (FWorkbookSource <> nil) and (FLockCount = 0) then begin
FWorkbookSource.SelectWorksheet(Workbook.GetWorksheetByIndex(TabIndex)); sheetName := Tabs[TabIndex];
FWorkbookSource.SelectWorksheet(Workbook.GetWorksheetByName(sheetName));
end;
inherited; inherited;
end; end;
@ -1805,6 +1809,8 @@ procedure TsWorkbookTabControl.ListenerNotification(
AChangedItems: TsNotificationItems; AData: Pointer = nil); AChangedItems: TsNotificationItems; AData: Pointer = nil);
var var
i: Integer; i: Integer;
sheet: TsWorksheet;
sheetName: String;
begin begin
Unused(AData); Unused(AData);
@ -1813,21 +1819,18 @@ begin
begin begin
inc(FLockCount); // avoid WorkbookSelect message when adding each tab inc(FLockCount); // avoid WorkbookSelect message when adding each tab
GetSheetList(Tabs); GetSheetList(Tabs);
{
if (lniWorkbook in AChangedItems) then
TabIndex := 0
else
}
if (lniWorkbook in AChangedItems) and (Workbook <> nil) then if (lniWorkbook in AChangedItems) and (Workbook <> nil) then
begin begin
i := Workbook.GetWorksheetIndex(Workbook.ActiveWorksheet); i := Tabs.IndexOf(Workbook.ActiveWorksheet.Name);
if i > -1 then TabIndex := i else TabIndex := 0 if i > -1 then TabIndex := i else TabIndex := 0
end else end else
if (lniWorksheetAdd in AChangedItems) then if (lniWorksheetAdd in AChangedItems) then
TabIndex := Tabs.Count-1 TabIndex := Tabs.Count-1
else else
if (lniWorksheetRename in AChangedItems) then if (lniWorksheetRename in AChangedItems) then begin
TabIndex := Workbook.GetWorksheetIndex(TsWorksheet(AData)); sheet := TsWorksheet(AData);
TabIndex := Tabs.IndexOf(sheet.Name);
end;
dec(FLockCount); dec(FLockCount);
end; end;