home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Unleashed / Visual_Basic_4_Unleashed_SAMS_Publishing_1995.iso / crystal / extras / crpedemo / crpedemo.txt < prev    next >
Text File  |  1994-12-14  |  12KB  |  190 lines

  1. CRPEDemo Sample VB application
  2. December 8, 1994
  3.  
  4. Overview
  5. --------
  6.  
  7. This is a sample application was created to not only help users understand the most popular print engine calls when using Crystal Reports 4.0 Pro and Visual Basic 3.0 Pro but to help users debug and trouble shoot their own application programming issue. The stucture is fairly simple in design given that most of the related print engine calls are located in a single form. Therefore, all of the formula related Print Engine information is in one VB form. This structure not only helps users find the code they are interested in but it allows anyone the ability to simply add their own forms with new print Engine calls at any time.
  8.  
  9. List of Print Engine Calls included in CRPEDemo
  10. -----------------------------------------------
  11.  
  12. Call                Location
  13.  
  14. PESetFont            Command1, Click Event, Font.FRM
  15. PEGetGraphOptions        Form, Load Event, GraphOpt.FRM
  16. PESetGraphOptions        OptionsOk, Click Event, GraphOpt.FRM
  17. PEGetGraphText            Form, Load Event, GraphTxt.FRM
  18. PESetGraphText            Command1, Click Event, GraphTxt.FRM
  19. PEGetGraphType            GraphTypeGetClick, Click Event, GraphTyp.FRM
  20. PESetGraphType            GraphSetTypeClick, Click Event, GraphTyp.FRM
  21. PEGetGraphData            Form, Load Event, GrphData.FRM
  22. PESetGraphData            LayoutClickOk, Click Event, GrphData.FRM
  23. PEGetNGroups            Form, Load Event, GroupCond.FRM
  24. PEGetGroupCondition        Form, Load Event, GroupCon.FRM
  25. PESetGroupCondition        Command2, Click Event, GroupCon.FRM
  26. PEOpenEngine            MenuEngineOpenJob, Click Event, Main.FRM
  27. PEClosePrintJob            MenuEngineCloseJob, Click Event, Main.FRM
  28. PEGetSelectedPrinter        Form, Load Event, PrintFrm.FRM
  29. PEGetNDetailCopies        Form, Load Event, PrintFrm.FRM
  30. PEGetPrintOptions        Form, Load Event, PrintFrm.FRM
  31. PEHasSavedData            Form, Load Event, PrintFrm.FRM
  32. PESetNDetailCopies        Command2, Click Event, PrintFrm.FRM
  33. PESetPrintOptions        Command2, Click Event, PrintFrm.FRM
  34. PEOutputToPrinter        Command2, Click Event, PrintFrm.FRM
  35. PEDiscardSavedData        Command2, Click Event, PrintFrm.FRM
  36. PEStartPrintJob            Command2, Click Event, PrintFrm.FRM
  37. PEGetReportTitle        Form, Load Event, RptTitle.FRM
  38. PESetReportTitle        Command3, Click Event, RptTitle.FRM
  39. PEGetSectionFormat        SectionCombo, Click Event, Section.FRM
  40. PEGetMinimumSectionHeight    SectionCombo, Click Event, Section.FRM
  41. PEGetLineHeight            SectionCombo, Click Event, Section.FRM\
  42. PESetSectionFormat        SetFormat, Click Event, Section.FRM
  43. PESetMinimumSectionHeight    SetFormat, Click Event, Section.FRM
  44. PESetLineHeight            SetFormat, Click Event, Section.FRM
  45. PEGetNthTableSessionInfo    Command1, Click Event, Security.FRM
  46. PESetNthTableSessionInfo    Command2, Click Event, Security.FRM
  47. PESelectPrinter            Command1, Click Event, SelectPr.FRM
  48. PEGetNthTableLogonInfo        Command3, Click Event, Server.FRM
  49. PESetNthTableLogonInfo        Command2, Click Event, Server.FRM
  50. PEGetNFormulas            Form, Load Event, SetFormu.FRM
  51. PEGetNthFormula            Form, Load Event, SetFormu.FRM
  52. PEGetSelectionFormula        Form, Load Event, SetFormu.FRM
  53. PEGetGroupSelectionFormula    Form, Load Event, SetFormu.FRM
  54. PESetFormula            Command7, Click Event, SetFormu.FRM
  55. PECheckFormula            Command6, Click Event, SetFormul.FRM
  56. PESetSelectionFormula        Command1, Click Event, SetFormul.FRM
  57. PESetGroupSelectionFormula    Command4, Click Event, SetFormul.FRM
  58. PEGetNSortFields        Form, Load Event, Sorting.FRM
  59. PEGetNGroupSortFields        Form, Load Event, Sorting.FRM
  60. PEGetNthSortField        Form, Load Event,  Sorting.FRM
  61. PEGetNthGroupSortField        Form, Load Event, Sorting.FRM
  62. PESetNthSortField        Command9, Click Event, Sorting.FRM
  63. PEDeleteNthSortField        Command10, Click Event, Sorting.FRM
  64. PESetNthGroupSortField        Command11, Click Event, Sorting.FRM
  65. PEDeleteNthGroupSortField    Command12, Click Event, Sorting.FRM
  66. PEGetSQLQuery            Command1, Click Event, SQLQuery.FRM
  67. PESetSQLQuery            Command2, Click Event, SQLQuery.FRM
  68. PEGetNParams            Form, Load Event, StoredPr.FRM
  69. PEGetNthParam            Form, Load Event, StoredPr.FRM
  70. PESetNthParam            StProcSet, Click Event, StoredPr.FRM
  71. PEGetNTables            Form, Click Event, Table.FRM
  72. PEGetNthTableLocation        Form, Load Event, Table.FRM
  73. PEGetNthTableType        LocationCombo, Click Event, Table.FRM
  74. PESetNthTableLocation        Command9, Click Event, Table.FRM
  75. PEShowPrintControls        Command2, Click Event, WinFrm.FRM
  76. PEOutPutToWindow        Command2, Click Event, WinFrm.FRM
  77. PEGetErrorCode            General, GetErrorString, CRPEDemo.BAS
  78. PEGetErrorText            General, GetErrorString, CRPEDemo.BAS
  79.     
  80.  
  81.  
  82. Basic Functionality:
  83. --------------------
  84.  
  85. The following is a quick guideline on using CRPEDemo. For further information on specific Print Engine Calls please refer to the Crystal Reports - Developer's Reference Manual or the On-line help under Developer's Information. Before you can begin any report generation in VB you must Open the Crystal Reports Print Engine. This will load the CRPE.DLL which should be located in the Windows/System directory. Please be sure that the DLL is the latest version for Crystal Reports 4.0 Pro. If the application loads an older CRPE.DLL many of the new function calls will not work and you will receive errors. Once the Print Engine is open you will have to Open a Print Job(or open a specific report that you have created). To open a print job successfully you will need to ensure that the RPT file is locatable, the database dlls used when creating the report are in your path and any UFL DLLs that may have been used in the report(i.e. the NOW, Picture, Soundex and DTSTo functions all use UFLs) are in the same directory as CRPE.DLL.
  86.  
  87. After opening the engine and opening a print job any print engine call is now available to use. You will notice that CRPEDemo will not enable the toolbar or the menu items until a print job is opened. The reason for this is that most of the print engine calls(except for a few specific ones) require a print job handle. Here is a typical sequence of calls that can be used in CRPEDemo. They have been listed with respect to their menu choices and button selections in CRPEDemo
  88.  
  89. Under the Engine menu:
  90.  
  91. Open Engine
  92. Open Print Job
  93.  
  94. Under the Formula menu
  95.  
  96. Selection Formula - This will bring up a dialogue that allows you to the selection formula.
  97.  
  98. Under the File Menu:
  99.  
  100. Print | Window - This allows you to print to the window. There is an option to use the saved data in the report or refresh. However, since a selection criteria is being set, in this case, the report will always refresh the data. The same would apply if a formula or group selection formula were being set.
  101.  
  102. Crystal as an MDI Child
  103. -----------------------
  104.  
  105. The Crystal Reports print window can be displayed as an MDI child if the methods in CRPEDemo are used. The basic concept is to create an MDI Child frame in VB and then make the Crystal print window a child of that child form. In the PEOutPutToWindow call the last parameter allows you to specify a ParentWindow handle. If the ParentWindow Handle is the handle of an MDI frame window then Crystal's print window will act as an MDI child. 
  106.  
  107. The next step is to use two the Windows API calls GetWindow and MoveWindow. 
  108.  
  109. The GetWindow function call is declared in the CRPEDemo.BAS file and is used to retrieve the handle of a window that has the specified relationship to the given window. The function searches the system's list of top-level windows, their associated child windows, the child windows of any child windows, and any siblings of the owner of a window. The second parameter of the GetWindow function call allows you to specify a relationship flag and in the case of CRPEDemo the second parameter is specified as GW_CHILD. This constant indentifies the MDI frame window's first child which would be the Crystal Reports print window.
  110.  
  111. The MoveWindow function call is declared in the CRPEDemo.BAS and is used to change the position and dimensions of a window. For top-level windows, the position and dimensions are relative to the upper-left corner of the screen. For child windows, they are relative to the upper-left corner of the parent window's client area. 
  112.  
  113. Both of these Windows API function calls are used in the MDI Child form 'Paint' and 'Resize' Procs to ensure that when the Crystal print window appears that the MDI child frame will match the size of the Crystal Reports Print window exactly and when the MDI child frame is resized the Crystal print window will resize accordingly. 
  114.  
  115. Graph Type Tip
  116. --------------
  117.  
  118. Selection a Graph Type
  119.  
  120. Graph Number: Specifies which graph within the section you want to modify. This value is 0 indexed. Within a section, graphs are numbered from top to bottom, first, then from left to right if they have the same top. Therefore, the first graph would be 0, the second 1, etc. Most times you will only have one graph so the graph number will usually be 0.
  121.  
  122. Section Code: Specifies the code for the report section in which the graph appears. See Table of section constants supplied with the PESetSectionFormat. 1000 is the summary, 2000 is the page header, 3000 is the first group header, 3001 is the second group header etc. 5000 is the first group footer, 5001 is the second group footer etc. You cannot place a graph in the details section so you should never use 4000 as a section code.
  123.  
  124. Graph Type: Specifies a pointer to the type of  graph you want to be displayed. For a list of possible graph types, refer to the chart under PEGetGraphType in the Global.BAS
  125.  
  126.  
  127. Graph Layout Tip
  128. ----------------
  129.  
  130. PEGraphDataInfo
  131.  
  132. Description
  133.  
  134. The PEGraphDataInfo structure contains information on what report data is used by a graph to create the values in the graph. The structure is used by PEGetGraphData to retrieve information regarding an existing graph and by PESetGraphData to change the data used by an existing graph.
  135.  
  136.  
  137. VB Type Listing:
  138. Type PEGraphDataInfo
  139.     StructSize As Integer
  140.     rowGroupN As Integer
  141.     colGroupN As Integer
  142.     summarizedFieldN As Integer
  143.     graphDirection As Integer
  144. End Type
  145.  
  146. Member    Description
  147.  
  148. StructSize    
  149. ----------
  150.  
  151. Specifies the size of the PEGraphDataInfo structure.  You must initialize this member to be the size of the structure, for example:graphDataInfo.StructSize = sizeof(PEGraphDataInfo)
  152.  
  153. rowGroupN
  154. ---------
  155.  
  156. Specifies which group number in the report is used to create the values in the rows of the graph.
  157.  
  158. colGroupN
  159. ---------    
  160.  
  161. Specifies which group number in the report is used to create the values in the         columns of the graph.
  162.  
  163. summarizedFldN    
  164. --------------
  165.  
  166. Specifies which summary field in the report is used to set the values of the risers in the graph. Summary fields are numbered in order of their creation.
  167.  
  168. graphDirection
  169. --------------    
  170.  
  171. For normal group/total report, the direction, is always PE_GRAPH_COLS_ONLY. For CrossTab reports, use any of the following constant values:
  172.  
  173. Constant            Meaning
  174.  
  175. PE_GRAPH_ROWS_ONLY        Use only row valuesin graph.
  176. PE_GRAPH_COLS_ONLY        Use only columnvalues in graph.
  177. PE_GRAPH_MIXED_ROW_COL        Graph by row values,then by column values.
  178. PE_GRAPH_MIXED_COL_ROW        Graph by column values,then by row values.
  179. PE_GRAPH_UNKNOWN_DIRECTION    The direction of thegraph is unknown.
  180.  
  181.  
  182. Help Buttons in CRPEDemo
  183. ------------------------
  184.  
  185. In most of the forms you will notice that there is a HELP button provided as well as a HELP menu and toolbar help button. These buttons are hard coded to shell out to the CRW.HLP file in the CRW directory. If you do not have a C:\CRW directory with the CRW.HLP included in it then these HELP buttons will not work and you get an error stating that the HELP FILE DOES NOT EXIST. 
  186.  
  187. If you have any suggestions regarding this application please forward them to our Technical Support Department. Information on how to contact Crystal Technical Support can be found on the back cover of the Crystal Reports 4.0 Manuals
  188.  
  189. Crystal Inc. Tech Support.
  190.