added option pageHistory to TCEPageCOntrol

This commit is contained in:
Basile Burg 2016-02-21 21:07:25 +01:00
parent 201ea0a4da
commit 5ba68af663
1 changed files with 40 additions and 0 deletions

View File

@ -26,6 +26,15 @@ type
property index: integer read getIndex; property index: integer read getIndex;
end; end;
TCEPagesOption = (poPageHistory);
TCEPagesOptions = set of TCEPagesOption;
const
defPagesOpt = [poPageHistory];
type
(** (**
* Minimalist page-control dedicated to Coedit * Minimalist page-control dedicated to Coedit
* *
@ -45,6 +54,7 @@ type
fSplitBtn: TSpeedButton; fSplitBtn: TSpeedButton;
fContent: TPanel; fContent: TPanel;
fPages: TFPList; fPages: TFPList;
fPagesHistory: TFPList;
fPageIndex: integer; fPageIndex: integer;
fSplittedPageIndex: integer; fSplittedPageIndex: integer;
fButtons: TCEPageControlButtons; fButtons: TCEPageControlButtons;
@ -52,6 +62,7 @@ type
fOnChanging: TTabChangingEvent; fOnChanging: TTabChangingEvent;
fSplitter: TSplitter; fSplitter: TSplitter;
fOldSplitPos: integer; fOldSplitPos: integer;
fOptions: TCEPagesOptions;
fOnDragDrop: TDragDropEvent; fOnDragDrop: TDragDropEvent;
fOnDragOver: TDragOverEvent; fOnDragOver: TDragOverEvent;
@ -78,6 +89,7 @@ type
procedure setOnDragOver(value: TDragOverEvent); procedure setOnDragOver(value: TDragOverEvent);
procedure setOnDragDrop(value: TDragDropEvent); procedure setOnDragDrop(value: TDragDropEvent);
procedure setPagesOptions(value: TCEPagesOptions);
public public
constructor Create(aowner: TComponent); override; constructor Create(aowner: TComponent); override;
@ -105,6 +117,8 @@ type
property onChanged: TNotifyEvent read fOnChanged write fOnChanged; property onChanged: TNotifyEvent read fOnChanged write fOnChanged;
property onChanging: TTabChangingEvent read fOnChanging write fOnChanging; property onChanging: TTabChangingEvent read fOnChanging write fOnChanging;
property options: TCEPagesOptions read fOptions write setPagesOptions default defPagesOpt;
property OnDragOver read fOnDragOver write setOnDragOver; property OnDragOver read fOnDragOver write setOnDragOver;
property OnDragDrop read fOnDragDrop write setOnDragDrop; property OnDragDrop read fOnDragDrop write setOnDragDrop;
end; end;
@ -138,6 +152,8 @@ constructor TCEPageControl.Create(aowner: TComponent);
begin begin
inherited; inherited;
fOptions := defPagesOpt;
fHeader := TWinControl.Create(self); fHeader := TWinControl.Create(self);
fHeader.Parent:= self; fHeader.Parent:= self;
fHeader.Align := alTop; fHeader.Align := alTop;
@ -212,6 +228,7 @@ begin
fSplitter.Width := 6; fSplitter.Width := 6;
fPages := TFPList.Create; fPages := TFPList.Create;
fPagesHistory := TFPList.Create;
fPageIndex := -1; fPageIndex := -1;
fButtons:= CEPageControlDefaultButtons; fButtons:= CEPageControlDefaultButtons;
@ -223,6 +240,7 @@ begin
while fPages.Count > 0 do while fPages.Count > 0 do
deletePage(fPages.Count-1); deletePage(fPages.Count-1);
fPages.Free; fPages.Free;
fPagesHistory.Free;
inherited; inherited;
end; end;
@ -244,6 +262,14 @@ begin
fTabs.OnDragDrop:=value; fTabs.OnDragDrop:=value;
end; end;
procedure TCEPageControl.setPagesOptions(value: TCEPagesOptions);
begin
if fOptions = value then
exit;
fOptions := value;
fPagesHistory.Clear;
end;
procedure TCEPageControl.changedNotify; procedure TCEPageControl.changedNotify;
begin begin
updateButtonsState; updateButtonsState;
@ -338,6 +364,12 @@ function TCEPageControl.addPage: TCEPage;
var var
pge: TCEPage; pge: TCEPage;
begin begin
if poPageHistory in fOptions then
{$PUSH}{$HINTS OFF}{$WARNINGS OFF}
fPagesHistory.Insert(0, Pointer(PtrUint(fPageIndex)));
{$POP}
pge := TCEPage.Create(self); pge := TCEPage.Create(self);
pge.Parent := fContent; pge.Parent := fContent;
pge.Align:= alClient; pge.Align:= alClient;
@ -366,6 +398,14 @@ begin
fPages.Delete(index); fPages.Delete(index);
fTabs.Tabs.Delete(index); fTabs.Tabs.Delete(index);
if (poPageHistory in fOptions) and (fPagesHistory.Count > 0) then
begin
{$PUSH}{$HINTS OFF}{$WARNINGS OFF}
fPageIndex := Integer(fPagesHistory[0]);
fPagesHistory.Delete(0);
{$POP}
end;
if fPages.Count = 0 then if fPages.Count = 0 then
fPageIndex:=-1; fPageIndex:=-1;