home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 December / Chip_2001-12_cd1.bin / zkuste / delphi / kompon / d3456 / POWERPDF.ZIP / PowerPdf / Example / MakeDoc / UMakeDoc.pas < prev   
Pascal/Delphi Source File  |  2001-09-15  |  26KB  |  967 lines

  1. unit UMakeDoc;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   PReport, ComCtrls, ExtCtrls, Menus, PRAnnotation, PdfDoc, PdfTypes;
  8.  
  9. type
  10.   TContentsElement = class;
  11.   TForm1 = class(TForm)
  12.     MainMenu1: TMainMenu;
  13.     File1: TMenuItem;
  14.     CreatePDF1: TMenuItem;
  15.     N1: TMenuItem;
  16.     Exit1: TMenuItem;
  17.     Help1: TMenuItem;
  18.     About1: TMenuItem;
  19.     PReport1: TPReport;
  20.     SaveDialog1: TSaveDialog;
  21.     Panel1: TPanel;
  22.     PageControl1: TPageControl;
  23.     TabSheet1: TTabSheet;
  24.     TabSheet2: TTabSheet;
  25.     TabSheet3: TTabSheet;
  26.     TabSheet4: TTabSheet;
  27.     TabSheet5: TTabSheet;
  28.     TabSheet6: TTabSheet;
  29.     TabSheet7: TTabSheet;
  30.     TabSheet8: TTabSheet;
  31.     TabSheet9: TTabSheet;
  32.     TabSheet10: TTabSheet;
  33.     TabSheet11: TTabSheet;
  34.     TabSheet12: TTabSheet;
  35.     TabSheet13: TTabSheet;
  36.     TabSheet14: TTabSheet;
  37.     TabSheet15: TTabSheet;
  38.     TabSheet16: TTabSheet;
  39.     TabSheet17: TTabSheet;
  40.     CoverPage: TPRPage;
  41.     PRLayoutPanel1: TPRLayoutPanel;
  42.     PRText2: TPRText;
  43.     PRLayoutPanel2: TPRLayoutPanel;
  44.     PRText1: TPRText;
  45.     ContentsPage: TPRPage;
  46.     PRLayoutPanel4: TPRLayoutPanel;
  47.     PRRect6: TPRRect;
  48.     PRRect7: TPRRect;
  49.     PRRect8: TPRRect;
  50.     PRRect10: TPRRect;
  51.     PRText1Contents: TPRText;
  52.     PRPage3: TPRPage;
  53.     PRLayoutPanel3: TPRLayoutPanel;
  54.     PRRect1: TPRRect;
  55.     PRRect2: TPRRect;
  56.     PRRect3: TPRRect;
  57.     PRText6: TPRText;
  58.     PRRect4: TPRRect;
  59.     PRTextIntro: TPRText;
  60.     PRRect5: TPRRect;
  61.     PRText1_1: TPRText;
  62.     PRText9: TPRText;
  63.     PRText1_2: TPRText;
  64.     PRText259: TPRText;
  65.     PRText1_3: TPRText;
  66.     PRText261: TPRText;
  67.     PRText262: TPRText;
  68.     PRText263: TPRText;
  69.     PRPage4: TPRPage;
  70.     PRLayoutPanel5: TPRLayoutPanel;
  71.     PRRect9: TPRRect;
  72.     PRRect11: TPRRect;
  73.     PRRect12: TPRRect;
  74.     PRRect13: TPRRect;
  75.     PRText21: TPRText;
  76.     PRRect14: TPRRect;
  77.     PRTextCompRef: TPRText;
  78.     PRText2_1: TPRText;
  79.     PRText24: TPRText;
  80.     PRText2_1_1: TPRText;
  81.     PRText26: TPRText;
  82.     PRText27: TPRText;
  83.     PRText28: TPRText;
  84.     PRText29: TPRText;
  85.     PRText30: TPRText;
  86.     PRText31: TPRText;
  87.     PRText32: TPRText;
  88.     PRText36: TPRText;
  89.     PRText37: TPRText;
  90.     PRText38: TPRText;
  91.     PRText39: TPRText;
  92.     PRText40: TPRText;
  93.     PRText41: TPRText;
  94.     PRText42: TPRText;
  95.     PRText43: TPRText;
  96.     PRText44: TPRText;
  97.     PRText45: TPRText;
  98.     PRText46: TPRText;
  99.     PRText47: TPRText;
  100.     PRText48: TPRText;
  101.     PRText49: TPRText;
  102.     PRText50: TPRText;
  103.     PRText33: TPRText;
  104.     PRText34: TPRText;
  105.     PRText35: TPRText;
  106.     PRText83: TPRText;
  107.     PRText84: TPRText;
  108.     PRText85: TPRText;
  109.     PRPage5: TPRPage;
  110.     PRLayoutPanel6: TPRLayoutPanel;
  111.     PRRect15: TPRRect;
  112.     PRRect16: TPRRect;
  113.     PRRect17: TPRRect;
  114.     PRRect18: TPRRect;
  115.     PRText62: TPRText;
  116.     PRText63: TPRText;
  117.     PRText64: TPRText;
  118.     PRText53: TPRText;
  119.     PRText54: TPRText;
  120.     PRText55: TPRText;
  121.     PRText56: TPRText;
  122.     PRText58: TPRText;
  123.     PRText59: TPRText;
  124.     PRText60: TPRText;
  125.     PRText61: TPRText;
  126.     PRText65: TPRText;
  127.     PRText66: TPRText;
  128.     PRText67: TPRText;
  129.     PRText86: TPRText;
  130.     PRText87: TPRText;
  131.     PRText88: TPRText;
  132.     PRText77: TPRText;
  133.     PRText78: TPRText;
  134.     PRText79: TPRText;
  135.     PRPage7: TPRPage;
  136.     PRLayoutPanel7: TPRLayoutPanel;
  137.     PRRect19: TPRRect;
  138.     PRRect20: TPRRect;
  139.     PRRect21: TPRRect;
  140.     PRRect22: TPRRect;
  141.     PRText2_2_1: TPRText;
  142.     PRText102: TPRText;
  143.     PRText103: TPRText;
  144.     PRText104: TPRText;
  145.     PRText105: TPRText;
  146.     PRText106: TPRText;
  147.     PRText107: TPRText;
  148.     PRText108: TPRText;
  149.     PRText109: TPRText;
  150.     PRText110: TPRText;
  151.     PRText111: TPRText;
  152.     PRText112: TPRText;
  153.     PRText113: TPRText;
  154.     PRText114: TPRText;
  155.     PRText115: TPRText;
  156.     PRText2_2_2: TPRText;
  157.     PRText96: TPRText;
  158.     PRText97: TPRText;
  159.     PRText119: TPRText;
  160.     PRText120: TPRText;
  161.     PRText121: TPRText;
  162.     PRText122: TPRText;
  163.     PRText123: TPRText;
  164.     PRText124: TPRText;
  165.     PRText125: TPRText;
  166.     PRText2_2: TPRText;
  167.     PRText90: TPRText;
  168.     PRText91: TPRText;
  169.     PRText92: TPRText;
  170.     PRPage8: TPRPage;
  171.     PRLayoutPanel8: TPRLayoutPanel;
  172.     PRRect23: TPRRect;
  173.     PRRect24: TPRRect;
  174.     PRRect25: TPRRect;
  175.     PRRect26: TPRRect;
  176.     PRText2_3: TPRText;
  177.     PRText152: TPRText;
  178.     PRText153: TPRText;
  179.     PRText154: TPRText;
  180.     PRText155: TPRText;
  181.     PRText156: TPRText;
  182.     PRText2_3_1: TPRText;
  183.     PRText164: TPRText;
  184.     PRText165: TPRText;
  185.     PRText166: TPRText;
  186.     PRText2_3_2: TPRText;
  187.     PRText100: TPRText;
  188.     PRText101: TPRText;
  189.     PRText116: TPRText;
  190.     PRText117: TPRText;
  191.     PRText118: TPRText;
  192.     PRText126: TPRText;
  193.     PRText127: TPRText;
  194.     PRPage9: TPRPage;
  195.     PRLayoutPanel9: TPRLayoutPanel;
  196.     PRRect27: TPRRect;
  197.     PRRect28: TPRRect;
  198.     PRRect29: TPRRect;
  199.     PRRect30: TPRRect;
  200.     PRText2_4: TPRText;
  201.     PRText133: TPRText;
  202.     PRText134: TPRText;
  203.     PRText135: TPRText;
  204.     PRText136: TPRText;
  205.     PRText137: TPRText;
  206.     PRText2_4_1: TPRText;
  207.     PRText139: TPRText;
  208.     PRText140: TPRText;
  209.     PRText141: TPRText;
  210.     PRText2_4_2: TPRText;
  211.     PRText143: TPRText;
  212.     PRText144: TPRText;
  213.     PRText145: TPRText;
  214.     PRText146: TPRText;
  215.     PRText147: TPRText;
  216.     PRText148: TPRText;
  217.     PRText149: TPRText;
  218.     PRText150: TPRText;
  219.     PRText157: TPRText;
  220.     PRText158: TPRText;
  221.     PRText159: TPRText;
  222.     PRText160: TPRText;
  223.     PRText161: TPRText;
  224.     PRText162: TPRText;
  225.     PRText167: TPRText;
  226.     PRText168: TPRText;
  227.     PRText169: TPRText;
  228.     PRText170: TPRText;
  229.     PRText171: TPRText;
  230.     PRText172: TPRText;
  231.     PRText173: TPRText;
  232.     PRText174: TPRText;
  233.     PRText175: TPRText;
  234.     PRPage10: TPRPage;
  235.     PRLayoutPanel17: TPRLayoutPanel;
  236.     PRRect67: TPRRect;
  237.     PRRect68: TPRRect;
  238.     PRRect69: TPRRect;
  239.     PRRect70: TPRRect;
  240.     PRText2_5: TPRText;
  241.     PRText281: TPRText;
  242.     PRText287: TPRText;
  243.     PRText319: TPRText;
  244.     PRText320: TPRText;
  245.     PRText321: TPRText;
  246.     PRText2_5_1: TPRText;
  247.     PRText323: TPRText;
  248.     PRText324: TPRText;
  249.     PRText325: TPRText;
  250.     PRText326: TPRText;
  251.     PRText327: TPRText;
  252.     PRText328: TPRText;
  253.     PRText329: TPRText;
  254.     PRText330: TPRText;
  255.     PRText331: TPRText;
  256.     PRText348: TPRText;
  257.     PRText349: TPRText;
  258.     PRText350: TPRText;
  259.     PRText354: TPRText;
  260.     PRText355: TPRText;
  261.     PRText356: TPRText;
  262.     PRPage11: TPRPage;
  263.     PRLayoutPanel14: TPRLayoutPanel;
  264.     PRRect54: TPRRect;
  265.     PRRect55: TPRRect;
  266.     PRRect56: TPRRect;
  267.     PRRect58: TPRRect;
  268.     PRText380: TPRText;
  269.     PRText381: TPRText;
  270.     PRText382: TPRText;
  271.     PRText383: TPRText;
  272.     PRText384: TPRText;
  273.     PRText385: TPRText;
  274.     PRText386: TPRText;
  275.     PRText387: TPRText;
  276.     PRText388: TPRText;
  277.     PRText389: TPRText;
  278.     PRRect76: TPRRect;
  279.     PRText390: TPRText;
  280.     PRText391: TPRText;
  281.     PRText392: TPRText;
  282.     PRText393: TPRText;
  283.     PRText394: TPRText;
  284.     PRText395: TPRText;
  285.     PRPage12: TPRPage;
  286.     PRLayoutPanel10: TPRLayoutPanel;
  287.     PRRect31: TPRRect;
  288.     PRRect32: TPRRect;
  289.     PRRect33: TPRRect;
  290.     PRRect34: TPRRect;
  291.     PRText2_6: TPRText;
  292.     PRText179: TPRText;
  293.     PRText180: TPRText;
  294.     PRText181: TPRText;
  295.     PRText182: TPRText;
  296.     PRText183: TPRText;
  297.     PRText2_6_1: TPRText;
  298.     PRText185: TPRText;
  299.     PRText186: TPRText;
  300.     PRText187: TPRText;
  301.     PRText196: TPRText;
  302.     PRText197: TPRText;
  303.     PRText198: TPRText;
  304.     PRText199: TPRText;
  305.     PRText200: TPRText;
  306.     PRText201: TPRText;
  307.     PRText202: TPRText;
  308.     PRText203: TPRText;
  309.     PRText239: TPRText;
  310.     PRText295: TPRText;
  311.     PRText296: TPRText;
  312.     PRText297: TPRText;
  313.     PRText298: TPRText;
  314.     PRText299: TPRText;
  315.     PRText300: TPRText;
  316.     PRText301: TPRText;
  317.     PRText302: TPRText;
  318.     PRText303: TPRText;
  319.     PRText304: TPRText;
  320.     PRText305: TPRText;
  321.     PRText306: TPRText;
  322.     PRText307: TPRText;
  323.     PRText308: TPRText;
  324.     PRText309: TPRText;
  325.     PRText310: TPRText;
  326.     PRText311: TPRText;
  327.     PRText312: TPRText;
  328.     PRPage13: TPRPage;
  329.     PRLayoutPanel11: TPRLayoutPanel;
  330.     PRRect35: TPRRect;
  331.     PRRect36: TPRRect;
  332.     PRRect37: TPRRect;
  333.     PRRect38: TPRRect;
  334.     PRText2_7: TPRText;
  335.     PRText191: TPRText;
  336.     PRText192: TPRText;
  337.     PRText193: TPRText;
  338.     PRText194: TPRText;
  339.     PRText195: TPRText;
  340.     PRText2_7_1: TPRText;
  341.     PRText206: TPRText;
  342.     PRText207: TPRText;
  343.     PRText208: TPRText;
  344.     PRText209: TPRText;
  345.     PRText210: TPRText;
  346.     PRText211: TPRText;
  347.     PRText212: TPRText;
  348.     PRText213: TPRText;
  349.     PRText214: TPRText;
  350.     PRText215: TPRText;
  351.     PRText216: TPRText;
  352.     PRText217: TPRText;
  353.     PRText3: TPRText;
  354.     PRText204: TPRText;
  355.     PRText240: TPRText;
  356.     PRPage14: TPRPage;
  357.     PRLayoutPanel12: TPRLayoutPanel;
  358.     PRRect39: TPRRect;
  359.     PRRect40: TPRRect;
  360.     PRRect41: TPRRect;
  361.     PRRect42: TPRRect;
  362.     PRText2_8: TPRText;
  363.     PRText246: TPRText;
  364.     PRText247: TPRText;
  365.     PRText248: TPRText;
  366.     PRText249: TPRText;
  367.     PRText250: TPRText;
  368.     PRText2_8_1: TPRText;
  369.     PRText252: TPRText;
  370.     PRText253: TPRText;
  371.     PRText254: TPRText;
  372.     PRText255: TPRText;
  373.     PRText256: TPRText;
  374.     PRText257: TPRText;
  375.     PRText258: TPRText;
  376.     PRText260: TPRText;
  377.     PRText264: TPRText;
  378.     PRText265: TPRText;
  379.     PRText273: TPRText;
  380.     PRText274: TPRText;
  381.     PRPage15: TPRPage;
  382.     PRLayoutPanel13: TPRLayoutPanel;
  383.     PRRect43: TPRRect;
  384.     PRRect44: TPRRect;
  385.     PRRect45: TPRRect;
  386.     PRRect46: TPRRect;
  387.     PRText2_9: TPRText;
  388.     PRText221: TPRText;
  389.     PRText222: TPRText;
  390.     PRText223: TPRText;
  391.     PRText2_9_1: TPRText;
  392.     PRText227: TPRText;
  393.     PRText228: TPRText;
  394.     PRText229: TPRText;
  395.     PRText230: TPRText;
  396.     PRText231: TPRText;
  397.     PRText232: TPRText;
  398.     PRText233: TPRText;
  399.     PRText234: TPRText;
  400.     PRText235: TPRText;
  401.     PRText236: TPRText;
  402.     PRText237: TPRText;
  403.     PRText238: TPRText;
  404.     PRRect47: TPRRect;
  405.     PRText224: TPRText;
  406.     PRText225: TPRText;
  407.     PRRect48: TPRRect;
  408.     PRText266: TPRText;
  409.     PRRect49: TPRRect;
  410.     PRRect50: TPRRect;
  411.     PRText267: TPRText;
  412.     PRText268: TPRText;
  413.     PRRect51: TPRRect;
  414.     PRRect52: TPRRect;
  415.     PRText269: TPRText;
  416.     PRText270: TPRText;
  417.     PRRect57: TPRRect;
  418.     PRPage16: TPRPage;
  419.     PRLayoutPanel18: TPRLayoutPanel;
  420.     PRRect72: TPRRect;
  421.     PRRect73: TPRRect;
  422.     PRRect74: TPRRect;
  423.     PRRect75: TPRRect;
  424.     PRText2_10: TPRText;
  425.     PRText357: TPRText;
  426.     PRText358: TPRText;
  427.     PRText359: TPRText;
  428.     PRText2_10_1: TPRText;
  429.     PRText361: TPRText;
  430.     PRText362: TPRText;
  431.     PRText363: TPRText;
  432.     PRText364: TPRText;
  433.     PRText365: TPRText;
  434.     PRText366: TPRText;
  435.     PRText367: TPRText;
  436.     PRText368: TPRText;
  437.     PRText369: TPRText;
  438.     PRText370: TPRText;
  439.     PRText371: TPRText;
  440.     PRText372: TPRText;
  441.     PRLabel2: TPRLabel;
  442.     PRRect53: TPRRect;
  443.     PREllipse1: TPREllipse;
  444.     PREllipse2: TPREllipse;
  445.     PREllipse3: TPREllipse;
  446.     PREllipse4: TPREllipse;
  447.     PREllipse5: TPREllipse;
  448.     PREllipse6: TPREllipse;
  449.     PRPage17: TPRPage;
  450.     PRLayoutPanel16: TPRLayoutPanel;
  451.     PRRect63: TPRRect;
  452.     PRRect64: TPRRect;
  453.     PRRect65: TPRRect;
  454.     PRRect66: TPRRect;
  455.     PRText2_11: TPRText;
  456.     PRText282: TPRText;
  457.     PRText283: TPRText;
  458.     PRText284: TPRText;
  459.     PRText2_11_1: TPRText;
  460.     PRText291: TPRText;
  461.     PRText292: TPRText;
  462.     PRText293: TPRText;
  463.     PRText294: TPRText;
  464.     PRText313: TPRText;
  465.     PRText314: TPRText;
  466.     PRText315: TPRText;
  467.     PRText316: TPRText;
  468.     PRAnnotation1: TPRAnnotation;
  469.     PRAnnotation2: TPRAnnotation;
  470.     PRText288: TPRText;
  471.     PRText289: TPRText;
  472.     PRText290: TPRText;
  473.     PRText317: TPRText;
  474.     PRText318: TPRText;
  475.     PRPage20: TPRPage;
  476.     PRLayoutPanel15: TPRLayoutPanel;
  477.     PRRect59: TPRRect;
  478.     PRRect60: TPRRect;
  479.     PRRect61: TPRRect;
  480.     PRRect62: TPRRect;
  481.     PRText220: TPRText;
  482.     PRTextCopyright: TPRText;
  483.     PRLabel3: TPRLabel;
  484.     PRLabel4: TPRLabel;
  485.     PRLabel6: TPRLabel;
  486.     PRLabel7: TPRLabel;
  487.     PRLabel9: TPRLabel;
  488.     PRLabel5: TPRLabel;
  489.     PRLabel8: TPRLabel;
  490.     PRLabel10: TPRLabel;
  491.     PRRect71: TPRRect;
  492.     PRLabel11: TPRLabel;
  493.     PRLabel1: TPRLabel;
  494.     PRLabel22: TPRLabel;
  495.     PRLabel23: TPRLabel;
  496.     PRLabel24: TPRLabel;
  497.     PRLabel25: TPRLabel;
  498.     PRLabel26: TPRLabel;
  499.     PRLabel27: TPRLabel;
  500.     PRLabel28: TPRLabel;
  501.     PRLabel29: TPRLabel;
  502.     PRLabel30: TPRLabel;
  503.     PRLabel31: TPRLabel;
  504.     PRLabel32: TPRLabel;
  505.     PRLabel33: TPRLabel;
  506.     PRLabel34: TPRLabel;
  507.     PRLabel35: TPRLabel;
  508.     PRLabel36: TPRLabel;
  509.     PRLabel21: TPRLabel;
  510.     PRGridPanel1: TPRGridPanel;
  511.     lblSectionNo: TPRLabel;
  512.     lblSectionName: TPRLabel;
  513.     PRText5: TPRText;
  514.     PRText7: TPRText;
  515.     PRText8: TPRText;
  516.     PRText10: TPRText;
  517.     PRText11: TPRText;
  518.     TabSheet18: TTabSheet;
  519.     PRPage6: TPRPage;
  520.     PRLayoutPanel19: TPRLayoutPanel;
  521.     PRRect77: TPRRect;
  522.     PRRect78: TPRRect;
  523.     PRRect79: TPRRect;
  524.     PRRect80: TPRRect;
  525.     PRText94: TPRText;
  526.     PRText95: TPRText;
  527.     PRText98: TPRText;
  528.     PRText99: TPRText;
  529.     PRText128: TPRText;
  530.     PRText129: TPRText;
  531.     PRText130: TPRText;
  532.     PRText131: TPRText;
  533.     PRText132: TPRText;
  534.     PRText138: TPRText;
  535.     PRText176: TPRText;
  536.     PRText177: TPRText;
  537.     PRText178: TPRText;
  538.     PRLabel12: TPRLabel;
  539.     PRLabel13: TPRLabel;
  540.     PRLabel14: TPRLabel;
  541.     PRLabel15: TPRLabel;
  542.     PRText4: TPRText;
  543.     PRText13: TPRText;
  544.     PRLabel16: TPRLabel;
  545.     PRLabel17: TPRLabel;
  546.     TabSheet19: TTabSheet;
  547.     PRPage18: TPRPage;
  548.     PRLayoutPanel20: TPRLayoutPanel;
  549.     PRRect81: TPRRect;
  550.     PRRect82: TPRRect;
  551.     PRRect83: TPRRect;
  552.     PRRect84: TPRRect;
  553.     PRLabel18: TPRLabel;
  554.     PRText2_12: TPRText;
  555.     PRText14: TPRText;
  556.     PRText15: TPRText;
  557.     PRText16: TPRText;
  558.     PRText2_12_2: TPRText;
  559.     TabSheet20: TTabSheet;
  560.     PRPage19: TPRPage;
  561.     PRLayoutPanel21: TPRLayoutPanel;
  562.     PRRect85: TPRRect;
  563.     PRRect86: TPRRect;
  564.     PRRect87: TPRRect;
  565.     PRRect88: TPRRect;
  566.     PRLabel19: TPRLabel;
  567.     PRText70: TPRText;
  568.     PRText71: TPRText;
  569.     PRText72: TPRText;
  570.     PRText73: TPRText;
  571.     PRText74: TPRText;
  572.     PRText12: TPRText;
  573.     PRText17: TPRText;
  574.     PRLabel20: TPRLabel;
  575.     PRLabel37: TPRLabel;
  576.     PRText188: TPRText;
  577.     PRText189: TPRText;
  578.     PRLabel38: TPRLabel;
  579.     PRLabel39: TPRLabel;
  580.     PRText190: TPRText;
  581.     PRText219: TPRText;
  582.     PRLabel40: TPRLabel;
  583.     PRLabel41: TPRLabel;
  584.     PRLabel42: TPRLabel;
  585.     PRLabel43: TPRLabel;
  586.     PRText18: TPRText;
  587.     PRLabel44: TPRLabel;
  588.     PRLabel45: TPRLabel;
  589.     PRText19: TPRText;
  590.     PRLabel46: TPRLabel;
  591.     PRLabel47: TPRLabel;
  592.     PRText20: TPRText;
  593.     PRLabel48: TPRLabel;
  594.     PRLabel49: TPRLabel;
  595.     PRText22: TPRText;
  596.     PRLabel50: TPRLabel;
  597.     PRLabel51: TPRLabel;
  598.     PRText23: TPRText;
  599.     PRLabel52: TPRLabel;
  600.     PRLabel53: TPRLabel;
  601.     PRText25: TPRText;
  602.     PRLabel54: TPRLabel;
  603.     PRLabel55: TPRLabel;
  604.     PRText51: TPRText;
  605.     PRLabel56: TPRLabel;
  606.     PRLabel57: TPRLabel;
  607.     PRText52: TPRText;
  608.     PRText57: TPRText;
  609.     PRLabel58: TPRLabel;
  610.     PRLabel59: TPRLabel;
  611.     PRText68: TPRText;
  612.     PRText69: TPRText;
  613.     PRText75: TPRText;
  614.     PRLabel60: TPRLabel;
  615.     PRLabel61: TPRLabel;
  616.     PRLabel62: TPRLabel;
  617.     PRLabel63: TPRLabel;
  618.     PRLabel64: TPRLabel;
  619.     PRLabel65: TPRLabel;
  620.     PRLabel66: TPRLabel;
  621.     PRLabel67: TPRLabel;
  622.     PRLabel68: TPRLabel;
  623.     PRLabel69: TPRLabel;
  624.     PRText76: TPRText;
  625.     PRText80: TPRText;
  626.     PRText81: TPRText;
  627.     PRText82: TPRText;
  628.     PRText89: TPRText;
  629.     PRLabel70: TPRLabel;
  630.     PRLabel71: TPRLabel;
  631.     procedure PRLayoutPanel2BeforePrint(Sender: TObject;
  632.       ACanvas: TPRCanvas; Rect: TRect);
  633.     procedure PRLayoutPanel2AfterPrint(Sender: TObject;
  634.       ACanvas: TPRCanvas; Rect: TRect);
  635.     procedure CreatePDF1Click(Sender: TObject);
  636.     procedure Exit1Click(Sender: TObject);
  637.     procedure About1Click(Sender: TObject);
  638.     procedure PRLayoutPanelBeforePrint(Sender: TObject;
  639.       ACanvas: TPRCanvas; Rect: TRect);
  640.     procedure FormCreate(Sender: TObject);
  641.     procedure FormDestroy(Sender: TObject);
  642.     procedure PRGridPanel1BeforePrintChild(Sender: TObject;
  643.       ACanvas: TPRCanvas; ACol, ARow: Integer; Rect: TRect);
  644.     procedure CoverPagePrintPage(Sender: TObject; ACanvas: TPRCanvas);
  645.   private
  646.     FCurrentOutline: array[0..5] of TPROutlineEntry;
  647.     FContentsList: TList;
  648.     FPos: integer;
  649.     procedure CreateContentsList;
  650.     function FindLink(AItem: TPRItem): TContentsElement;
  651.   public
  652.     { Public ÉΘî╛ }
  653.   end;
  654.  
  655.   TContentsElement = class(TObject)
  656.   private
  657.     FContentsIndex: string;
  658.     FTitle: string;
  659.     FData: TPdfDictionary;
  660.     FTarget: TPRItem;
  661.   public
  662.     property ContentsIndex: string read FContentsIndex write FContentsIndex;
  663.     property Title: string read FTitle write FTitle;
  664.     property Data: TPdfDictionary read FData write FData;
  665.     property Target: TPRItem read FTarget write FTarget;
  666.   end;
  667.  
  668. var
  669.   Form1: TForm1;
  670.  
  671. implementation
  672.  
  673. {$R *.DFM}
  674.  
  675. procedure TForm1.PRLayoutPanel2BeforePrint(Sender: TObject;
  676.   ACanvas: TPRCanvas; Rect: TRect);
  677. begin
  678.   // change the horizontal scaling of th font.
  679.   ACanvas.SetHorizontalScaling(80);
  680.   PRLayoutPanelBeforePrint(Sender, ACanvas, Rect);
  681. end;
  682.  
  683. procedure TForm1.PRLayoutPanel2AfterPrint(Sender: TObject;
  684.   ACanvas: TPRCanvas; Rect: TRect);
  685. begin
  686.   // restore the horizontal scaling of th font.
  687.   ACanvas.SetHorizontalScaling(100);
  688. end;
  689.  
  690. procedure TForm1.CreateContentsList;
  691. var
  692.   APage: TPRPage;
  693.   APanel: TPRPanel;
  694.   AControl: TControl;
  695.   i, j, k: integer;
  696.   FChapterIndex: integer;
  697.   FContentsElement: TContentsElement;
  698.   S: string;
  699. begin
  700.   // clear the contents list.
  701.   for i := FContentsList.Count - 1 downto 0 do
  702.     TContentsElement(FContentsList.Items[i]).Free;
  703.  
  704.   // create new contents list.
  705.   FChapterIndex := 0;
  706.   for i := 0 to PageControl1.PageCount do
  707.   begin
  708.     APage := TPRPage(Self.FindComponent('PRPage' + IntToStr(i)));
  709.     if (APage <> nil) and (APage.Controls[0] is TPRPanel) then
  710.     begin
  711.       APanel := TPRPanel(APage.Controls[0]);
  712.       for j := 0 to APanel.ControlCount - 1 do
  713.       begin
  714.         AControl := APanel.Controls[j];
  715.         if AControl.Tag = 2 then
  716.         begin
  717.           FContentsElement := TContentsElement.Create;
  718.           with FContentsElement do
  719.           begin
  720.             if AControl is TPRText then
  721.               Title := TPRText(AControl).Text
  722.             else
  723.             if AControl is TPRLabel then
  724.               Title := TPRLabel(AControl).Caption
  725.             else
  726.               raise Exception.CreateFmt('invalid target control %s', [AControl.ClassName]);
  727.             if (Title <> 'Contents') and (Title <> 'Copyright') then
  728.             begin
  729.               inc(FChapterIndex);
  730.               FContentsList.Add(TContentsElement.Create);
  731.               Title := 'Chapter' + IntToStr(FChapterIndex) + ' ' + Title;
  732.               Target := TPRItem(AControl);
  733.               FContentsList.Add(FContentsElement);
  734.             end
  735.             else
  736.               FContentsElement.Free;
  737.           end;
  738.         end
  739.         else
  740.         if (AControl.Tag = 3) or (AControl.Tag = 4) then
  741.         begin
  742.           FContentsElement := TContentsElement.Create;
  743.           with FContentsElement do
  744.           begin
  745.             if AControl is TPRText then
  746.               S := TPRText(AControl).Text
  747.             else
  748.             if AControl is TPRLabel then
  749.               S := TPRLabel(AControl).Caption
  750.             else
  751.               raise Exception.CreateFmt('invalid target control %s', [AControl.ClassName]);
  752.             k := Pos(' ', S);
  753.             if k < 1 then
  754.               raise Exception.CreateFmt('invalid contents title text %s', [S]);
  755.             ContentsIndex := Copy(S, 1, k);
  756.             Title := Trim(Copy(S, k, Length(S) - k + 1));
  757.             Target := TPRItem(AControl);
  758.           end;
  759.           FContentsList.Add(FContentsElement);
  760.         end;
  761.       end;
  762.     end;
  763.   end;
  764. end;
  765.  
  766. procedure TForm1.CreatePDF1Click(Sender: TObject);
  767. var
  768.   APage: TPRPage;
  769.   i: integer;
  770. begin
  771.   if not SaveDialog1.Execute then Exit;
  772.   with PReport1 do
  773.   begin
  774.     FileName := SaveDialog1.FileName;
  775.     BeginDoc;
  776.  
  777.     FCurrentOutline[0] := OutlineRoot;
  778.     OutlineRoot.Opened := true;
  779.     Print(CoverPage);
  780.  
  781.     CreateContentsList;
  782.  
  783.     // print index of contents.
  784.     FPos := 0;
  785.     while FPos < FContentsList.Count do
  786.     begin
  787.       Print(ContentsPage);
  788.       PRText1Contents.Text := '';
  789.       PRText1Contents.Tag := 0;
  790.     end;
  791.  
  792.     for i := 2 to PageControl1.PageCount - 1 do
  793.     begin
  794.       APage := TPRPage(PageControl1.Pages[i].Controls[0]);
  795.       if APage <> nil then
  796.         Print(APage);
  797.     end;
  798.     EndDoc;
  799.  
  800.     for i := FContentsList.Count - 1 downto 0 do
  801.       TContentsElement(FContentsList.Items[i]).Free;
  802.     FContentsList.Clear;
  803.   end;
  804. end;
  805.  
  806. procedure TForm1.Exit1Click(Sender: TObject);
  807. begin
  808.   Close;
  809. end;
  810.  
  811. procedure TForm1.About1Click(Sender: TObject);
  812. begin
  813.   ShowMessage(POWER_PDF_VERSION_STR + #13#10 + POWER_PDF_COPYRIGHT);
  814. end;
  815.  
  816. procedure TForm1.PRLayoutPanelBeforePrint(Sender: TObject;
  817.   ACanvas: TPRCanvas; Rect: TRect);
  818. var
  819.   FDestination: TPRDestination;
  820.   i, j: integer;
  821.   FLevel: integer;
  822.   FControlList: TList;
  823.   FPRText: TPRText;
  824.   TmpYPos: integer;
  825.   ItemIndex: integer;
  826.   FTextWidth: Single;
  827.   Element: TContentsElement;
  828. begin
  829.   // printting page number
  830.   if PReport1.PageNumber > 1 then
  831.     with ACanvas do
  832.     begin
  833.       SetFont('Times-Roman', 8);
  834.       FTextWidth := TextWidth(IntToStr(PReport1.PageNumber - 1));
  835.       TextOut((PageWidth - FTextWidth) / 2 + 3, 30, IntToStr(PReport1.PageNumber - 1));
  836.     end;
  837.  
  838.   // sorting the Items of the page by Top property.
  839.   FControlList := TList.Create;
  840.   with (Sender as TPRPanel) do
  841.   for i := 0 to ControlCount - 1 do
  842.     if (Controls[i] is TPRText) and (Controls[i].Tag > 0) then
  843.     begin
  844.       TmpYPos := Controls[i].Top;
  845.       ItemIndex := -1;
  846.       for j := 0 to FControlList.Count - 1 do
  847.         if TControl(FControlList[j]).Top > TmpYPos then
  848.         begin
  849.           ItemIndex := j;
  850.           Break;
  851.         end;
  852.       if ItemIndex = -1 then
  853.         FControlList.Add(Controls[i])
  854.       else
  855.         FControlList.Insert(ItemIndex, Controls[i]);
  856.     end;
  857.  
  858.   for i := 0 to FControlList.Count - 1 do
  859.     if TPRText(FControlList[i]).Tag > 0 then
  860.     begin
  861.       // getting outline level from the Tag property.
  862.       FPRText := TPRText(FControlList[i]);
  863.       FLevel := FPRText.Tag;
  864.       if FCurrentOutline[FLevel - 1] <> nil then
  865.       begin
  866.         FCurrentOutline[FLevel] := FCurrentOutline[FLevel - 1].AddChild;
  867.         with FCurrentOutline[FLevel] do
  868.         begin
  869.           if FLevel = 1 then
  870.             Opened := true;
  871.           Title := FPRText.Text;
  872.           FDestination := PReport1.CreateDestination;
  873.           Dest := FDestination;
  874.         end;
  875.         with FDestination do
  876.         begin
  877.           DestinationType := dtXYZ;
  878.           Top := FPRText.Top;
  879.           Left := FPRText.Left;
  880.           Zoom := 0;
  881.         end;
  882.  
  883.         // setting the destination object to the link-annotation.
  884.         Element := FindLink(TPRText(FControlList[i]));
  885.         if Element <> nil then
  886.           Element.Data.AddItem('Dest', FDestination.Data.GetValue);
  887.       end;
  888.     end;
  889.  
  890.   FControlList.Free;
  891. end;
  892.  
  893. procedure TForm1.FormCreate(Sender: TObject);
  894. begin
  895.   FContentsList := TList.Create;
  896. end;
  897.  
  898. procedure TForm1.FormDestroy(Sender: TObject);
  899. var
  900.   i: integer;
  901. begin
  902.   for i := FContentsList.Count - 1 downto 0 do
  903.     TContentsElement(FContentsList.Items[i]).Free;
  904.   FContentsList.Free;
  905. end;
  906.  
  907. procedure TForm1.PRGridPanel1BeforePrintChild(Sender: TObject;
  908.   ACanvas: TPRCanvas; ACol, ARow: Integer; Rect: TRect);
  909. begin
  910.   if FPos < FContentsList.Count then
  911.   with TContentsElement(FContentsList[FPos]) do
  912.     begin
  913.       if ContentsIndex = '' then
  914.       begin
  915.         lblSectionName.FontBold := true;
  916.         lblSectionNo.FontSize := 12;
  917.         lblSectionName.FontSize := 12;
  918.         lblSectionName.Top := 0;
  919.       end
  920.       else
  921.       begin
  922.         lblSectionName.FontBold := false;
  923.         lblSectionNo.FontSize := 11;
  924.         lblSectionName.FontSize := 11;
  925.         lblSectionNo.Top := 3;
  926.         lblSectionName.Top := 3;
  927.       end;
  928.       lblSectionNo.Caption := ContentsIndex;
  929.       lblSectionName.Caption := Title;
  930.       with Rect do
  931.         Data := ACanvas.PdfCanvas.Doc.CreateAnnotation(asLink,
  932.             _PdfRect(Left, ACanvas.PageHeight - Top, Right, ACanvas.PageHeight - Bottom));
  933.       with Data do
  934.         AddItem('Border', TPdfArray.CreateNumArray(nil, [0, 0, 0]));
  935.     end
  936.   else
  937.   begin
  938.     lblSectionNo.Caption := '';
  939.     lblSectionName.Caption := '';
  940.   end;
  941.   inc(FPos);
  942. end;
  943.  
  944. procedure TForm1.CoverPagePrintPage(Sender: TObject; ACanvas: TPRCanvas);
  945. begin
  946.   with PReport1 do
  947.   begin
  948.     OpenAction := CreateDestination;
  949.     OpenAction.DestinationType := dtXYZ;
  950.   end;
  951. end;
  952.  
  953. function TForm1.FindLink(AItem: TPRItem): TContentsElement;
  954. var
  955.   i: integer;
  956.   Element: TContentsElement;
  957. begin
  958.   result := nil;
  959.   for i := FContentsList.Count - 1 downto 0 do
  960.   begin
  961.     Element := TContentsElement(FContentsList.Items[i]);
  962.     if Element.Target = AItem then result := Element;
  963.   end;
  964. end;
  965.  
  966. end.
  967.