Q:  How can conserve resources with a TTabbedNotebook?

A:  The TTabbedNotebook is created with only the page showing actually in memory.  As tabs are selected, the pages to be shown are instantiated into memory.  The trick is to release the last page from memory so that only one page at a time exists.  There are two examples of doing this below.

This version recycles controls by changing the parent property as the pages are turned:

procedure TForm1.TabbedNotebook1Change(Sender: TObject; NewTab: Integer;
  var AllowChange: Boolean);
var
  CurrentPage, NewPage: TWinControl;
begin
  if sender is TTabbedNotebook then
    with TTabbedNotebook(sender) do begin
      CurrentPage := TWinControl(pages.objects[PageIndex]);
      LockWindowUpdate(handle);
      NewPage := TWinControl(pages.objects[NewTab]);
      while PresentPage.ControlCount > 0 do
        PresentPage.Controls[0].Parent := NewPage;
      LockWindowUpdate(0);
    end;
end;

This version is a bit more elegant and releases he window handle of the control while keeping all the other properties intact.  (i.e. You don't have to worry about losing the information contained in that window just because the window went away.)

procedure TForm1.TabbedNotebook1Change(Sender: TObject; NewTab: Integer;
  var AllowChange: Boolean);
var
  CurrentPage: TWinControl;
begin
  if sender is TTabbedNotebook then
     with TTabbedNotebook(sender) do begin
      CurrentPage := TWinControl(pages.objects[PageIndex]);
      LockWindowUpdate(handle);
      TWinControl(pages.objects[NewTab]).HandleNeeded;
      LockWindowUpdate(0);
    end;
end;
 

Thanks to the Delphi magazine's Tips and Tricks column for this one.