TcxTreeListCustomReportLink.AddPageBreak(TList) Method
Inserts custom page breaks between tree list nodes.
Declaration
procedure AddPageBreak(ANodes: TList); overload;
Parameters
| Name | Type | Description |
|---|---|---|
| ANodes | TList | Specifies target nodes. |
Remarks
Adds a custom page break before the node specified by ANode.
The following example inserts a page break before the fifth, tenth, and fifteenth nodes:
//...
procedure TForm1.dxComponentPrinter1Link1GetCustomPageBreaks(
Sender: TcxTreeListCustomReportLink);
var
ACount: Integer;
begin
with Sender, <cxTreeList1> do
begin
ACount := AbsoluteVisibleCount - 1;
if ACount >= 5 then AddPageBreak(AbsoluteVisibleItems[5]);
if ACount >= 10 then AddPageBreak(AbsoluteVisibleItems[10]);
if ACount >= 15 then AddPageBreak(AbsoluteVisibleItems[15]);
end;
end;
The following example adds a page break before each tenth node:
//...
procedure TForm1.dxComponentPrinter1Link1GetCustomPageBreaks(
Sender: TcxTreeListCustomReportLink);
var
I: Integer;
begin
with Sender, <cxTreeList1> do
begin
for I := 1 to (AbsoluteVisibleCount - 1) div 10 do
AddPageBreak(AbsoluteVisibleItems[I * 10]);
end;
end;
procedure AddPageBreak(const ANodes: array of TcxTreeListNode);
Adds a custom page break by nodes stored in the array specified by ANodes.
The following example adds a page break before specific nodes, available in the tree list’s View:
//...
procedure TForm1.dxComponentPrinter1Link1GetCustomPageBreaks(
Sender: TcxTreeListCustomReportLink);
const
FNodeArrayLength = 3;
var
FNodeArray: array of TcxTreeListNode;
ACount, AMultiple, I: Integer;
begin
with Sender, <cxTreeList1> do
begin
ACount := AbsoluteVisibleCount - 1;
AMultiple := Round((ACount - ACount mod FNodeArrayLength)/FNodeArrayLength);
SetLength(FNodeArray, FNodeArrayLength);
for I := 0 to FNodeArrayLength - 1 do
FNodeArray[I] := AbsoluteVisibleItems[AMultiple * (I + 1)];
AddPageBreak(FNodeArray);
end;
end;
The following example places immediate child nodes for all root nodes on separate report pages:
//...
procedure TcxTreeListRLMainForm.dxComponentPrinterLink1GetCustomPageBreaks(
Sender: TcxTreeListCustomReportLink);
var
FNodeArray: array of TcxTreeListNode;
FRootLevelNode, FRootLevelNodeChild: TcxTreeListNode;
I, J: Integer;
begin
for I := 0 to <cxTreeList1>.Count - 1 do
begin
FRootLevelNode := <cxTreeList1>.Items[I];
with FRootLevelNode do
begin
if Visible then
begin
SetLength(FNodeArray, Count);
for J := 0 to Count - 1 do
begin
FRootLevelNodeChild := Items[J];
if FRootLevelNodeChild.Visible then
FNodeArray[J] := FRootLevelNodeChild;
end;
end;
end;
end;
Sender.AddPageBreak(FNodeArray);
end;
type
TcxTreeListNodeArray = array of TcxTreeListNode;
procedure AddPageBreak(const ANodes: TcxTreeListNodeArray);
Adds a custom page break before all the nodes within the array specified by ANodes.
The following example displays child nodes for all root level nodes on separate report pages:
//...
procedure TcxTreeListRLMainForm.dxComponentPrinterLink1GetCustomPageBreaks(
Sender: TcxTreeListCustomReportLink);
var
FNodeArray: TcxTreeListNodeArray;
FRootLevelNode, FRootLevelNodeChild: TcxTreeListNode;
I, J: Integer;
begin
for I := 0 to <cxTreeList1>.Count - 1 do
begin
FRootLevelNode := <cxTreeList1>.Items[I];
with FRootLevelNode do
begin
if Visible then
begin
SetLength(FNodeArray, Count);
for J := 0 to Count - 1 do
begin
FRootLevelNodeChild := Items[J];
if FRootLevelNodeChild.Visible then
FNodeArray[J] := FRootLevelNodeChild;
end;
end;
end;
end;
Sender.AddPageBreak(FNodeArray);
end;
procedure AddPageBreak(ANodes: TList);
Adds a custom page break before all the nodes within the pointer list specified by ANodes.
The following example inserts a custom page break before each selected node (to enable multiple node selection, set the tree list’s OptionsSelection.MultiSelect property to True):
//...
var
FNodeList: TList;
//...
FNodeList := TList.Create;
//...
procedure TForm1.dxComponentPrinter1Link1GetCustomPageBreaks(
Sender: TcxTreeListCustomReportLink);
begin
<cxTreeList1>.GetSelections(FNodeList);
Sender.AddPageBreak(FNodeList);
end;
//...
FNodeList.Free;