The ReportBuilder Label Wizard contains an extensible architecture that enables additional sets of labels to be created and registered.
Creating new label sets is a very simple process.
- Open ppLabelDef.pas located in RBuilder\Source.This unit contains the TppLabelSet class which is the abstract ancestor class for all label sets. This class contains the necessary logic to translate label specs into report specs.
Descending from this class are two additional classes TppLaserJetLabels and TppDotMatrixLabels. All label sets should descend from one of these two classes.
- Open ppAvStd.pas located in RBuilder\SourceThis unit contains the TppAveryStandardLaserJetLabels class and the TppAveryStandardDotMatrixLabels class.
The label specs are declared as const arrays, with each string element of the array representing a specific type of label.
Example code from ppAvStd.pas:
const caAveryStdLaserJet: array [0..157] of String = ( { LabelType, Name, Width, Height, MarginTop, MarginBottom, MarginLeft, MarginRight, Orientation, RowSpacing, Units, Columns, ColumnPositions } 'Address,2160 - Mini,2.63,1,4.5,5,0.5,0,0.81,0,0,0,1,0', 'Address,2162 - Mini,4,1.33,4.5,5,0.5,0,0.12,0,0,0,1,0',
As you can see in the above example code, each label spec consist of a comma delimited string that describes the dimensions of the label and the label sheet.
- The LabelSet class defintion for AVeryStdLaserJet labels consist of three methods, each containing a single line of code. These are shown below:
{------------------------------------------------------------------------------} { TppAveryStdLaserJetLabels.Product } class function TppAveryStdLaserJetLabels.Product: String; begin Result := 'Avery Standard'; end; {class function, Product} {------------------------------------------------------------------------------} { TppAveryStdLaserJetLabels.Count } class function TppAveryStdLaserJetLabels.Count: Integer; begin Result := High(caAveryStdLaserJet) + 1; end; {class function, Count} {------------------------------------------------------------------------------} { TppAveryStdLaserJetLabels.GetLabelDef } class function TppAveryStdLaserJetLabels.GetLabelDef(aIndex: Integer): String; begin Result := caAveryStdLaserJet[aIndex]; end; {class function, GetLabelDef}
- The initialization/finalization sections at the bottom of the unit contain the RegisterLabelSet calls to make the label set known to the Label Wizard.
- ppAvIntl.pas located in RBuilder\Source contains the definitions for Avery International Labels.