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