Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Steema/TeeTree/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The TTreePageNavigator component provides navigation controls for multi-page tree diagrams. It includes buttons for moving between pages and support for printing page ranges.
Components
TTreePageNavigator
Navigation control for tree pages.
type
TTreePageNavigator = class(TCustomTeeNavigator)
published
property Tree:TCustomTree;
property OnButtonClicked;
procedure EnableButtons; override;
procedure Print; override;
procedure PrintPages(FromPage, ToPage: Integer);
end;
Properties:
Tree - The tree component to navigate
OnButtonClicked - Event fired when a button is clicked
The navigator includes the following buttons:
nbFirst - Go to first page
nbPrior - Go to previous page
nbNext - Go to next page
nbLast - Go to last page
Usage Examples
Basic Setup
var
Navigator: TTreePageNavigator;
begin
Navigator := TTreePageNavigator.Create(Self);
Navigator.Parent := Panel1;
Navigator.Tree := Tree1;
Navigator.Align := alBottom;
end;
Design-Time Setup
// Drop TTreePageNavigator on form
// Set properties:
TreePageNavigator1.Tree := Tree1;
TreePageNavigator1.Align := alBottom;
procedure TForm1.UpdateNavigator;
begin
TreePageNavigator1.EnableButtons;
// Buttons are automatically enabled/disabled based on:
// - First/Prior disabled when on first page
// - Next/Last disabled when on last page
// - All disabled when Tree.Page.Count = 0
end;
Print Current Page
procedure TForm1.PrintCurrentPage;
begin
Tree1.Print;
end;
Print All Pages
procedure TForm1.PrintAllPages;
begin
TreePageNavigator1.Print; // Shows print dialog
end;
Print Page Range
procedure TForm1.PrintRange;
begin
// Print pages 1 through 5
TreePageNavigator1.PrintPages(1, 5);
end;
Print Dialog
uses TreeNavigator;
procedure TForm1.ShowPrintDialog;
var
PrintDlg: TPrintDialog;
begin
PrintDlg := TreePrintDialog(Tree1);
try
if PrintDlg.Execute then
begin
TreePageNavigator1.PrintPages(
PrintDlg.FromPage,
PrintDlg.ToPage
);
end;
finally
PrintDlg.Free;
end;
end;
procedure TForm1.TreePageNavigator1ButtonClicked(
Sender: TObject;
Button: TTeeNavigateBtn
);
begin
case Button of
nbFirst: ShowMessage('First page');
nbPrior: ShowMessage('Previous page');
nbNext: ShowMessage('Next page');
nbLast: ShowMessage('Last page');
end;
end;
Manual Page Navigation
procedure TForm1.GoToPage(PageNum: Integer);
begin
if (PageNum >= 1) and (PageNum <= Tree1.Page.Count) then
begin
Tree1.Page.Page := PageNum;
TreePageNavigator1.EnableButtons;
end;
end;
Get Current Page
function TForm1.GetCurrentPage: Integer;
begin
Result := Tree1.Page.Page;
end;
Get Total Pages
function TForm1.GetTotalPages: Integer;
begin
Result := Tree1.Page.Count;
end;
Check if First/Last Page
function TForm1.IsFirstPage: Boolean;
begin
Result := Tree1.Page.Page = 1;
end;
function TForm1.IsLastPage: Boolean;
begin
Result := Tree1.Page.Page = Tree1.Page.Count;
end;
Navigate Programmatically
procedure TForm1.NavigateFirst;
begin
if Tree1.Page.Page > 1 then
begin
Tree1.Page.Page := 1;
TreePageNavigator1.EnableButtons;
end;
end;
procedure TForm1.NavigatePrior;
begin
if Tree1.Page.Page > 1 then
begin
Tree1.Page.Page := Tree1.Page.Page - 1;
TreePageNavigator1.EnableButtons;
end;
end;
procedure TForm1.NavigateNext;
begin
if Tree1.Page.Page < Tree1.Page.Count then
begin
Tree1.Page.Page := Tree1.Page.Page + 1;
TreePageNavigator1.EnableButtons;
end;
end;
procedure TForm1.NavigateLast;
begin
if Tree1.Page.Page < Tree1.Page.Count then
begin
Tree1.Page.Page := Tree1.Page.Count;
TreePageNavigator1.EnableButtons;
end;
end;
Custom Print Title
procedure TForm1.PrintWithTitle;
begin
TreePageNavigator1.Name := 'Organization Chart';
TreePageNavigator1.Print;
// Printer.Title will be set to 'Organization Chart'
end;
Print Multiple Copies
uses TreeNavigator;
procedure TForm1.PrintMultipleCopies;
var
PrintDlg: TPrintDialog;
i: Integer;
begin
PrintDlg := TreePrintDialog(Tree1);
try
if PrintDlg.Execute then
begin
for i := 1 to PrintDlg.Copies do
TreePageNavigator1.PrintPages(
PrintDlg.FromPage,
PrintDlg.ToPage
);
end;
finally
PrintDlg.Free;
end;
end;
Update After Page Change
procedure TForm1.Tree1AfterDraw(Sender: TObject);
begin
// Update navigator buttons after drawing
TreePageNavigator1.EnableButtons;
// Update status bar
StatusBar1.SimpleText := Format('Page %d of %d',
[Tree1.Page.Page, Tree1.Page.Count]);
end;
Combined with Page Controls
procedure TForm1.SetupPageNavigation;
begin
// Set up tree pages
Tree1.Page.Count := 5;
Tree1.Page.Page := 1;
// Setup navigator
TreePageNavigator1.Tree := Tree1;
TreePageNavigator1.EnableButtons;
// Update display
Label1.Caption := Format('Page %d of %d',
[Tree1.Page.Page, Tree1.Page.Count]);
end;
Keyboard Navigation
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_HOME: NavigateFirst;
VK_PRIOR: NavigatePrior;
VK_NEXT: NavigateNext;
VK_END: NavigateLast;
end;
end;
Helper Functions
TreePrintDialog
Creates a print dialog configured for tree page printing.
Function TreePrintDialog(const Tree:TCustomTree):TPrintDialog;
Features:
- Automatically configured for page range printing
- MinPage set to 1
- MaxPage set to Tree.Page.Count
- Options include page number selection
- PrintRange set to prPageNums
Usage:
var
PrintDlg: TPrintDialog;
begin
PrintDlg := TreePrintDialog(Tree1);
try
if PrintDlg.Execute then
begin
// User selected print settings
// PrintDlg.FromPage and PrintDlg.ToPage contain range
// PrintDlg.Copies contains number of copies
end;
finally
PrintDlg.Free;
end;
end;
Print Features
Standard Print
- Prints all pages by default
- Shows print dialog for user selection
- Supports multiple copies
- Respects page range selection
PrintPages Method
- Direct printing without dialog
- Specify exact page range
- FromPage: Starting page (1-based)
- ToPage: Ending page (0 = all pages)
Print Properties
- Printer title from Navigator.Name
- Automatic page breaks
- Uses Tree.ChartPrintRect for layout
- Maintains page state after printing
Events
Fired when any navigator button is clicked.
property OnButtonClicked: TTeeNavigatorButtonClickEvent;
procedure TForm1.TreePageNavigator1ButtonClicked(
Sender: TObject;
Button: TTeeNavigateBtn
);
begin
// Handle button click
end;
Buttons are automatically enabled/disabled:
-
First/Prior buttons:
- Enabled when
Tree.Page.Page > 1
- Disabled on first page
-
Next/Last buttons:
- Enabled when
Tree.Page.Page < Tree.Page.Count
- Disabled on last page
-
All buttons:
- Disabled when
Tree.Page.Count = 0
- Disabled when Tree is nil
See Also