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.
Prev - Property Toolbars | Back to Feature List | Next - Standard Components |