Wednesday, January 5, 2011

Add/Delete pages - tabbed notebook

procedure AddPage(nbk : TNotebook; tabset : TTabSet; const pagename : string);{ Adds a new page to nbk and a new tab to tabset with pagename for the text,   }
{ places a memo on the page, and brings the new page to the top. }
{ Assumes the tabset has exactly one tab for each notebook page in same order. }
var
memo : TMemo;
page : TPage;begin
if
nbk <> nil then begin
nbk.Pages.Add(pagename); {add a page to the TNotebook}
nbk.PageIndex := nbk.Pages.Count - 1; {make new page the current page}
if tabset <> nil then begin
tabset.Tabs.Add(pagename); {add a matching tab}
tabset.TabIndex := nbk.PageIndex; {make new tab the current tab}
end;
if nbk.PageIndex > -1 then begin {make sure a page exists}
page := TPage(nbk.Pages.Objects[nbk.PageIndex]); {get page object}
memo := TMemo.Create(page); {create memo (owned by page)}
try
memo.Parent := page; {set page as Parent}
memo.Align := alClient; {set alignment to fill client area}
except
memo.Free; {free memo if something goes wrong}
end;
page.Visible := true; {make sure the page gets displayed}
end;
end;end;
procedure DeletePage(nbk : TNotebook; tabset : TTabSet; index : integer);{ Deletes the page whose PageIndex = index from nbk and tabset. }
{ Assumes the tabset has exactly one tab for each notebook page in same order. }
var
switchto : integer;begin
if
nbk <> nil then begin
if
(index >= 0) and (index < nbk.Pages.Count) then begin
if
index = nbk.PageIndex then begin
if
index < nbk.Pages.Count - 1 then begin {if page is not last in list}
switchto := nbk.PageIndex; {show page behind current after delete}
if (index = 0) and (nbk.Pages.Count > 1) then {if first page}
nbk.PageIndex := 1; {show second page now}
end else
switchto := nbk.PageIndex - 1; {else, show page before current}
end;
nbk.Pages.Delete(index); {free's the page & all controls it owns}
if tabset <> nil then begin
if
index < tabset.Tabs.Count then
tabset.Tabs.Delete(index); {delete corresponding tab}
end;
nbk.PageIndex := switchto;
end;
end;end;

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Kang Iwan K-sev | Thank's for your visit To My Site - Ridwan Mulyana | Cibeureum