unit ScWorkListFrm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, PrintComXML, PrintComTypeDefUnit, ComCtrls; type TScWorkListForm = class(TForm) treBills: TTreeView; procedure treBillsChange(Sender: TObject; Node: TTreeNode); private { Private declarations } public { Public declarations } //TScReportsForm : procedure initialize(previewCom : TPrintComXML); end; implementation uses ScReportsFrm; {$R *.dfm} procedure TScWorkListForm.initialize(previewCom : TPrintComXML); var billField : PFieldRec; i : integer; cnt : integer; nd : TTreeNode; begin treBills.Items.Clear; billField := previewCom.getFieldByID(1012); if (billField <> nil) and (previewCom.isCrossTab ) then begin cnt := 1; for i := 0 to billField.DataLen - 1 do begin cnt := cnt + previewCom.getParentRecPages(i - 1); treBills.Items.AddChildObject(nil,billField.Value[i], pointer(cnt)); //nd := treBills.Items.Add(nil, billField.Value[i]); //nd. end; end; end; procedure TScWorkListForm.treBillsChange(Sender: TObject; Node: TTreeNode); var idx : integer; begin idx := integer(Node.Data); ReportsForm.xcbPages.ItemIndex := idx - 1; end; end.