Rave's page-based visual layout tools instinctively appeal to designers not comfortable using banded views. When end users want to modify or create reports, they will only need RAVE's self-contained approach that doesn't rely on other designer tools. Now, if your authorized report modifiers aren't quite at the power-user level, RAVE has beginner, intermediate, and advanced levels to comfortably accommodate everyone. Sections down to the single entry can be locked so that only the Report Administrator can modify part or all of any report thereby enabling just the 'right' amount of control to be passed to the end-user to give maximum flexibility without 'risking the ship', so to speak.
And, even if the beginner level is too complex, there are Report Wizards to create all the reports your users will need. RAVE wizards are ready to perform their magic right out of the box. The RAVE advantage is even more apparent by the use of Nevrona's Reporting Project concept, which is the ability to store and share items from multiple related reports in a single file. This simplifies report maintenance and greatly reduces the time required to make global changes to reports.
Most applications have more than one report in them. In fact, many applications have dozens or even hundreds of reports. Why should you be forced to manage your reports one at a time? That's why we built Rave around the concept of a reporting project, allowing you to quickly create, modify and maintain all reports in your application. You don't need to deal with many separate files since a reporting project is saved in a single .RAV file. Since this .RAV file can be external to your application, you can add or modify reports without having to recompile your application each time. If you don't want an external .RAV file, don't worry, you can stream this file anywhere you want including a blob field in your database.
The Project Tree (shown at right) provides an efficient way to visually manage all of the reports in your project. It quickly tells you the structure of your reporting project and the types of components contained on each page with icons that are the same as the component buttons. The Project Tree also visually shows parent-child relationships, the print order of component as well as the current selection (green check marks). You can select components by clicking on the component on the Page in the Visual Designer or on the Project Tree. Non-visual components appear only in the Project Tree in order not to clutter up your report design.
There are three main sections in the Project Tree: the Report Library, the Global Page Catalog, and the Data View Dictionary. Reports themselves can contain any number of page definitions. Global Pages are used to hold items that you want accessible to multiple reports. Global Pages are discussed further in the topic, Reuse and Maintenance Tools. Data Views contain your field definitions and provide a link to the data in your application. Data Views are discussed further in the DataBase Access topic.
Rave is all about easy management. Besides making reporting easy and organized, Rave likes to keep itself organized and all according to what you want.
Since Rave is designed to be of ease to you there are three easy three ways for you to manage the many toolbars within Rave, which are: Tab-docking, normal docking and free-floating of toolbars. You will be able access any of the toolbars according to what is easy for you.
Rave's many toolbars make it easy to design even the most complicated report. The toolbars include: Project, Designer, Zoom, Alignment, Color, Line, Font, Standard, Drawing, Report and Barcode component toolbars. Since it is possible to create and install new components, you may have other component toolbar buttons in your designer.
The Project toolbar provides quick access to project level functions such as New Project, Project Open, Project Save, New Report, New Global Page, New Data View, New Report Page or Execute Report.
The Designer toolbar allows you to change the characteristics of the Page in the Visual Designer. Characteristics such as whether the grid is being shown, snap to grid, draw grid on top, show band headers, show rulers, and show the waste area of the page. The last button brings up Rave's extensive Preferences dialog, which is described later.
When you are working on a report with a complex design, you will find it much easier if you become familiar with the Zoom toolbar, which gives you quick access to Rave's extensive zooming capabilities. Select the zoom percent from a drop down list, type it in or use the Zoom Tool, Zoom In, Zoom Out, Zoom Selected, Zoom Page Width or Zoom Whole Page buttons.
To help keep your report looking professional, Rave's Alignment toolbar provides access to a whole host of options to micro-manage the components on your page. The Left/Top, Center, Right/Bottom, Center In Parent, Space Equally, Equate Widths/Heights options offer the traditional alignment options. The Move Forward, Move Behind, Bring To Front and Send To Back order movement buttons allow you to change the print order of components and are visually backed up by the listing of the components in the Project Tree. Lastly, the buttons Tap Left, Tap Right, Tap Up and Tap Down allow you to micro-adjust the position of components to the exact position you need.
The Color toolbar allows you to quickly select the primary and
secondary colors of your components. There are 8 color spots that you can use
to store any custom colors that you will be reusing throughout the project. If
the colors available aren't enough, you can double click on the custom color
palettes and create a different color using Rave's Color Editor (shown at
right). With the Color Editor, you can select from a wider variety or colors or
create your own combination of Red, Green and Blue and even select a percent
saturation for the current color.
The Line toolbar is a useful tool for changing the line/border thickness and style for components such as Line and Circle. Sizes are listed in points instead of pixels so that your lines will always be the same thickness on your reports no matter the resolution of the printer that you are using.
The Font toolbar provides quick access to a text component's font and alignment properties. It can also be useful for quickly viewing the font options for the currently selected text component(s).
The Standard, Drawing, Report and Barcode Component ToolBars are discussed in the following topics.
Reports often take a large part of the development time for an application. Many times, there are many similarities between the design of separate reports. Wouldn't you like a way to reuse portions of a report in another?
This is where Rave's Mirroring technology comes in. When a component is set to mirror another, it assumes the appearance and properties of the component it is mirroring (see the example to the right which shows an address block being mirrored in an international and US address template). The two components can be on the same page, across pages within the same report or on a global page. This is the primary purpose of a global page. You can almost think of it like an Object Repository, a central location for you to store reporting items that you want accessible to more than one report. If the component is a container control like TRaveSection (similar to Delphi's TPanel), all child components are mirrored as well. When the original component changes, all mirroring components will also change. While the mirrored component cannot change it properties, you can add additional components if it is a container control.
Here are just a few examples of where Mirroring would be useful:
Your customer wants a standard page header and footer on every page of their 50 reports. Now imagine you have all the reports done and your customer wants to change the layout of the headers and footers.
The Old Way - You would need to open up all 50 report definitions and change them one at a time.
The Rave Way - You would mirror the standard header and footer on each report you create and then any changes would only have to be done in one location. Also, if the standard header included a large bitmap, your reporting project would only contain a single copy rather than the many copies that a traditional report designer would require.
You have to replicate a pre-printed form. The problem is there are 6 different variations of this form with only minor differences between each.
The Old Way - Assuming a traditional report designer could even handle this type of report, you would create the first form, cut and paste it into the second, make the minor modifications, then repeat for the other 4 forms, ending up with 6 reports that would be hard to maintain and take up a lot more memory.
The Rave Way - You would first create the common items of the form on a separate page, then mirror those on each form and add the unique parts for each as needed. If anything ever needed to be changed in the common section of the form, you would only need to change it in one place and since you're sharing most of the form's content, the report definitions take up much less room.
Since we designed Rave to handle even the most complex report designs, we also built in Component Level Locking to allow you to safeguard sections of your report that are complete and tested. This definitely helps out in the maintenance phase of a report project where an accidental movement of a component may not be noticed until your customer goes to print out the report and stuff just isn't where it is supposed to be. You can lock individual components, pages, reports and even the whole project itself.
While the FontMaster Component will be described later in the Standard Components topic, it's primary purpose is to help you reuse and maintain font settings in your report. Every text component has a FontMirror property which you can assign to a FontMaster component. This will allow you to change the fonts of many text controls from a single location. Imagine having Header, Body and Footer FontMaster components on a global page and changing the appearance of all of your reports with just a few mouse clicks.
Another important aspect of maintaining any large project is documentation. The Project and every Report, Page, Data View and Data Field component has a multi-line Description Property that can be used to comment the intended usage or other information. This can be useful if you are coming back to a project that you last worked on 6 months ago or especially if another programmer or your end user will be modifying reports that you created.
Text - This component is used to display fixed text on your report for items such as column headers or report titles.
Memo - This component is used to display fixed text in a word wrapped fashion on your report. Using the MailMergeItems property and the Mail Merge Editor shown below, you can create a mail merge type of report where Rave will replace tokens in the memo text with a replacement string. Note that this replacement string can be edited with the Edit button, which will display the Data Text Editor for quite a bit of extra functionality.
Section - This component is a terrific component manager. It acts as a container for other components, in other words it help you to group components together. By properly using section components and mirroring, you can create reusable and maintainable reports in no time flat.
Bitmap - This component is used to display a bitmap (*.bmp). Through the FileLink property you can reference a file on the hard disk.
MetaFile - This component is used to display a metafile (*.wmf). Through the FileLink property you can reference a file on the hard disk.
FontMaster - This component is used to control the font characteristics of any text control through their FontMirror properties. See Reuse and Maintenance for more information.
Line - Draws a diagonal line. (This may not seem like a unique feature but did you know that most Delphi reporting tools cannot create a diagonal line visually.)
HLine - Draws a horizontal line.
VLine - Draws a vertical line.
Rectangle - Draws a rectangle.
Square - Draws a square.
Ellipse - Draws an ellipse.
Circle - Draws a circle.
Region - This component acts as a container for Band and DataBand components. To create a composite or sub-report, simply drop more than one region on a page and add the appropriate bands to each.
Band - This component is primarily used to create header and footer bands in a banded style report. A Band component can only be created within a region and it's purpose is controlled through the Band Style Editor shown below. The Band Style Editor displays a virtual layout of all of your bands for the given print locations of each band or data band. Note that you can create as many Bands as you like and a Band may print in multiple locations if the report design requires it. So for example, if you want a solid horizontal line to appear above and below a detail body, you could create a single band and set it to print on both the Body Header and Body Footer. You can also control the Print Occurrence for a Band, having it continue on a new page or column or any combination of occurrence settings. You can set a Band to group on specific fields and can create as many different types of group headers or footers as your report requires. Basically, with Rave's Band and DataBand components, you'll be able to create just about any banded style layout that you can imagine.
DataBand - The DataBand component is fairly similar to a band component except that it is tied to a particular DataView and iterates across the rows in the DataView. You can link DataBands together for Master-Detail to unlimited levels or multiple details on the same level. Some advanced features that are supported by a DataBand include KeepBodyTogether, KeepRowTogther, StartNewPage, MaxRows and Orphan/Widow control.
DataText - The DataText component is the primary means to output fields from your database. You can quickly select a specific DataView and DataField with Property Panel or use the Data Text Editor shown below to create any combination of string constants, data fields, report variables or project parameters. The & concatenation operator is the same as the + operator, except that it also inserts a space. Report Variables are items such as total pages or current date and time in a variety of formats. Project Parameters are custom variables that you create and initialize from your Delphi application. Project Parameters can be used for items such as user defined report titles, printing the current user name or other custom information.
DataMemo - This component is very similar to the Memo component except that it retrieves data from a DataField. DataMemo component's print text data out in a word wrapped fashion and the DataField can be any text type, not just memo fields. It also has RTF and mail merge support.
CalcText - This component is used to perform simple operations such as Sum, Average, Count, Min and Max on a data field. You can set the value as a running total and place it in any type of band or anywhere on the page) you need it.
DataMirrorSection - The data mirror section component is similar to Rave's section component (found in the Standard Toolbar) with one major difference, it will dynamically mirror another section depending upon the value of a DataField. You configure the data mirror section using the Data Mirror Editor (shown below). This component is very useful for printing out data that has different formats depending upon the type of data. One example is an address field that could print a US format if the country field is "US" and an international format otherwise (using the Default option in the Data Mirror Editor). You could also print Boolean field values with your own custom bitmaps.
PostNetBarCode - Prints a US PostNet bar code.
I2of5BarCode - Prints Interleaved 2 of 5 barcodes.
Code39BarCode - Prints standard and extended Code 39 barcodes.
Code128BarCode - Prints A, B and C Code 128 barcodes.
UPCBarCode - Prints UPC-12 barcodes.
EANBarCode - Prints EAN-13 barcodes.
Anchors are a powerful way to create a report that dynamically adjusts to changing sizes. This allows you to create reports that can print well whether the user selects landscape or portrait, 8.5" by 11" or A4. There are 6 different anchor values for both the horizontal and vertical dimensions to allow you to control each component in exactly the manner that it needs. The Anchor Editor (shown at right) even shows you a helpful bitmap of how each anchor setting works.