2D Barcode FMX Components User Manual

Add to my manuals
270 Pages

advertisement

2D Barcode FMX Components User Manual | Manualzz

2D Barcode FMX Components

User Manual

Version: 3.1.2.713

Copyright © 2001-2015 Han-soft Corporation. All rights reserved.

2015-12-11

2D Barcode FMX Components User Manual

Table of Contents

Table of Contents

Chapter 1. Introduction

1.1 Overview

1.2 Main features

Chapter 2. Installation

2.1 Trial user

2.2 Registered user

Chapter 3. Quick start

3.1 How to use the barcode components

3.2 How to use the barcode components with a database

3.3 How to print a barcode symbol to paper

3.4 How to save a barcode symbol to picture file

3.5 How to copy a barcode symbol to the clipboard

3.6 How to encode the UNICODE text in a 2D barcode symbol

Chapter 4. Reference

4.1 TBarcodeFmx2D

4.1.1 TBarcodeFmx2D_AztecCode

4.1.2 TBarcodeFmx2D_AztecRunes

4.1.3 TBarcodeFmx2D_Code16K

4.1.4 TBarcodeFmx2D_CompactMatrix

4.1.5 TBarcodeFmx2D_DataMatrix

4.1.6 TBarcodeFmx2D_DataMatrixECC200

4.1.7 TBarcodeFmx2D_GridMatrix

4.1.8 TBarcodeFmx2D_HanXinCode

4.1.9 TBarcodeFmx2D_MaxiCode

4.1.10 TBarcodeFmx2D_MicroPDF417

4.1.11 TBarcodeFmx2D_MicroQRCode

4.1.12 TBarcodeFmx2D_PDF417

4.1.13 TBarcodeFmx2D_QRCode

4.1.14 TBarcodeFmx2D_RSS14

4.1.15 TBarcodeFmx2D_RSSExpanded

4.1.16 TBarcodeFmx2D_RSSLimited

4.2 TSaveFmx2D

4.2.1 TSaveFmx2D_Bmp

4.2.2 TSaveFmx2D_Emf

4.2.3 TSaveFmx2D_Eps

4.2.4 TSaveFmx2D_Gif

4.2.5 TSaveFmx2D_Jpg

86

86

87

87

87

88

31

34

39

43

46

51

59

16

21

22

27

62

70

79

82

84

12

13

13

14

14

16

16

8

10

10

1

8

8

10

12

12

1

2D Barcode FMX Components User Manual

4.2.6 TSaveFmx2D_Png

4.2.7 TSaveFmx2D_Svg

4.2.8 TSaveFmx2D_W mf

4.3 TCopyFmx2D

4.4 TUserWorkArea

Chapter 5. FAQs

5.1 How to download the full version

5.2 I forgot my license key

Chapter 6. Information

6.1 Support

6.2 Purchase

6.3 Contact us

6.4 End-User License Agreement

Annex A. Properties

A.1 TBarcodeFmx2D

A.1.1 AllowEscape

A.1.2 AllowKanjiMode (TBarcodeFmx2D_MicroQRCode)

A.1.3 AllowKanjiMode (TBarcodeFmx2D_QRCode)

A.1.4 AutoCheckDigit (TBarcodeFmx2D_RSS14, TBarcodeFmx2D_RSSLimited)

A.1.5 AutoMode (TBarcodeFmx2D_MaxiCode)

A.1.6 Barcode

A.1.7 BarcodeHeight

A.1.8 BarcodeW idth

A.1.9 BarColor

A.1.10 BottomQuietZone

A.1.11 BytesAlwaysBackToUpper (TBarcodeFmx2D_AztecCode)

A.1.12 Compact (TBarcodeFmx2D_PDF417)

A.1.13 CurrentColumns (TBarcodeFmx2D_PDF417)

A.1.14 CurrentECCLevel (TBarcodeFmx2D_CompactMatrix)

A.1.15 CurrentECCLevel (TBarcodeFmx2D_DataMatrix)

A.1.16 CurrentECCLevel (TBarcodeFmx2D_GridMatrix)

A.1.17 CurrentECCLevel (TBarcodeFmx2D_HanXinCode)

A.1.18 CurrentECCLevel (TBarcodeFmx2D_MicroQRCode)

A.1.19 CurrentECCLevel (TBarcodeFmx2D_PDF417)

A.1.20 CurrentECCLevel (TBarcodeFmx2D_QRCode)

A.1.21 CurrentEncodeMode (TBarcodeFmx2D_DataMatrix)

A.1.22 CurrentMode (TBarcodeFmx2D_Code16K)

A.1.23 CurrentMode (TBarcodeFmx2D_MaxiCode)

A.1.24 CurrentRows (TBarcodeFmx2D_Code16K)

A.1.25 CurrentRows (TBarcodeFmx2D_PDF417)

2

88

88

89

89

92

93

93

89

92

92

93

94

94

97

97

105

105

106

106

103

103

104

104

99

99

100

101

97

97

98

98

109

110

110

111

111

107

108

108

109

2D Barcode FMX Components User Manual

A.1.26 CurrentSegments (TBarcodeFmx2D_CompactMatrix)

A.1.27 CurrentSize (TBarcodeFmx2D_AztecCode)

A.1.28 CurrentSize (TBarcodeFmx2D_DataMatrix)

A.1.29 CurrentSize (TBarcodeFmx2D_DataMatrixECC200)

A.1.30 CurrentSize (TBarcodeFmx2D_MicroPDF417)

A.1.31 CurrentVersion (TBarcodeFmx2D_CompactMatrix)

A.1.32 CurrentVersion (TBarcodeFmx2D_GridMatrix)

A.1.33 CurrentVersion (TBarcodeFmx2D_HanXinCode)

A.1.34 CurrentVersion (TBarcodeFmx2D_MicroQRCode)

A.1.35 CurrentVersion (TBarcodeFmx2D_QRCode)

A.1.36 Data

A.1.37 DefaultEncodeMode (TBarcodeFmx2D_MicroPDF417)

A.1.38 DefaultTextEncodeMode (TBarcodeFmx2D_MicroPDF417)

A.1.39 ECCCount (TBarcodeFmx2D_AztecCode)

A.1.40 ECCLevel (TBarcodeFmx2D_AztecCode)

A.1.41 ECCLevel (TBarcodeFmx2D_CompactMatrix)

A.1.42 ECCLevel (TBarcodeFmx2D_DataMatrix)

A.1.43 ECCLevel (TBarcodeFmx2D_GridMatrix)

A.1.44 ECCLevel (TBarcodeFmx2D_HanXinCode)

A.1.45 ECCLevel (TBarcodeFmx2D_MicroQRCode)

A.1.46 ECCLevel (TBarcodeFmx2D_PDF417)

A.1.47 ECCLevel (TBarcodeFmx2D_QRCode)

A.1.48 ECCLevelUpgrade (TBarcodeFmx2D_CompactMatrix)

A.1.49 ECCLevelUpgrade (TBarcodeFmx2D_DataMatrix)

A.1.50 ECCLevelUpgrade (TBarcodeFmx2D_GridMatrix)

A.1.51 ECCLevelUpgrade (TBarcodeFmx2D_HanXinCode)

A.1.52 ECCLevelUpgrade (TBarcodeFmx2D_MicroQRCode)

A.1.53 ECCLevelUpgrade (TBarcodeFmx2D_PDF417)

A.1.54 ECCLevelUpgrade (TBarcodeFmx2D_QRCode)

A.1.55 EnableUpdateDB

A.1.56 EncodeMode (TBarcodeFmx2D_DataMatrix)

A.1.57 EncodePolicy (TBarcodeFmx2D_MicroQRCode)

A.1.58 EncodePolicy (TBarcodeFmx2D_QRCode)

A.1.59 FixedLength (TBarcodeFmx2D_AztecRunnes)

A.1.60 Image

A.1.61 InitialMode (TBarcodeFmx2D_Code16K)

A.1.62 Inversed (TBarcodeFmx2D_AztecCode, TBarcodeFmx2D_DataMatrix, etc.)

A.1.63 LeadingQuietZone

A.1.64 LeftMargin

A.1.65 Link2D

128

129

129

130

126

127

127

128

124

125

125

126

121

122

123

123

131

131

131

132

133

134

135

118

119

119

120

120

116

117

117

118

114

115

115

116

112

112

113

114

3

4

2D Barcode FMX Components User Manual

A.1.66 Locked

A.1.67 MaxColumns (TBarcodeFmx2D_PDF417)

A.1.68 MaxRows (TBarcodeFmx2D_Code16K)

A.1.69 MaxRows (TBarcodeFmx2D_PDF417)

A.1.70 MaxSegments (TBarcodeFmx2D_CompactMatrix)

A.1.71 MaxSize (TBarcodeFmx2D_AztecCode)

A.1.72 MaxSize (TBarcodeFmx2D_DataMatrix)

A.1.73 MaxSize (TBarcodeFmx2D_DataMatrixECC200)

A.1.74 MaxSize (TBarcodeFmx2D_MicroPDF417)

A.1.75 MaxSliceLen (TBarcodeFmx2D_MicroQRCode)

A.1.76 MaxSliceLen (TBarcodeFmx2D_QRCode)

A.1.77 MaxVersion (TBarcodeFmx2D_CompactMatrix)

A.1.78 MaxVersion (TBarcodeFmx2D_GridMatrix)

A.1.79 MaxVersion (TBarcodeFmx2D_HanXinCode)

A.1.80 MaxVersion (TBarcodeFmx2D_MicroQRCode)

A.1.81 MaxVersion (TBarcodeFmx2D_QRCode)

A.1.82 MinColumns (TBarcodeFmx2D_PDF417)

A.1.83 MinRows (TBarcodeFmx2D_Code16K)

A.1.84 MinRows (TBarcodeFmx2D_PDF417)

A.1.85 MinSegments (TBarcodeFmx2D_CompactMatrix)

A.1.86 MinSize (TBarcodeFmx2D_AztecCode)

A.1.87 MinSize (TBarcodeFmx2D_DataMatrix)

A.1.88 MinSize (TBarcodeFmx2D_DataMatrixECC200)

A.1.89 MinSize (TBarcodeFmx2D_MicroPDF417)

A.1.90 MinVersion (TBarcodeFmx2D_CompactMatrix)

A.1.91 MinVersion (TBarcodeFmx2D_GridMatrix)

A.1.92 MinVersion (TBarcodeFmx2D_HanXinCode)

A.1.93 MinVersion (TBarcodeFmx2D_MicroQRCode)

A.1.94 MinVersion (TBarcodeFmx2D_QRCode)

A.1.95 Mirrored (TBarcodeFmx2D_AztecCode, TBarcodeFmx2D_DataMatrix, etc.)

A.1.96 Mode (TBarcodeFmx2D_MaxiCode)

A.1.97 Module

A.1.98 Opacity

A.1.99 Options (TBarcodeFmx2D_MicroPDF417)

A.1.100 Options (TBarcodeFmx2D_PDF417)

A.1.101 Orientation

A.1.102 Placement (TBarcodeFmx2D_CompactMatrix)

A.1.103 ReviseVersion5 (TBarcodeFmx2D_HanXinCode)

A.1.104 RowHeight (TBarcodeFmx2D_Code16K)

A.1.105 RowHeight (TBarcodeFmx2D_MicroPDF417)

153

153

154

155

151

151

152

152

148

149

149

150

146

146

147

148

155

157

158

159

160

160

160

143

143

144

145

145

141

141

142

142

138

139

139

140

136

136

137

137

2D Barcode FMX Components User Manual

A.1.106 RowHeight (TBarcodeFmx2D_PDF417)

A.1.107 RowHeight (TBarcodeFmx2D_RSSExpanded)

A.1.108 RowSymbols (TBarcodeFmx2D_RSSExpanded)

A.1.109 SeparatorBarHeight (TBarcodeFmx2D_Code16K)

A.1.110 SeparatorRowHeight (TBarcodeFmx2D_RSS14, TBarcodeFmx2D_RSSExpanded)

A.1.111 SeparatorRowHeight (TBarcodeFmx2D_RSSLimited)

A.1.112 Shape (TBarcodeFmx2D_DataMatrixEcc200)

A.1.113 Show2DSeparator

A.1.114 ShowQuietZone

A.1.115 SpaceColor

A.1.116 StartW idth (TBarcodeFmx2D_CompactMatrix)

A.1.117 StopW idth (TBarcodeFmx2D_CompactMatrix)

A.1.118 Stretch

A.1.119 StretchOrder (TBarcodeFmx2D_CompactMatrix)

A.1.120 StretchOrder (TBarcodeFmx2D_MicroPDF417)

A.1.121 StretchOrder (TBarcodeFmx2D_PDF417)

A.1.122 Style (TBarcodeFmx2D_RSS14)

A.1.123 Style (TBarcodeFmx2D_RSSExpanded)

A.1.124 SymbolMode (TBarcodeFmx2D_AztecCode)

A.1.125 TopMargin

A.1.126 TopQuietZone

A.1.127 TotalHeight (TBarcodeFmx2D_RSS14, TBarcodeFmx2D_RSSLimited)

A.1.128 TrailingQuietZone

A.1.129 UseECIDescriptor (TBarcodeFmx2D_MicorPDF417)

A.2 TSaveFmx2D

A.2.1 Barcode2D (TSaveFmx2D)

A.2.2 ColorDepth (TSaveFmx2D_Bmp)

A.2.3 ColorDepth (TSaveFmx2D_Gif)

A.2.4 ColorDepth (TSaveFmx2D_Png)

A.2.5 CompressionLevel (TSaveFmx2D_Png)

A.2.6 DeviceHeightInMM (TSaveFmx2D_Emf)

A.2.7 DeviceHeightInPixel (TSaveFmx2D_Emf)

A.2.8 DeviceHeightInUM (TSaveFmx2D_Emf)

A.2.9 DeviceW idthInMM (TSaveFmx2D_Emf)

A.2.10 DeviceW idthInPixel (TSaveFmx2D_Emf)

A.2.11 DeviceW idthInUM (TSaveFmx2D_Emf)

A.2.12 EmbedBarcodeText (TSaveFmx2D_Emf, TSaveFmx2D_Eps, TSaveFmx2D_Gif, etc.)

A.2.13 EmbedBarcodeText (TSaveFmx2D_Png)

A.2.14 Interlaced (TSaveFmx2D_Png, TSaveFmx2D_Gif)

A.2.15 LogicUnitsPerInch (TSaveFmx2D_W mf)

179

179

183

184

184

184

185

185

186

182

182

183

183

179

180

181

181

167

168

169

172

173

165

166

166

166

163

163

164

164

161

161

162

162

174

175

175

177

177

178

5

2D Barcode FMX Components User Manual

A.2.16 Placeable (TSaveFmx2D_W mf)

A.4.17 Quality (TSaveFmx2D_Jpg)

A.2.18 Version (TSaveFmx2D_Gif)

A.2.19 XPPM (TSaveFmx2D_Bmp)

A.2.20 YPPM (TSaveFmx2D_Bmp)

A.3 TCopyFmx2D

A.3.1 Barcode2D (TCopyFmx2D)

Annex B. Methods

B.1 TBarcodeFmx2D

B.1.1 Assign

B.1.2 Clear

B.1.3 Create

B.1.4 Destroy

B.1.5 Draw

B.1.6 DrawTo

B.1.6.1 DrawTo - Syntax 1

B.1.6.2 DrawTo - Syntax 2

B.1.6.3 DrawTo - Syntax 3

B.1.7 DrawToSize

B.1.7.1 DrawToSize - Syntax 1

B.1.7.2 DrawToSize - Syntax 2

B.1.7.3 DrawToSize - Syntax 3

B.1.8 GetCheckSum (TBarcodeFmx2D_MicroPDF417)

B.1.8.1 GetCheckSum - Syntax 1 (TBarcodeFmx2D_MicroPDF417)

B.1.8.2 GetCheckSum - Syntax 2 (TBarcodeFmx2D_MicroPDF417)

B.1.9 GetCheckSum (TBarcodeFmx2D_PDF417)

B.1.9.1 GetCheckSum - Syntax 1 (TBarcodeFmx2D_PDF417)

B.1.9.2 GetCheckSum - Syntax 2 (TBarcodeFmx2D_PDF417)

B.1.10 GetParity (TBarcodeFmx2D_QRCode)

B.1.10.1 GetParity - Syntax 1 (TBarcodeFmx2D_QRCode)

B.1.10.2 GetParity - Syntax 2 (TBarcodeFmx2D_QRCode)

B.1.11 Print

B.1.11.1 Print - Syntax 1

B.1.11.2 Print - Syntax 2

B.1.11.3 Print - Syntax 3

B.1.12 PrintSize

B.1.12.1 PrintSize - Syntax 1

B.1.12.2 PrintSize - Syntax 2

B.1.12.3 PrintSize - Syntax 3

B.1.13 Size

6

221

221

222

223

224

228

233

237

237

242

247

252

213

214

215

217

218

219

195

198

202

202

206

210

189

189

189

189

189

190

190

191

191

192

186

186

187

187

188

189

B.2 TSaveFmx2D

B.2.1 Assign

B.2.2 Create

B.2.3 Destroy

B.2.4 Save

B.3 TCopyFmx2D

B.3.1 Assign

B.3.2 Copy

B.3.3 Create

B.3.4 Destroy

Annex C. Events

C.1 TBarcodeFmx2D

C.1.1 OnChange

C.1.2 OnDrawBarcode

C.1.3 OnEncode

C.1.4 OnInvalidChar

C.1.5 OnInvalidDataChar

C.1.6 OnInvalidDataLength

C.1.7 OnInvalidLength

C.1.8 ParseBarcodeIndex

C.2 TSaveFmx2D

C.2.1 OnSave

C.2.2 OnSaved

2D Barcode FMX Components User Manual

258

260

260

260

260

261

262

263

263

264

265

265

265

266

255

255

256

256

256

257

257

257

258

7

2D Barcode FMX Components User Manual

Chapter 1. Introduction

1.1 Overview

2D Barcode FMX Components is the most flexible and powerful FMX components package which lets you to easily add advanced 2D barcode generation and printing features to your application.

2D Barcode FMX Components supports most popular Matrix and Stacked 2D Barcode Symbologies/Standards, including Aztec Code,

Aztec Runes, Code 16K, Data Matrix (ECC 000-140, ECC 200), MaxiCode, PDF417, QR Code 2005, Micro QR Code, MicroPDF417.

All RSS barcode symbologies are supported, including RSS-14, RSS-14 Truncated, RSS-14 Stacked, RSS-14 Stacked

Omnidirectional, RSS Limited, RSS Expanded, and RSS Expanded Stacked.

Delphi and C++ Builder XE2, XE3, XE4, XE5, XE6, XE7, XE8, and 10 Seattle are supported.

For Delphi and C++ Builder XE2, XE3, XE4, XE5, XE6, XE7, XE8, and 10 Seattle, all of 32-bit Windows, 64-bit Windows, and Mac

OSX platform are support. For Delphi and C++ Builder XE4, XE5, XE6, XE7, XE8, and 10 Seattle, the 32-bit iOS platform is supported too. For Delphi and C++ Builder XE8 and 10 Seattle, the 64-bit iOS platform is supported too. For Delphi and C++ Builder XE5, XE6,

XE7, XE8, and 10 Seattle, the Android platform is supported too.

2D Barcode FMX Components are easy to use. Developers use them like any other FMX component.

8

1.2 Main features

Allows to draw the barcode symbol to canvas (with scaling and rotating).

Allows to print the barcode symbol to paper (with scaling and rotating).

Ability to save barcode symbol in a variety of picture formats.

Ability to encode the data block into a barcode symbol.

Most popular matrix and stacked 2 dimensional barcode symbologies are supported.

All RSS barcode symbologies are supported.

The LiveBindings database function is supported.

The RAD Studio (Delphi and C++ Builder) XE2, XE3, XE4, XE5, XE6, XE7, XE8, and 10 Seattle are supported.

All of 32-bit Windows, 64-bit Windows, Mac OSX, 32-bit iOS (Only for XE4, XE5, XE6, XE7, XE8, 10 Seattle), 64-bit iOS (Only for

XE8, 10 Seattle), and Android (Only for XE5, XE6, XE7, XE8, 10 Seattle) components are included.

Structured append, ECI, etc. features are supported.

It is visible in design time.

Ability to scale and rotate the barcode symbols.

Foreground and background colors of barcode symbol can be changed freely.

It's easy to use, and it has the excellent functionality.

It's a very popular 2D barcode components package.

2D Barcode FMX Components User Manual

9

2D Barcode FMX Components User Manual

Chapter 2. Installation

2.1 Trial user

Installation step by step:

1. Before installing the components package, please close all RAD Studio (Delphi and C++ Builder) IDEs.

Note, for each IDE, if it's a clean installation, please run it at least once before installing the components package, then closes it and continues installation.

2. Run the installation file

barcodefmx2d_tri.exe

, and then click on the "Next" button in the installation dialog box.

3. Read the

End-User License Agreement

. You must accept the terms of this agreement before continuing with the installation.

And then click on the "Next" button.

4. Specify a target folder (it will be created if does not exist), the components package will be installed into it. And then click on the

"Next" button.

5. All supported RAD Studio (Delphi and C++ Builder) IDEs will be listed automatically. Please select the IDEs you want to install to them. And then click on the "Next" button.

6. Specify a shortcuts folder in "Start Menu" for the components package. And then click on the "Next" button. Later, you can open the manual or remove the components package in the shortcuts folder.

7. Click on the "Install" button to complete the components package installation.

8. Click on the "Finish" button to close the installation dialog box.

9. You can start your IDE to use the components package now.

Note:

If multi-user accounts want to use the components package, please install it into

the same folder

in each user session.

2.2 Registered user

Installation step by step:

1. Before installing the components package, please close all RAD Studio (Delphi and C++ Builder) IDEs.

Note, for each IDE, if it's a clean installation, please run it at least once before installing the components package, then closes it and continues installation.

2. Please uninstall the trial release using the "Uninstall" shortcuts in the "Start Menu" if it is installed in your computer.

3. Please download the installation package using the download link that's sent from us after you purchase the components package. If your download link doesn't work, please visit the " Manage your licenses " page to request a new download link.

Please open the page then enter your order ID, license user name or license e-mail address to locate your order, then click on the oder ID to display it, choose a license and click on the "

Request a new download link

", the new download link will be sent to this license e-mail address automatically.

4. Run the installation file

barcodefmx2d_ful.exe

, and then click on the "Next" button in the installation dialog box.

10

2D Barcode FMX Components User Manual

5. Read the

End-User License Agreement

. You must accept the terms of this agreement before continuing with the installation.

And then click on the "Next" button.

6. Type your email address and the license key that they are sent from us after you purchase the components package, they are not case-sensitive. And then click on the "Next" button. If you forgot the license key, please visit the " Manage your licenses " page to retrieve it. Please open the page then enter your order ID, license user name or license e-mail address to locate your order, then click on the oder ID to display it, choose a license and click on the "

Retrieve the license key

", the license key will be sent to the license e-mail address automatically.

7. Specify a target folder (it will be created if does not exist), the components package will be installed into it. And then click on the

"Next" button.

8. All supported RAD Studio (Delphi and C++ Builder) IDEs will be listed automatically. Please select the IDEs you want to install to them. And then click on the "Next" button.

9. Specify a shortcuts folder in "Start Menu" for the components package. And then click on the "Next" button. Later, you can open the manual or remove the components package in the shortcuts folder.

10. Click on the "Install" button to complete the components package installation.

11. Click on the "Finish" button to close the installation dialog box.

12. You can start your IDE to use the components package now.

Note:

If multi-user accounts want to use the components package, please install it into

the same folder

in each user session.

After installation, please delete all ".dcu" files in your projects that they are built using the trial release of the components package, then re-build these projects.

11

2D Barcode FMX Components User Manual

Chapter 3. Quick start

3.1 How to use the barcode components

Usage:

1. Put a barcode component, such as the TBarcodeFmx2D_QRCode

,

TBarcodeFmx2D_PDF417

, and TBarcodeFmx2D_RSS14

to your form.

2. Put a TImage control to your form.

3. Set the

Image

property of the barcode component to the TImage control.

You can link single TImage

control to multiple TBarcodeFmx2D

components in order to display multiple barcode symbols in the

TImage control (using the

LeftMargin

and TopMargin properties to specify the position for every barcode symbol).

Note:

If the barcode symbol isn't displayed, please check whether the length of barcode text exceeds the maximum length limit, or whether there is any invalid character in the barcode text.

If you use the Barcode

property to encode the barcode text, you can create the OnInvalidLength

event handle to catch the invalid

barcode length exception. And create the OnInvalidChar

event handle to catch the invalid character in the barcode text. If you use the

Data

property to encode the barcode data, you can create the OnInvalidDataLength

event handle to catch the invalid barcode length

exception. And create the OnInvalidDataChar

event handle to catch the invalid character in the barcode data.

Also, please check whether the TImage control is large enough to accommodate entire barcode symbol.

3.2 How to use the barcode components with a database

The LiveBindings is supported by the components package. You can use the LiveBindings mechanism to link a TBarcodeFmx2D

barcode component to a data filed in order to encode the data in the database to barcode symbol.

1. Put

a TBarcodeFmx2D

barcode component, such as the

TBarcodeFmx2D_QRCode

,

TBarcodeFmx2D_PDF417

, and

TBarcodeFmx2D_RSS14

to your form. You can set its Image

property to a TImage control in order to display the barcode symbol.

2. Open the "LiveBindings Designer", click on the barcode component in the form to select it, change the "Visible Element" sub-item of the "LiveBindings Designer" item to true in the "Object Inspector", in order to display it in the "LiveBindings Designer".

3. Right-click on the barcode component in the "LiveBindings Designer", execute the "Bindable Members..." menu item, check the

"Barcode" property or the "Data" property in the "Bindable Members" dialog, click on the "OK" button to close it.

4. If you want to encode values in a string field to barcode symbol, please link the Barcode

property of the TBarcodeFmx2D

barcode component to your data field in the TBindSourceDB component. If you want to encode values in a binary field to barcode symbol,

please link the Data property of the

TBarcodeFmx2D

barcode component to your data field in the TBindSourceDB component.

5. If you want to save the barcode symbol to a picture, put a TSaveFmx2D

component, such as the

TSaveFmx2D_Bmp

,

TSaveFmx2D_Png

, and

TSaveFmx2D_Svg

to your form. Set the

Barcode2D

property of the TSaveFmx2D

component to your

12

2D Barcode FMX Components User Manual

barcode component. Then you can use the Save

method of the

TSaveFmx2D

component to save the barcode symbol to a picture file.

6. Also, you can use the Print

method of the

TBarcodeFmx2D

component to print the barcode symbol to paper, or use the

DrawTo

method of the TBarcodeFmx2D

component to draw the barcode symbol to any TCanvas .

Note, You can link multiple TBarcodeFmx2D

components to a data field in order to represent the data field with multiple barcode symbols.

3.3 How to print a barcode symbol to paper

Please use Print

method of a barcode component to print the barcode symbol to paper. The TImage control isn't required.

For example:

Printer.ActivePrinter.SelectDPI(600, 600);

Printer.BeginDoc;

... { Print other content }

BarcodeFmx2D_QRCode1.Print('1234567890', claBlack, claWhite, true, 20, 20, 0.3);

... { Print other content }

Printer.EndDoc; or

Printer.ActivePrinter.SelectDPI(600, 600);

Printer.BeginDoc;

... { Print other content }

with

BarcodeFmx2D_QRCode1

do begin

ShowQuietZone := true;

BarColor := claBlack;

SpaceColor := claWhite;

Barcode := '1234567890';

Print(20, 20, 0.3);

end;

... { Print other content }

Printer.EndDoc;

3.4 How to save a barcode symbol to picture file

Usage:

1. Put

a TBarcodeFmx2D

barcode component, such as the

TBarcodeFmx2D_QRCode

,

TBarcodeFmx2D_PDF417

, and

TBarcodeFmx2D_RSS14

to your form.

2. Put a

TSaveFmx2D

component, such as the

TSaveFmx2D_Bmp

, TSaveFmx2D_Png

, and

TSaveFmx2D_Svg

to your form.

3. Set the

Barcode2D

property of the TSaveFmx2D

component to the TBarcodeFmx2D

barcode component.

4. Use the Save

method of the TSaveFmx2D

component to save the barcode symbol to picture file.

Note:

13

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_MaxiCode

component, please use the SaveToFile method of the TImage control that is linked to the barcode component to save the barcode symbol as a picture file.

For example:

Image1.Bitmap.SaveToFile('D:\2DBarcode.bmp');

Also, You can bind multiple TSaveFmx2D

components to a TBarcodeFmx2D

barcode component in order to save the barcode symbol in multipe formats.

3.5 How to copy a barcode symbol to the clipboard

Usage:

1. Put

a TBarcodeFmx2D

barcode component, such as the

TBarcodeFmx2D_QRCode

,

TBarcodeFmx2D_PDF417

, and

TBarcodeFmx2D_RSS14

to your form.

2. Put a

TCopyFmx2D

component to your form.

3. Set the

Barcode2D

property of the TCopyFmx2D

component to the

TBarcodeFmx2D

barcode component.

4. Use the Copy

method of the

TCopyFmx2D

component to copy the barcode symbol to the clipboard.

3.6 How to encode the UNICODE text in a 2D barcode symbol

By default, the text will be encoded in UTF-8 ecnoding sheme (the BOM is not placed), you can use other encoding scheme, such as the ANSI, UTF-16LE, UTF-16BE, etc.

Method 1, please convert the text to your encoding scheme, then assign it to the Data

property of the

TBarcodeFmx2D

barcode component, such as the

TBarcodeFmx2D_QRCode

, TBarcodeFmx2D_DataMatrixECC200

, and the

TBarcodeFmx2D_PDF417

. The

BOM may be placed depending on your application.

For example:

// The text is encoded in UTF-8 format, and the BOM is placed.

var

BarcodeText: string;

BarcodeData: TBytes;

Len: Integer;

begin

....

BarcodeText := '....';

Len := Length(BarcodeText);

SetLength(BarcodeData, Len * 3 + 3);

BarcodeData[0] := $EF;

BarcodeData[1] := $BB;

BarcodeData[2] := $BF;

Len := UnicodeToUtf8(@BarcodeData[3], Len * 3 + 1, PWideChar(BarcodeText), Len);

if

Len > 0

then

SetLength(BarcodeData, Len + 2)

else

14

2D Barcode FMX Components User Manual

SetLength(BarcodeData, 3);

BarcodeFmx2D_QRCode1.Data := BarcodeData;

Method 2, Please create the OnEncode

event function for the TBarcodeFmx2D

barcode component, such as the

TBarcodeFmx2D_QRCode ,

TBarcodeFmx2D_DataMatrixECC200

, and the

TBarcodeFmx2D_PDF417

. In the event function, you can encode the UNICODE text in your encoding scheme. The BOM may be placed depending on your application.

For example:

var

BarcodeText: string;

....

BarcodeText := '....';

BarcodeFmx2D_QRCode1.Barcode := BarcodeText;

....

procedure

TForm1.BarcodeFmx2D_QRCode1Encode(Sender: TObject;

var

Data: TBytes; Barcode: string);

var

Len: Integer;

begin

// The text is encoded in UTF-8 format, and the BOM is placed.

Len := Length(Barcode);

SetLength(Data, Len * 3 + 3);

Data[0] := $EF;

Data[1] := $BB;

Data[2] := $BF;

Len := UnicodeToUtf8(@Data[3], Len * 3 + 1, PWideChar(Barcode), Len);

if

Len > 0

then

SetLength(Data, Len + 2)

else end;

SetLength(Data, 3);

15

2D Barcode FMX Components User Manual

Chapter 4. Reference

4.1 TBarcodeFmx2D

It is the base class of all barcode components. And it cannot be instantiated. It's defined in the pfmxBarcode2d unit.

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.1 TBarcodeFmx2D_AztecCode

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Aztec Code 2D Barcodes symbols. It's defined in the pfmxAztecCode unit.

Aztec Code is a two-dimensional matrix symbology whose symbols are nominally square, made up of square modules on a square grid, with a square bullseye pattern at their center. Aztec Code symbols can encode from small to large amounts of data with user-selected percentages of error correction. All 256 8-bit values can be encoded.

Aztec Code is invented by Andrew Longacre, Jr. and Robert Hussey in 1995. The code was published by AIM, Inc. in 1997. It is used for small item marking applications using a wide variety of printing and marking technologies.

16

2D Barcode FMX Components User Manual

Formats

There are two basic formats of Aztec Code symbols:

Compact

: There is a 2-ring bullseye pattern in the symbol center. It's useful for encoding shorter messages efficiently.

Full range

: There is a 3-ring bullseye pattern in the symbol center. It supports much larger symbols for longer data messages.

You can use the

SymbolMode

property to specify which formats and Aztec Code symbol sizes (see also the "Symbol sizes" section

below) will be automatically selected between the minimum and maximum symbol sizes specified by corresponding MinSize

and

MaxSize

properties, based on the length of barcode text. It can be one of these values (defined in the pfmxAztecCode unit):

smNormal

: Only the symbol sizes that they are useful for data encoding operation, including all compact symbol sizes

( azSize_15Compact , azSize_19Compact , azSize_23Compact , and azSize_27Compact ), and full range symbol sizes from azSize_31 to azSize_151 .

smCompact

: Only the symbol sizes in compact format, including the azSize_15Compact , azSize_19Compact , azSize_23Compact , and azSize_27Compact .

smFullRange

: Only the symbol sizes in full range format, including the azSize_19 , azSize_23 , azSize_27 , and azSize_31 to azSize_151 .

smProgram

: Only the symbol sizes that they are useful for reader initialization, including azSize_15Compact , azSize_19 , azSize_23 , azSize_27 , and full range symbol sizes from azSize_31 to azSize_109 . Note, in order to create a reader initialization symbol, a " \p

" escape sequence should be placed into the barcode text, and the AllowEscape

property should be set to true. See also the "Escape sequences" section below.

smAll

: All symbol sizes, including compact and full range formats.

Symbol sizes

The smallest Aztec Code symbol is 15 * 15 modules square, and the largest is 151 * 151. There are 36 square symbol sizes available in Aztec Code symbology. These are specified in following table (defined in the pfmxAztecCode unit):

17

2D Barcode FMX Components User Manual

Sizes

azSize_15Compact azSize_19 azSize_19Compact azSize_23 azSize_23Compact azSize_27 azSize_27Compact azSize_31 azSize_37 azSize_41 azSize_45 azSize_49 azSize_53 azSize_57 azSize_61 azSize_67 azSize_71 azSize_75 azSize_79 azSize_83 azSize_87 azSize_91 azSize_95 azSize_101 azSize_105 azSize_109 azSize_113 azSize_117 azSize_121 azSize_125 azSize_131 azSize_135 azSize_139 azSize_143 azSize_147 azSize_151

Formats

Compact

Full range

Compact

Full range

Compact

Full range

Compact

Full range

Layers

23

24

25

26

19

20

21

22

15

16

17

18

11

12

13

14

27

28

29

30

31

32

7

8

9

10

4

5

6

2

2

3

1

1

3

4

Dimension (modules)

61 * 61

67 * 67

71 * 71

75 * 75

79 * 79

83 * 83

87 * 87

91 * 91

95 * 95

101 * 101

105 * 105

109 * 109

113 * 113

117 * 117

121 * 121

125 * 125

15 * 15

19 * 19

19 * 19

23 * 23

23 * 23

27 * 27

27 * 27

31 * 31

37 * 37

41 * 41

45 * 45

49 * 49

53 * 53

57 * 57

131 * 131

135 * 135

139 * 139

143 * 143

147 * 147

151 * 151

Maximum data capacities

Digits

13

Text

12

Bytes

6

1008

1123

1246

1378

1511

1653

1801

1956

294

362

433

516

601

691

793

896

2116

2281

2452

2632

2818

3007

3205

3409

3616

3832

84

110

128

178

232

18

40

49

70

808

900

998

1104

1210

1324

1442

1566

236

291

348

414

482

554

636

718

1694

1826

1963

2107

2256

2407

2565

2728

2894

3067

68

89

104

144

187

15

33

40

57

502

559

621

687

753

824

898

976

145

179

214

256

298

343

394

446

1056

1138

1224

1314

1407

1501

1600

1702

1806

1914

40

53

62

87

114

8

19

24

33

Note:

Full range symbols with 1, 2, or 3 layers ( azSize_19 , azSize_23 , and azSize_27 ) are useful only for reader initialization.

The data capacities shown are based on the recommended error correction levels (23 % of symbol capacity plus 3 codewords).

You can use the

MinSize and the

MaxSize

properties to specify the minimum and maximum sizes for an Aztec Code symbol. The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum and maximum symbol sizes.

If the barcode text does not fill the maximum data capacity of the Aztec Code symbol, remaining data capacity of the symbol will be used as excess error correction. If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by the

MaxSize

property, an

OnInvalidLength

or OnInvalidDataLength

event will occur. The

CurrentSize

property can be used to get the factual symbol size.

Quiet zones

No quiet zone is required outside the bounds of the Aztec Code symbol. So the minimum values of LeadingQuietZone ,

TrailingQuietZone

, TopQuietZone

, and BottomQuietZone

properties are equal to 0.

Error checking and correcting (ECC)

18

2D Barcode FMX Components User Manual

The design of Aztec Code technically allows a symbol to include as little as none or as much as 99% in error correction codewords, though both limits are unsound. The recommended level of error correction for normal use is 23% of symbol capacity plus 3 codewords more. They may also choose to override the default error correction level, specifying either an alternate minimum error correction percentage or a fixed symbol format and ECC size.

Users, judging their applications to be especially benign or critical, may choose to specify an alternate minimum error correction

percentage (specified by the ECCLevel

property), ranging from 0% to 99% plus always, for data security, 3 or more additional error

correction codewords (specified by the ECCCount

property). This is called a "minimum" percentage because, depending on message length, the symbology will typically have to add extra error correction codewords above this minimum to fill out the symbol.

Some applications will be best served by specifying a fixed size (number of codewords) to be used for all Aztec Code symbols regardless of their data content. In this case, the

ECCLevel property should be set to 0, and the ECCCount

property should be set to a size which includes adequate error correction for the longest message anticipated; then, typically shorter messages will be encoded with excess error correction, creating more robust symbols for this application.

Character set

1. All 8-bit values can be encoded. The default interpretation shall be:

For values 0 to 127, in accordance with the U.S. national version of ISO/IEC 646 (ASCII); Note this version consists of the GO set of ISO/IEC 646 and the CO set of ISO/IEC 6429 with values 28 to 31 modified to FS, GS, RS and US respectively).

For values 128 - 255, in accordance with ISO/IEC 8859-1 (Extended ASCII).

This interpretation corresponds to ECI 000003.

2. Two non-data characters can be encoded, FNC1 for compatibility with some existing applications and ECI indicator blocks for the standardized encoding of message interpretation information.

FNC1

: The FNC1 character following an application standard agreed with AIM International, identifies a symbol which conforms to a specific industry standard. FNC1 shall be used as defined in the EAN.UCC General Specifications either in the first position or implied by the mode character. The FNC1 character may also be used as a field separator, in which case it will be represented in the transmitted message as GS character (ASCII value 29). The escape sequence " \f " can be used to place the FNC1 character to barcode text.

ECI

: The escape sequence " \e[m] " can be used to place the ECI indicator block to barcode text. See also the "Extended

Channel Interpretation (ECI)" section below.

The AllowEscape

property should be set to true in order to place the FNC1 characters or the ECI indicator blocks.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\f

: Insert a FNC1 character to barcode text. See also the "Character set" section above.

\e[<ECI_Number>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

\s[<Index>,<Amount>,<Message_ID>]

: Insert a structured append block to barcode text in order to create the symbol in a structured append. See also the "Structured append" section below.

\p

: Indicates to create a reader initialization symbol. It can be placed anywhere in the barcode text. Only the azSize_15Compact , azSize_19 , azSize_23 , azSize_27 , and full range symbol sizes from azSize_31 to azSize_109 are useful for reader initialization

symbol, so the SymbolMode

property should be set to " smProgram " in order to create the reader initialization symbol.

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Four broad types of interpretations are supported in Aztec Code:

International character sets (or code pages).

General purpose interpretations such as encryption and compaction.

19

2D Barcode FMX Components User Manual

User defined interpretations for closed systems.

Control information for structured append in unbuffered mode.

The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding.

The ECI is identified by an integer (up to 6 digits) which is encoded in the Aztec Code symbol by the ECI indicator block. The escape sequence " \e[<ECI_Number>] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 999999 (including the boundaries), the leading zero is optional.

ECI indicator blocks may be placed anywhere in the barcode text in a single or structured append set of Aztec Code symbols. For example:

ABC

\e[123]

DEFabc

\e[000003]

def

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Structured append

In order to fit a non-square area or to handle larger messages than are practical in a single symbol, a data message can be distributed across several Aztec Code symbols. Up to 26 Aztec Code symbols may be appended in a structured format to convey more data. If a symbol is part of a structured append this shall be indicated by a structured append block in barcode text. The escape sequence

" \s[<Index>, <Amount>, <Message_ID>] " is used to place the structured append block to the barcode text:

Index

: The position index of the symbol within the set of Aztec Code symbols in the structured append format. It's an integer between 1 and 26 (including the boundaries) in string format.

Amount

: The total amount of the symbol within the set of Aztec Code symbols in the structured append format. It's an integer between 2 and 26 (including the boundaries) in string format.

Message_ID

: An optional message ID. The field is any number of data characters excluding the space character, and shall be the same for all symbols which comprise the same message. Though the field may be made up of any characters (except additional spaces), the most efficient encoding will result if it is a string of uppercase letters.

The

AllowEscape

property should be set to true in order to place the structured append block. The structured append block may only

be placed only once in the barcode text. Also, it shall be placed at beginning of the barcode text. The OnInvalidChar

or

OnInvalidDataChar

event will occur if the structured append block be placed more than once, or it isn't placed at beginning of the barcode text. The following is an example of structured append:

\s[2, 5, DESCRIPTION]

ABCDEFGabcdefg1234567890

20

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Inversed

Mirrored

SymbolMode

BytesAlwaysBackToUpper

MinSize

MaxSize

ECCLevel

ECCCount

AllowEscape

CurrentSize

(Read only)

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.2 TBarcodeFmx2D_AztecRunes

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Aztec Runes 2D Barcode symbols. It's defined in the pfmxAztecRunes unit.

Aztec Runes are a series of small but distinct machine-readable marks designed to be graphically compatible with Aztec

Code . They are in fact just the core symbol of a compact Aztec Code symbol with a numerically distinct mode message

which in this case conveys 8 bits of actual data. Thus they comprise 256 11x11 module square marks which are conveniently found and read by an

Aztec Code

reader.

Symbol size

Each Aztec Runes symbol is of a fixed size, it is 11 * 11 modules square.

21

2D Barcode FMX Components User Manual

Quiet zones

No quiet zone is required outside the bounds of the Aztec Runes symbol. So the minimum values of LeadingQuietZone ,

TrailingQuietZone

, TopQuietZone

, and BottomQuietZone

properties are equal to 0.

Character set

All 8-bit values can be encoded, every Aztec Runes symbol can encode one 8-bit value, it's expressed in a decimal integer between 0 and 255 (including the boundaries), in string format, so only numeric characters can be used in the barcode text.

Data capacity

An integer between 0 and 255 (including the boundaries), in string format. The maximum length of barcode text is limited to 3 digits.

The

FixedLength

property specifies whether adding leading zeros are required if the length is less than 3 digits.

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Inversed

Mirrored

FixedLength

4.1.3 TBarcodeFmx2D_Code16K

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Code 16K 2D Barcode symbols. It's defined in the pfmxCode16K unit.

Code 16K was developed by Ted Williams in 1989 to provide a simple to print and decode multiple row symbology. It's a continuous, variable-length, stacked 2D barcode symbology that can encode the complete ASCII 128-character set.

Extended ASCII characters (ASCII value 128 to 255) may also be encoded by using function character.

22

2D Barcode FMX Components User Manual

Each Code 16K symbol contains from 2 to 16 rows. Each row is divided by a separator bar. The top and bottom of the symbol also have separator bars that extend to the ends of the minimum quiet zones.

Symbol size

Each Code 16K symbol contains from 2 to 16 stacked rows, with 5 ASCII characters per stacked row. The RowHeight

property can be used to specify the height for each stacked row, in modules. The data capacities are listed in following table:

Maximum data capacities

Rows

9

10

11

12

13

14

15

16

5

6

7

8

2

3

4

Numeric characters

14

84

94

104

114

124

24

34

44

54

64

74

134

144

154

ASCII characters

7

42

47

52

57

62

12

17

22

27

32

37

67

72

77

You can use the

MinRows

and the

MaxRows

properties to specify the minimum and maximum number of stacked rows for a Code 16K symbol. They can be one of values from 2 to 16 (defined in the pfmxCode16K unit). The smallest number of symbol stacked rows that accommodates the barcode text will be automatically selected between minimum and maximum number of stacked rows.

If the barcode text does not fill the maximum data capacity of the Code 16K symbol, remaining data capacity of the symbol will be filled by adding the PAD characters automatically. If the barcode text is so long that it cannot be encoded using the maximum number of stacked rows specified by the

MaxRows

property, an

OnInvalidLength

or OnInvalidDataLength

event will occur. You can use the

CurrentRows

property to get the factual number of stacked rows.

The Code 16K symbol width is 81 modules (inclusive of minimum leading quiet zone

and trailing quiet zone

). The minimum row height

value is 8 times the

module width

. So the smallest Code 16K symbol is 81 * 19 modules square and the largest is 81 * 145 modules square (inclusive of minimum quiet zones, the

row height

is set to 8 modules, and the separator bar height

is set to 1 module).

The minimum value of the module width

is 7.5 mils (0.19 mm). So the minimum physical size is 15.4mm * 3.6mm. The maximum data density is 208 alphanumeric characters per square inch or 417 numeric digits per square inch when the symbol is printed at 7.5 mils.

Quiet zones

The

leading quiet zone

shall be a minimum of 10 modules, the trailing quiet zone

shall be a minimum of 1 modules. No top quiet zone

and

bottom quiet zone

are required outside the bounds of the symbol.

So the minimum value of LeadingQuietZone

property is equal to 10, the minimum value of TrailingQuietZone

property is equal to 1,

and the minimum value of TopQuietZone , and

BottomQuietZone properties are equal to 0.

Character set

All 128 ASCII characters, i.e. ASCII characters 0 to 127 inclusive, in accordance with ISO/IEC 646:1991.

Code 16K has three unique data character sets as code sets A, B and C, all 128 ASCII characters are encoded by internally switching between all 3 code sets:

Code set A

: Includes characters with ASCII values from 00 to 95 (i.e. all of the standard upper case alphanumeric characters together with the control characters inclusive), and function characters.

Code set B

: Includes characters with ASCII values from 32 to 127 (i.e. all of the standard upper case alphanumeric characters together with the lower case alphabetic characters inclusive), and function characters.

Code set C

: includes the set of 100 digit pairs from 00 to 99 inclusive, as well as seven special characters. This allows numeric

23

2D Barcode FMX Components User Manual

data to be encoded, two data digits per symbol character, at effectively twice the density of standard data.

The code set will be switched automatically in a Code 16K symbol in order to minimize the symbol size. Also, you can manually switch the code set by using following escape sequences:

\a

: Switch to code set A.

\b

: Switch to code set B.

\c

: Switch to code set C.

The AllowEscape

property should be set to true in order to place these escape sequences. If the symbol mode specified by the

InitialMode

property is set to emCodeC_Shift1B

, they cannot be used as the first character in the symbol. If the InitialMode

property is set to emCodeC_Shift2B , they cannot be used as the first two characters in the symbol. In addition they can be placed anywhere within the symbol.

Characters with ASCII values 128 to 255 in accordance with ISO 8859-1:1998 may also be encoded. This is done by internally using the FNC4 character together with code sets A, B and C.

4 function characters, and PAD character:

FNC1

: The FNC1 character following an application standard agreed with AIM International, identifies a symbol which conforms to a specific industry standard. FNC1 shall be used as defined in the EAN.UCC General Specifications either in the first position or implied by the mode character. The FNC1 character may also be used as a field separator, in which case it will be represented in the transmitted message as GS character (ASCII value 29). The escape sequence " \1 " can be used to place the FNC1 character to barcode text.

FNC2

: It's used internally to create a message append defined below. The escape sequence " \2 " can be used to place the

FNC2 character to barcode text. In general, you shouldn't place the FNC2 to the barcode text, it's used internally by the component when the symbol is in a message append. See also the "Message append" section below.

FNC3

: Initialize. This instructs the reader to interpret the data contained in the symbol for reader initialization or programming.

The FNC3 may be placed anywhere within the symbol. The escape sequence " \3 " can be used to place the FNC3 character to barcode text.

FNC4

: It's used internally together with code sets A, B and C to encode the extended ASCII characters (ASCII values from 128 to 255). The FNC4 character cannot be placed to barcode text directly, it's used internally by the component.

PAD

: If the barcode text does not fill the maximum data capacity of a Code 16K symbol, PAD characters will be added automatically to fill the remaining data capacity of the symbol. Also, you can place a PAD character anywhere in the barcode symbol by using the escape sequence " \p ", in order to create the special Code 16K symbol for closed system.

The AllowEscape

property should be set to true in order to place the functions characters, or the PAD character.

Initial modes

Code 16K has initial modes which are used to specify the initial code set and may also represent an implied leading FNC1 character or implied leading SHIFT B character as shown in following table. The code set will be automatically switched if a character is encountered that cannot be encoded by current code set. And implied characters function as if they were actual symbol characters but don not occupy any space.

There are seven kinds of initial mode, from 0 to 6, and a kind of extended data length mode. The initial mode values from emCodeA to emExtended , corresponding to these modes, are defined in the pfmxCode16K unit. These modes and their values are listed in following table:

24

2D Barcode FMX Components User Manual

Initial

Mode

Value

Initial code set

Implied character

Description

0

1

2

3

4

5

6

Extended data length mode emCodeA emCodeB emCodeC

A (None) The code set will be automatically switched if another code set character is

B (None) encountered.

C (None) emCodeB_FNC1 B emCodeC_FNC1 C

FNC1

FNC1 emCodeC_Shift1B emCodeC_Shift2B emMode_Extended

C

C

B

SHIFT B

Double

SHIFT B

None

First character excepting the message append block (if exists), must be code set B

character (ASCII 32 - ASCII 127), otherwise an OnInvalidChar

or OnInvalidDataChar

event will occur. The code set will be automatically switched if another code set character is encountered.

First two characters excepting the message append block (if exists), must be code

set B characters (ASCII 32 - ASCII 127), otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur. The code set will be automatically switched if another code set character is encountered.

Indicates to create a Code 16K barcode symbol in extended data length mode. An extended data length mode block is required, and it should be placed at beginning of barcode text, otherwiset the

OnInvalidChar or

OnInvalidDataChar

event will occur. See also the "Extended data length mode" section below.

The

InitialMode

property can be used to specify the initial mode for a Code 16K symbol. It can be one of values shown in table above, corresponding to the initial modes 0 to 6, and the extended data length mode. Also, it can be set to emAuto (defined in the pfmxCode16K unit), in this case, one of values from emCodeA to emModeC_Shift2B , corresponding to the initial modes 0 to 6 shown in table above will be selected automatically, depending on the barcode text, in order to minimize the symbol size.

You can always use the CurrentMode

property to get the factual initial mode.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\1

: Insert a FNC1 character to barcode text. See also the "Character set" section above.

\2

: Insert a FNC2 character to barcode text. See also the "Character set" section above.

\3

: Insert a FNC3 character to barcode text. See also the "Character set" section above.

\a

: Manually switch code set to code set A. See also the "Character set" section above.

\b

: Manually switch code set to code set B. See also the "Character set" section above.

\c

: Manually switch code set to code set C. See also the "Character set" section above.

\p

: Insert a PAD character to barcode text. See also the "Character set" section above.

\m[<Index>, <Amount>]

: Insert a extended data length mode block to barcode text in order to create the symbol in extended data length mode. See also the "Extended data length mode" section below.

\s[<Index>, <Amount>]

: Insert a message append block to barcode text in order to create the symbol in a message append. See also the "Message append" section below.

Extended data length mode

The extended data length mode is used to encode data beyond the capacity of a single Code 16K symbol. In the extended data length mode, up to 107 Code 16K 16-rows symbols may be arranged to convey more data (up to 8025 ASCII characters, or 16050 numeric digits). If a symbol is part of these extended data length mode symbols, this shall be indicated by extended data length mode block in barcode text. The escape sequence " \m[<Index>, <Amount>] " is used to place the extended data length mode block to the barcode text:

Index

: The position index of the symbol within the set of Code 16K symbols in the extended data length mode. It's an integer between 1 and 107 (including the boundaries) in string format.

Amount

: The total amount of the symbol within the set of Code 16K symbols in the extended data length mode. It's an integer between 2 and 107 (including the boundaries) in string format.

25

2D Barcode FMX Components User Manual

The AllowEscape

property should be set to true in order to place the extended data length mode block. The extended data length

mode block may be placed only once in the barcode text. Also, it shall be placed at beginning of the barcode text. The OnInvalidChar

or

OnInvalidDataChar

event will occur if the extended data length mode block be placed more than once, or it isn't placed at beginning of the barcode text. The following is an example of extended data length mode symbol:

\m[2,12]

ABCDEFG1234567

Th e InitialMode

property should be set to emAuto or emMode_Extended if an extended data length mode block is placed in the

barcode text, otherwise the OnInvalidChar

or

OnInvalidDataChar

event will occur. Conversely, the extended data length mode block is required if the

InitialMode property is set to

emMode_Extended

, otherwise the OnInvalidChar

or OnInvalidDataChar

event will occur too.

The extended data length mode block shouldn't be placed together with message append block in the barcode text, otherwise the

OnInvalidChar

or OnInvalidDataChar

event will occur. See also the "Message append (structured append)" section below.

If a symbol is encoded in extended data length mode, the number of stacked rows will be changed to 16 automatically.

Note, if only two symbols are to be logically linked in extended data length mode, they may be arranged horizontally or vertically adjacent to each other. If more symbols are to be logically linked, they shall be arranged in a single vertical stack. The maximum number of symbols should be specified for the application.

Message append (structured append)

The message append is a method similar to the extended data length mode to encode data beyond the capacity of a single Code 16K symbol. Up to 9 Code 16K symbols may be appended in a structured format to convey more data. It should only be used in closed systems. If a symbol is part of a message append this shall be indicated by a message append block in barcode text. The escape sequence " \s[<Index>, <Amount>] " is used to place the message append block to the barcode text:

Index

: The position index of the symbol within the set of Code 16K symbols in the message append format. It's an integer between 1 and 9 (including the boundaries) in string format.

Amount

: The total amount of the symbol within the set of Code 16K symbols in the message append format. It's an integer between 2 and 9 (including the boundaries) in string format.

The AllowEscape

property should be set to true in order to place the message append block. The message append block may be

placed only once in the barcode text. Also, it shall be placed at beginning of the barcode text. The OnInvalidChar

or

OnInvalidDataChar

event will occur if the message append block be placed more than once or it isn't placed at beginning of the barcode text. The following is an example of message append symbol:

\s[2,5]

ABCDEFGHIJKLMN012345

The message block shouldn't be placed together with extended data length mode block in the barcode text, otherwise the

OnInvalidChar

or OnInvalidDataChar

event will occur. See also the "Extended data length mode" section above.

The message append block shouldn't be placed in the barcode text if the InitialMode

property is set to emMode_Extended , otherwise

the OnInvalidChar

or

OnInvalidDataChar

event will occur.

The symbols in a message append should not be arranged horizontally, but only in a single vertical stack.

26

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

MinRows

MaxRows

RowHeight

SeparatorBarHeight

InitialMode

AllowEscape

CurrentRows

(Read only)

CurrentMode

(Read only)

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.4 TBarcodeFmx2D_CompactMatrix

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Compact Matrix 2D barcode symbols. It's defined in the pfmxCompactMatrix unit.

Compact Matrix is a variable-sized two-dimensional matrix symbology. The code graph adopts sprocket hole positioning and graphic sectioning techniques to perform fast and accurate identification and handling of 2D barcode graph by analyzing the information of sprocket position and graphic section.

Compact Matrix can encode 7-bit ASCII, numeric, and binary data, in addition to any combination of data types in the same symbol, particularly effective with Chinese characters.

Compact Matrix was invented by Syscan Technology Co., Ltd.

Symbol sizes

There are 32 vertical sizes of Compact Matrix symbol, referred to as version 1 to 32, in increasing order of symbol height and data

27

2D Barcode FMX Components User Manual

capacity. In horizontal orientation, each Compact Matrix symbol consists of an array of segments with a minimum of 1 segment

(maximum 32 segments).

You can use the

MinVersion

and the MaxVersion properties to specifiy the minimum and maximum version for a Compact Matrix

symbol. And use the

MinSegments

and the MaxSegments

properties to specifiy the minimum and maximum number of segments for

it. In other words, the MinVersion

and MinSegments

properties specify a minimum symbol size, and the

MaxVersion

and MaxSegments

properties specify a maximum symbol size. According to the priority order specified by the

StretchOrder property, the first symbol size

that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

You can use the CurrentVersion

property to get the factual version. And use the CurrentSegments

property to get the factual number of segments.

If the barcode text does not fill the maximum data capacity of the Compact Matrix symbol, remaining data capacity of the symbol will

be filled by using pad bits (the ECCLevelUpgrade

property is set to false), or will be used to upgrade the error correction code level

(the ECCLevelUpgrade property is set to true). If the barcode text is so long that it cannot be encoded using the maximum symbol size

specified by the MaxVersion

and the

MaxSegments

properties, an OnInvalidLength

or

OnInvalidDataLength

event will occur.

Error correction code (ECC)

There are eight user-selectable levels of error correction, from 1 to 8 respectively in increasing order of recovery capacity.

You can use the ECCLevel

property to specify the error correction code level for a Compact Matrix symbol. It can be one of values from

1 to 8, corresponding to the ECC levels from 1 to 8.

These ECC levels are listed in following table:

Error correction code level

1

7

8

5

6

2

3

4

Percentage of total capacity for ECC data

8%

16%

24%

32%

40%

48%

56%

64%

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol

size will be used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error

correction code level specified by the ECCLevel

property (see also the "Symbol sizes" section above). In other words, only the

remaining capacity in current symbol size will be used to upgrade the error correction code level. The property CurrentECCLevel

can be used to get the factual error correction code level.

Quiet zones

The minimum quiet zone is equal to 6 modules on all four sides. So the minimum values of LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties are equal to 6.

Character set

All 7-bit ASCII values can be encoded.

8-bit binary data can be encoded.

GB 18030 Chinese characters can be encoded.

Five non-data characters can be encoded:

AIM FNC1

: It identifies symbols formatted in accordance with specific industry or application specifications previously agreed with AIM International. It is immediately followed by an application indicator assigned to identify the specification concerned by

AIM International. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode.

The escape sequence " \0 " can be used to placed the FNC1 character to barcode text.

GS1 FNC1

: It identifies symbols encoding data formatted according to the GS1 Application Identifiers standard. For this

28

2D Barcode FMX Components User Manual

purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode text. The escape sequence

" \1 " can be used to placed the GS1 FNC1 character to barcode text.

FNC2

: The FNC2 is used to implement structured append function in order to handle larger messages than are practical in a single symbol. The escape sequence " \2[<File_Id>, <Amount>, <Index>] " is used to place the FNC2 character and other structured append information (collectively referred to as structured append block) to barcode text. See also the "Escape sequences" and "Structured append" sections below.

FNC3

: The FNC3 is used to indicates that the symbol encodes a message used to program the reader system. The escape sequence " \3 " can be used to placed the FNC3 character to barcode text. See also the "Escape sequences" section below.

ECI

: ECI indicator blocks is for the standardized encoding of message interpretation information. The escape sequence

" \e[<ECI_Number>] " can be used to place the ECI indicator block to barcode text. See also the "Extended Channel

Interpretation (ECI)" section below.

The AllowEscape

property should be set to true in order to place these non-data characters.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\0

: Insert an AIM FNC1 character to barcode text in order to encode AIM structural data similar to GS1. It shall be placed at beginning of the barcode text and it shall not be used with GS1 FNC1 (" \1 ") or FNC3 (" \3 "). If it is used together with the structured append block (FNC2, " \2 "), it shall be placed on front of the structured append block (" \2 "). See also the "Structured append" section below.

\1

: Insert a GS1 FNC1 character to barcode text in order to encode GS1 structural data. It shall be placed at beginning of the barcode text and it shall not be used with AIM FNC1 (" \0 ") or FNC3 (" \3 "). If it is used together with the structured append block

(" \2 "), it shall be placed on front of the structured append block (FNC2, " \2 "). See also the "Structured append" section below.

\2[<File_Id>, <Amount>, <Index>]

: Insert a structured append block (FNC2 and other structured append information) to the barcode text in order to create the symbol in a structured append. See also the "Structured append" section below.

\3

: Insert a FNC3 character to barcode text, indicates that the symbol encodes a message used to program the reader system. It shall be placed at beginning of the barcode text and it shall not be used with AIM FNC1 (" \0 ") or GS1 FNC1 (" \1 "). If it is used together with the structured append block (FNC2, " \2 "), it shall be placed on front of the structured append block (FNC2, " \2 ").

See also the "Structured append" section below.

\e[<ECI_Number>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set.

The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding.

The ECI is identified by an integer (up to 6 digits) which is encoded in the Compact Matrix symbol by the ECI indicator block. The escape sequence " \e[<ECI_Number>] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 811799 (including the boundaries), the leading zero is optional.

In a single symbol or structured append set of Compact Matrix symbols, if the AIM FNC1 (" \0 "), GS1 FNC1 (" \1 "), FNC2 (structured append block, " \2 "), and FNC3 (" \3 ") are used, ECI indicator blocks may be placed anywhere behind of them, otherwise, they may be placed anywhere in the barcode text. For example:

ABC

\e[123]

DEFabc

\e[000003]

def

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Structured append

29

2D Barcode FMX Components User Manual

In order to handle larger messages than are practical in a single symbol, a data message can be distributed across several Compact

Matrix symbols. Up to 16 Compact Matrix symbols may be appended in a structured format to convey more data. If a symbol is part of a structured append this shall be indicated by a structured append block in barcode text. The escape sequence " \2[<File_Id>,

<Amount>, <Index>] " is used to place the structured append block to the barcode text:

File_Id

: The file identification. It's an integer between 0 and 255 (including the boundaries) in string format. The purpose of the file identification is to increase the probability that only logically linked symbols are processed as part of the same message.

Amount

: The total amount of the symbol within the set of Compact Matrix symbols in the structured append format. It's an integer between 1 and 16 (including the boundaries) in string format.

Index

: The position index of the symbol within the set of Compact Matrix symbols in the structured append format. It's an integer between 1 and 16 (including the boundaries) in string format.

The

AllowEscape

property should be set to true in order to place the structured append block. The structured append block may only be placed once in the barcode text. If the structured append block is used together with AIM FNC1 (" \0 "), GS1 FNC1 (" \1 ") or FNC3

(" \3 "), the AIM FNC1 (" \0 "), GS1 FNC1 (" \1 ") or FNC3 (" \3 ") shall be placed at beginning of the barcode text, then the structured

append block. Otherwise, the structured append block shall be placed at beginning of the barcode text. The OnInvalidChar

or

OnInvalidDataChar

event will occur if the structured append block be placed more than once, or it isn't placed at beginning of the barcode text or behind of the AIM FNC1 (" \0 "), GS1 FNC1 (" \1 ") or FNC3 (" \3 "). The following is examples of structured append:

\2[79, 5, 2]

ABCDEFGabcdefg1234567890...

\0\2[99, 6, 1]

ASDFGHJKL098765...

30

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

AllowEscape

MinVersion

MaxVersion

MinSegments

MaxSegments

StretchOrder

ECCLevel

ECCLevelUpgrade

StartWidth

StopWidth

Placement

CurrentVersion

(Read only)

CurrentSegments

(Read only)

CurrentECCLevel

(Read only)

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.5 TBarcodeFmx2D_DataMatrix

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Data Matrix (ECC 000 - 140) 2D barcode symbols. It's defined in the pfmxDataMatrix unit.

Data Matrix code is a two-dimensional matrix barcode symbology consisting of black and white "cells" or modules arranged in either a square or rectangular pattern. The information to be encoded can be text or raw data. Usual data size is from a few bytes up to 2 kilobytes. The length of the encoded data depends on the symbol dimension used. Error correction codes are added to increase

31

2D Barcode FMX Components User Manual

symbol strength: even if they are partially damaged, they can still be read.

Data Matrix was invented by International Data Matrix, Inc. (ID Matrix) which was merged into RVSI/Acuity CiMatrix, who was acquired by Siemens AG in October, 2005 and Microscan Systems in September 2008.

There are 2 types of Data Matrix symbology, namely ECC 000 - 140 and ECC 200. The component can be used to generate the ECC 000 - 140 symbols. It is the conventional coding for error correction that was used in the initial installations of Data

Matrix systems. It offers five levels of error correction using convolutional code error correction. ECC 000 - 140 symbols have an odd number of rows and an odd number of columns. Symbols are square with sizes from 9 * 9 to 49 * 49 (modules) not including quiet zones. These symbols can be recognized by the upper right corner module being dark.

ECC 000 - 140 should only be used in closed applications where a single party controls both the production and reading of the symbols and is responsible for overall system performance.

If you want to generate the Data Matrix ECC 200 symbols, please use another component TBarcodeFmx2D_DataMatrixECC200

in this components package.

Error correction code (ECC)

Data Matrix (ECC 000 - 140) symbols offer five levels of error correction, referred to as ECC 000, ECC 050, ECC 080, ECC 100 and

ECC 140 respectively in increasing order of recovery capacity. They are listed in following table:

Error correction code level

ECC 000

ECC 050

ECC 080

ECC 100

ECC 140

Maximum % correctable damage

none

2.8

5.5

12.6

25

% increase in used bits from ECC 000

none

33

50

100

300

In an application, it is important to understand that these error correction levels result in the generation of a proportional increase in the number of bits in the message (and hence increase in the size of the symbol), and offer different levels of error recovery.

You can use the ECCLevel

property to specify the error correction code level for a Data Matrix (ECC 000 - 140) symbol. It can be one of these values: dmECC000 , dmECC050 , dmECC080 , dmECC100 , and dmECC140 (they are defined in the pfmxDataMatrix unit), corresponding to the ECC levels ECC 000, ECC 050, ECC 080, ECC 100, and ECC 140.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol

size will be used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error

correction code level specified by the ECCLevel

property (see also the "Symbol sizes" section below). In other words, only the

remaining capacity in current symbol size will be used to upgrade the error correction code level. The property CurrentECCLevel

can be used to get the factual error correction code level.

Character set

All 8-bit values can be encoded. The default interpretation shall be:

For values 0 to 127, in accordance with the U.S. national version of ISO/IEC 646 (ASCII); Note this version consists of the GO set of ISO/IEC 646 and the CO set of ISO/IEC 6429 with values 28 to 31 modified to FS, GS, RS and US respectively).

For values 128 - 255, in accordance with ISO/IEC 8859-1 (These are referred to as extended ASCII).

Note, the character set isn't different based on the encoding mode. See also the "Encoding modes" section below.

Encoding modes

There are six encoding modes of Data Matrix (ECC 000 - 140) symbols, they are shown in following list, in decreasing order of encoding density:

Numeric (Base 11)

: The encoding mode encodes 10 numeric characters 0 to 9, and the space character. The encoding density is

3.5 bits per data character. The encoding mode has highest encoding density.

Alpha (Base 27)

: The encoding mode encodes 26 upper case letters A to Z, and the space character. The encoding density is 4.8

bits per data character.

32

2D Barcode FMX Components User Manual

Alphanumeric (Base 37)

: The encoding mode encodes 26 upper case letters A to Z, 10 numeric characters 0 to 9, and the space character. The encoding density is 5.25 bits per data character.

Punctuation (Base 41)

: The encoding mode encodes 26 upper case letters A to Z, 10 numeric characters 0 to 9, and the space, point(.), hyphen(-), comma(,) and solidus(/) characters. The encoding density is 5.5 bits per data character.

ASCII

: The encoding mode encodes all 128 ASCII characters from ISO/IEC 646. The encoding density is 7 bits per data character.

Binary

: The encoding mode encodes all 256 8-bit bytes. It shall be used for closed applications, where the data interpretation shall be determined by the user. The encoding density is 8 bits per byte. The encoding mode has lowest encoding density.

You can use the

EncodeMode

property to specify the encoding mode for a Data Matrix (ECC 000 - 140) symbol. It can be one of these value: emNumeric , emAlpha , emPunctuation , emAlphanumeric , emASCII , and emBinary , corresponding to the encoding modes

Numberic (Base 11), Alpha (Base 27), Alphanumeric (Base 37), Punctuation (Base 41), ASCII, and Binary. Also, it can be set to emAuto , in this case, the encoding mode will be selected automatically from the list shown above, depending on the barcode text, in other words, the barcode text to be encoded will be analysed, and an appropriates lowest level (highest encoding density) encoding mode will be selected, in order to minimize the symbol size. The property

CurrentEncodeMode

can be used to get the factual encoding mode. These property values are defined in the pfmxDataMatrix unit.

Symbol sizes

ECC 000 - 140 symbols have an odd number of rows and an odd number of columns. Symbols are square with sizes from 9 * 9 to 49 *

49 (modules) square not including quiet zones. These symbol sizes (excluding quiet zones) and their maximum data capacities are listed in following table:

Symbol size values

dmSize_09_09 dmSize_11_11 dmSize_13_13 dmSize_15_15 dmSize_17_17 dmSize_19_19 dmSize_21_21 dmSize_23_23 dmSize_25_25 dmSize_27_27 dmSize_29_29 dmSize_31_31 dmSize_33_33 dmSize_35_35 dmSize_37_37 dmSize_39_39 dmSize_41_41 dmSize_43_43 dmSize_45_45 dmSize_47_47 dmSize_49_49

Symbol sizes

(modules)

9 * 9

11 * 11

13 * 13

15 * 15

17 * 17

19 * 19

21 * 21

23 * 23

25 * 25

27 * 27

29 * 29

31 * 31

33 * 33

35 * 35

37 * 37

39 * 39

41 * 41

43 * 43

45 * 45

47 * 47

49 * 49

ECC 000

12

692

804

924

1052

1188

1332

1484

1644

1812

1988

2172

44

84

132

188

252

324

404

492

588

Maximum data capacities (bits)

ECC 050

-

ECC 080

-

ECC 100

-

492

576

666

762

864

972

1086

1206

1332

1464

1602

6

36

72

114

162

216

276

342

414

422

498

578

662

754

850

950

1058

1170

1286

1410

130

178

230

290

354

-

18

50

86

311

367

427

491

559

631

707

787

871

959

1051

91

127

167

211

259

-

7

31

59

ECC 140

-

135

163

193

225

259

295

333

373

415

459

505

25

43

63

85

109

-

-

-

9

The maximum number of characters in each encoding mode can be calculated by using the Maximum data capacities (bits). For example, the maximum data capacities are 114 bits if the symbol size is 17 * 17 and the error correction code level is ECC 050. The encoding density is 4.8 bits per data character in Alpha (Base 27) encoding mode, so the maximum number of characters is 23 (114 /

4.8 = 23.75) in the Alpha (Base 27) encoding mode. You can find the encoding density in "Encoding modes" section above.

You can use the

MinSize

and the

MaxSize

properties to specify the minimum and maximum sizes for a Data Matrix (ECC 000 - 140) symbol. They can be one of values from dmSize_09_09 to dmSize_49_49 (defined in the pfmxDataMatrix unit), corresponding to every symbol size shown above. The smallest symbol size that accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes.

If the barcode text does not fill the maximum data capacity of the Data Matrix (ECC 000 - 140) symbol, remaining data capacity of the

symbol will be filled by using pad bits (the ECCLevelUpgrade property is set to false), or will be used to upgrade the error correction code level (the ECCLevelUpgrade

property is set to true). If the barcode text is so long that it cannot be encoded using the maximum

33

2D Barcode FMX Components User Manual

symbol size specified by the

MaxSize property, an

OnInvalidLength

or

OnInvalidDataLength

event will occur. The

CurrentSize

property can be used to get the factual symbol size.

Quiet zones

The minimum quiet zone is equal to 1 module on all four sides. So the minimum values of LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties are equal to 1. For applications with moderate to excessive reflected noise in close proximity to the symbol, a quiet zone of 2 modules to 4 modules is recommended.

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Inversed

MinSize

MaxSize

EncodeMode

ECCLevel

ECCLevelUpgrade

CurrentSize

(Read only)

CurrentECCLevel

(Read only)

CurrentEncodeMode

(Read only)

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.6 TBarcodeFmx2D_DataMatrixECC200

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Data Matrix (ECC 200) 2D barcode symbols. It's defined in the pfmxDataMatrixEcc200 unit.

Data Matrix code is a two-dimensional matrix barcode symbology consisting of black and white "cells" or modules arranged in either a

34

2D Barcode FMX Components User Manual

square or rectangular pattern. The information to be encoded can be text or raw data. Usual data size is from a few bytes up to 2 kilobytes. The length of the encoded data depends on the symbol dimension used. Error correction codes are added to increase symbol strength: even if they are partially damaged, they can still be read.

Data Matrix was invented by International Data Matrix, Inc. (ID Matrix) which was merged into RVSI/Acuity CiMatrix, who were acquired by Siemens AG in October, 2005 and Microscan Systems in September 2008.

There are 2 types of Data Matrix symbology, namely ECC 000 - 140 and ECC 200. The component can be used to generate the ECC 000 - 140 symbols. It is the newest version of Data Matrix and supports advanced encoding error checking and correction algorithms. It allows the routine reconstruction of the entire encoded data string when the symbol has sustained

30% damage, assuming the matrix can still be accurately located. So it's recommended for new application or open systems.

ECC 200 symbols have an even number of rows and an even number of columns. Some symbols are square with sizes from 10 * 10 to

144 * 144 not including quiet zones. Some symbols are rectangular with sizes from 8 * 18 to 16 * 48 not including quiet zones. All ECC

200 symbols can be recognised by the upper right corner module being light.

If you want to generate the Data Matrix ECC (000 - 140) symbols, please use another component TBarcodeFmx2D_DataMatrix

in this components package.

Shapes

There are two shapes of Data Matrix (ECC 200) symbols, square and rectangle, as described in following list:

Square

: Indicates to generate the square symbols.

Rectangle

: Indicates to generate the rectangle symbols.

You can use the

Shape

property to specify which shape of symbol will be selected to generate the barcode symbol. It can be one of val u es dsSquare and dsRectangle , corresponding to the shapes square and rectangle. These values are defined in the pfmxDataMatrixEcc200 unit.

Symbol sizes

Data Matrix (ECC 200) symbols have an even number of rows and an even number of columns. The sizes of the square symbols are from 10 * 10 to 144 * 144 (modules) not including quiet zones. The sizes of the rectangle symbols are from 8 * 18 to 16 * 48 (modules) not including quiet zone.

The sizes of square symbols (excluding quiet zones) and their maximum data capacities are listed in following table:

35

2D Barcode FMX Components User Manual

Symbol size values

dmSize_10_10 dmSize_12_12 dmSize_14_14 dmSize_16_16 dmSize_18_18 dmSize_20_20 dmSize_22_22 dmSize_24_24 dmSize_26_26 dmSize_32_32 dmSize_36_36 dmSize_40_40 dmSize_44_44 dmSize_48_48 dmSize_52_52 dmSize_64_64 dmSize_72_72 dmSize_80_80 dmSize_88_88 dmSize_96_96 dmSize_104_104 dmSize_120_120 dmSize_132_132 dmSize_144_144

Symbol sizes

(modules)

52 * 52

64 * 64

72 * 72

80 * 80

88 * 88

96 * 96

104 * 104

120 * 120

132 * 132

144 * 144

10 * 10

12 * 12

14 * 14

16 * 16

18 * 18

20 * 20

22 * 22

24 * 24

26 * 26

32 * 32

36 * 36

40 * 40

44 * 44

48 * 48

Numeric

6

10

16

1392

1632

2100

2608

3116

408

560

736

912

1152

88

124

172

228

288

348

24

36

44

60

72

Maximum data capacities

Alphanumeric

3

6

10

1042

1222

1573

1954

2335

304

418

550

682

862

64

91

127

169

214

259

16

25

31

43

52

The sizes of rectangle symbols (excluding quiet zones) and their maximum data capacities are listed in following table:

Symbol size values

dmSize_8_18 dmSize_8_32 dmSize_12_26 dmSize_12_36 dmSize_16_36 dmSize_16_48

Symbol sizes

(modules)

8 * 18

8 * 32

12 * 26

12 * 36

16 * 36

16 * 48

Numeric

10

20

32

44

64

98

Maximum data capacities

Alphanumeric

6

13

22

31

46

72

Byte

3

8

14

20

30

47

You can use the

MinSize and the

MaxSize

properties to specifiy the minimum and maximum sizes for a Data Matrix (ECC 200) symbol.

They can be one of values from dmSize_10_10 to dmSize_16_48 (they are defined in the pfmxDataMatrixEcc200 unit), corresponding to every symbol size shown above. The smallest symbol size that accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes.

If the barcode text does not fill the maximum data capacity of the Data Matrix (ECC 200) symbol, remaining data capacity of the symbol will be filled by using PAD characters. If the barcode text is so long that it cannot be encoded using the maximum symbol size

specified by the MaxSize

property, an

OnInvalidLength

or OnInvalidDataLength

event will occur. The

CurrentSize

property can be used to get the factual symbol size.

Quiet zones

The minimum quiet zone is equal to 1 module on all four sides. So the minimum values of LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties are equal to 1. For applications with moderate to excessive reflected noise in close proximity to the symbol, a quiet zone of 2 modules to 4 modules is recommended.

Byte

1

3

6

693

813

1047

1301

1555

202

277

365

453

573

42

60

84

112

142

172

10

16

20

28

34

36

2D Barcode FMX Components User Manual

Error checking and correcting (ECC)

Data Matrix (ECC 200) symbols are fixed at a repair level of about 25% damage and overhead ranges from 60% for a small number of characters downward to 26% for a large number of characters encoded.

Character set

All 8-bit values can be encoded. The default interpretation shall be:

For values 0 to 127, in accordance with the U.S. national version of ISO/IEC 646 (ASCII); Note this version consists of the GO set of ISO/IEC 646 and the CO set of ISO/IEC 6429 with values 28 to 31 modified to FS, GS, RS and US respectively).

For values 128 - 255, in accordance with ISO/IEC 8859-1 (Extended ASCII).

This interpretation corresponds to ECI 000003.

Two non-data characters can be encoded, FNC1 for compatibility with some existing applications and ECI indicator blocks for the standardized encoding of message interpretation information.

FNC1

: The FNC1 character following an application standard agreed with AIM International, identifies a symbol which conforms to a specific industry standard. FNC1 shall be used as defined in the EAN.UCC General Specifications in the first position. The FNC1 character may also be used as a field separator, in which case it will be represented in the transmitted message as GS character (ASCII value 29). The escape sequence " \f " can be used to placed the FNC1 character to barcode text.

ECI

: The escape sequence " \e[<ECI_Number>] " can be used to place the ECI indicator block to barcode text. See also the

"Extended Channel Interpretation (ECI)" section below.

The AllowEscape

property should be set to true in order to place the FNC1 characters or the ECI indicator blocks.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\5

: Insert a 05 macro to barcode text. It's used to abbreviate the industry specific header " [)>{RS}05{GS} " and trailer " {RS}{EOT} ", in order to reduce the size of symbol. It must be placed at beginning of the barcode text and it shall not be used in conjunction with structured append.

\6

: Insert a 06 macro to barcode text. It's used to abbreviate the industry specific header " [)>{RS}06{GS} " and trailer " {RS}{EOT} ", in order to reduce the size of symbol. It must be placed at beginning of the barcode text and it shall not be used in conjunction with structured append.

\f

: Insert a FNC1 character to barcode text. See also the "Character set" section above.

\e[<ECI_Number>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

\s[<Index>, <Amount>, <File_Id>]

: Insert a structured append block to the barcode text in order to create the symbol in a structured append. See also the "Structured append" section below.

\r

: Indicates that the symbol encodes a message used to program the reader system. It shall be placed at beginning of the barcode text and it shall not be used with structured append.

Note, the " {RS} " is ASCII character RS (ASCII value 30), the " {EOT} " is ASCII character EOT (ASCII value 4).

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Four broad types of interpretations are supported in Data Matrix (ECC 200):

International character sets (or code pages).

General purpose interpretations such as encryption and compaction.

User defined interpretations for closed systems.

37

2D Barcode FMX Components User Manual

Control information for structured append in unbuffered mode.

The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding.

The ECI is identified by an integer (up to 6 digits) which is encoded in the Data Matrix (ECC 200) symbol by the ECI indicator block.

The escape sequence " \e[<ECI_Number>] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 999999 (including the boundaries), the leading zero is optional.

ECI indicator blocks may be placed anywhere in the barcode text in a single or structured append set of Data Matrix (ECC 200) symbols. For example:

ABC

\e[123]

DEFabc

\e[000003]

def

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Structured append

In order to handle larger messages than are practical in a single symbol, a data message can be distributed across several Data Matrix

(ECC 200) symbols. Up to 16 Data Matrix (ECC 200) symbols may be appended in a structured format to convey more data. If a symbol is part of a structured append this shall be indicated by a structured append block in barcode text. The escape sequence

" \s[<Index>, <Amount>, <File_Id>] " is used to place the structured append block to the barcode text:

Index

: The position index of the symbol within the set of Data Matrix (ECC 200) symbols in the structured append format. It's an integer between 1 and 16 (including the boundaries) in string format.

Amount

: The total amount of the symbol within the set of Data Matrix (ECC 200) symbols in the structured append format. It's an integer between 2 and 16 (including the boundaries) in string format.

File_Id

: The file identification. It's an integer between 1 and 64516 (including the boundaries) in string format. The purpose of the file identification is to increase the probability that only logically linked symbols are processed as part of the same message. Also the field can be expressed as two integers between 1 and 254 (including the boundaries), separated with a comma.

The

AllowEscape

property should be set to true in order to place the structured append block. The structured append block may only

be placed once in the barcode text. Also, it shall be placed at beginning of the barcode text. The OnInvalidChar

or

OnInvalidDataChar

event will occur if the structured append block be placed more than once, or it isn't placed at beginning of the barcode text. The following is the examples of structured append:

\s[2, 5, 25431]

ABCDEFGabcdefg1234567890

\s[2, 5, 101, 31]

ABCDEFGabcdefg1234567890

38

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Inversed

MinSize

MaxSize

Shape

CurrentSize

(Read only)

4.1.7 TBarcodeFmx2D_GridMatrix

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Grid Matrix 2D barcode symbols. It's defined in the pfmxGridMatrix unit.

Grid Matrix is a square, variable-sized, two-dimensional matrix symbology with unique dark- and light-framed "macromodules" that create a grid design that provides a robust finder pattern. The unique finder pattern ensures that readers can locate and orient the symbol even with significant symbol damage.

Grid Matrix can encode 7-bit ASCII, numeric, and binary data, in addition to any combination of data types in the same symbol, particularly effective with Chinese characters.

Grid Matrix was invented by Syscan Technology Co., Ltd.

Symbol sizes

There are thirteen sizes of Grid Matrix symbol, referred to as version 1 to 13, in increasing order of size and data capacity. You can use

the MinVersion

and the

MaxVersion

properties to specifiy the minimum and maximum sizes for a Grid Matrix symbol. They can be one of values from 1 to 13 (defined in the pfmxGridMatrix unit), corresponding to the versions 1 to 13. The smallest symbol size that

accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes. The CurrentVersion

property can be used to get the factual symbol size.

39

2D Barcode FMX Components User Manual

The symbol sizes and the maximum data capacity of each version are listed in following table:

Version

7

8

9

10

3

4

5

6

1

2

11

12

13

Symbol sizes

(modules)

18 * 18

30 * 30

42 * 42

54 * 54

66 * 66

78 * 78

90 * 90

102 * 102

114 * 114

126 * 126

138 * 138

150 * 150

162 * 162

ECC Level 1

-

315

623

1022

1526

2135

2835

3647

4550

5558

6671

7875

9191

280

553

910

1358

1897

2520

3241

4046

4942

5929

7000

8169

Maximum data capacities (bits)

ECC Level 2

105

ECC Level 3

91

245

483

798

1190

1659

2205

2835

3542

4326

5187

6125

7147

ECC Level 4

77

210

413

686

1022

1421

1890

2429

3038

3710

4445

5250

6125

ECC Level 5

63

175

343

567

847

1183

1575

2023

2527

3087

3703

4375

5103

If the barcode text does not fill the maximum data capacity of the Grid Matrix symbol, remaining data capacity of the symbol will be

filled by using pad bits (the ECCLevelUpgrade

property is set to false), or will be used to upgrade the error correction code level (the

ECCLevelUpgrade property is set to true). If the barcode text is so long that it cannot be encoded using the maximum symbol size

specified by the MaxVersion

property, an OnInvalidLength

or

OnInvalidDataLength

event will occur.

Error correction code (ECC)

There are five user-selectable levels of error correction, from 1 to 5 respectively in increasing order of recovery capacity.

You can use the

ECCLevel

property to specify the error correction code level for a Grid Matrix symbol. It can be one of these values: elLevel_1 , elLevel_2 , elLevel_3 , elLevel_4 , and elLevel_5 (they are defined in the pfmxGridMatrix unit), corresponding to the ECC levels from 1 to 5.

These ECC levels are listed in following table:

Value of ECCLevel property

elLevel_1 elLevel_2 elLevel_3 elLevel_4 elLevel_5

Error correction code level

1

2

3

4

5

Percentage of total capacity for ECC data

10%

20%

30%

40%

50%

Note, the ECC level 1 is inapplicable to the version 1.

Also, you can set the ECCLevel

property to elLevel_Recommend or elLevel_LowestRecommend . For each symbol version, the denotative ECC levels are listed in following table:

Version

1

2

3

4-13

ECCLevel

= elLevel_Recommend

5

4

4

3

Denotative ECC level

ECCLevel

= elLevel_LowestRecommend

4

2

1

1

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol

size will be used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error

correction code level specified by the ECCLevel

property (see also the "Symbol sizes" section above). In other words, only the

remaining capacity in current symbol size will be used to upgrade the error correction code level. The property CurrentECCLevel

can be used to get the factual error correction code level.

Quiet zones

The minimum quiet zone is equal to 6 modules on all four sides. So the minimum values of LeadingQuietZone

,

TrailingQuietZone

,

40

2D Barcode FMX Components User Manual

TopQuietZone

, and BottomQuietZone

properties are equal to 6.

Character set

All 7-bit ASCII values can be encoded.

8-bit binary data can be encoded.

GB 18030 Chinese characters can be encoded.

Five non-data characters can be encoded:

AIM FNC1

: It identifies symbols formatted in accordance with specific industry or application specifications previously agreed with AIM International. It is immediately followed by an application indicator assigned to identify the specification concerned by

AIM International. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode.

The escape sequence " \0 " can be used to placed the FNC1 character to barcode text.

GS1 FNC1

: It identifies symbols encoding data formatted according to the GS1 Application Identifiers standard. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode text. The escape sequence

" \1 " can be used to placed the GS1 FNC1 character to barcode text.

FNC2

: The FNC2 is used to implement structured append function in order to handle larger messages than are practical in a single symbol. The escape sequence " \2[<File_Id>, <Amount>, <Index>] " is used to place the FNC2 character and other structured append information (collectively referred to as structured append block) to barcode text. See also the "Escape sequences" and "Structured append" sections below.

FNC3

: The FNC3 is used to indicates that the symbol encodes a message used to program the reader system. The escape sequence " \3 " can be used to placed the FNC3 character to barcode text. See also the "Escape sequences" section below.

ECI

: ECI indicator blocks is for the standardized encoding of message interpretation information. The escape sequence

" \e[<ECI_Number>] " can be used to place the ECI indicator block to barcode text. See also the "Extended Channel

Interpretation (ECI)" section below.

The AllowEscape

property should be set to true in order to place these non-data characters.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\0

: Insert an AIM FNC1 character to barcode text in order to encode AIM structural data similar to GS1. It shall be placed at beginning of the barcode text and it shall not be used with GS1 FNC1 (" \1 ") or FNC3 (" \3 "). If it is used together with the structured append block (FNC2, " \2 "), it shall be placed on front of the structured append block (" \2 "). See also the "Structured append" section below.

\1

: Insert a GS1 FNC1 character to barcode text in order to encode GS1 structural data. It shall be placed at beginning of the barcode text and it shall not be used with AIM FNC1 (" \0 ") or FNC3 (" \3 "). If it is used together with the structured append block

(" \2 "), it shall be placed on front of the structured append block (FNC2, " \2 "). See also the "Structured append" section below.

\2[<File_Id>, <Amount>, <Index>]

: Insert a structured append block (FNC2 and other structured append information) to the barcode text in order to create the symbol in a structured append. See also the "Structured append" section below.

\3

: Insert a FNC3 character to barcode text, indicates that the symbol encodes a message used to program the reader system. It shall be placed at beginning of the barcode text and it shall not be used with AIM FNC1 (" \0 ") or GS1 FNC1 (" \1 "). If it is used together with the structured append block (FNC2, " \2 "), it shall be placed on front of the structured append block (FNC2, " \2 ").

See also the "Structured append" section below.

\e[<ECI_Number>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set.

The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding.

41

2D Barcode FMX Components User Manual

The ECI is identified by an integer (up to 6 digits) which is encoded in the Grid Matrix symbol by the ECI indicator block. The escape sequence " \e[<ECI_Number>] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 811799 (including the boundaries), the leading zero is optional.

In a single symbol or structured append set of Grid Matrix symbols, if the AIM FNC1 (" \0 "), GS1 FNC1 (" \1 "), FNC2 (structured append block, " \2 "), and FNC3 (" \3 ") are used, ECI indicator blocks may be placed anywhere behind of them, otherwise, they may be placed anywhere in the barcode text. For example:

ABC

\e[123]

DEFabc

\e[000003]

def

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Structured append

In order to handle larger messages than are practical in a single symbol, a data message can be distributed across several Grid Matrix symbols. Up to 16 Grid Matrix symbols may be appended in a structured format to convey more data. If a symbol is part of a structured append this shall be indicated by a structured append block in barcode text. The escape sequence " \2[<File_Id>, <Amount>,

<Index>] " is used to place the structured append block to the barcode text:

File_Id

: The file identification. It's an integer between 0 and 255 (including the boundaries) in string format. The purpose of the file identification is to increase the probability that only logically linked symbols are processed as part of the same message.

Amount

: The total amount of the symbol within the set of Grid Matrix symbols in the structured append format. It's an integer between 1 and 16 (including the boundaries) in string format.

Index

: The position index of the symbol within the set of Grid Matrix symbols in the structured append format. It's an integer between 1 and 16 (including the boundaries) in string format.

The

AllowEscape

property should be set to true in order to place the structured append block. The structured append block may only be placed once in the barcode text. If the structured append block is used together with AIM FNC1 (" \0 "), GS1 FNC1 (" \1 ") or FNC3

(" \3 "), the AIM FNC1 (" \0 "), GS1 FNC1 (" \1 ") or FNC3 (" \3 ") shall be placed at beginning of the barcode text, then the structured

append block. Otherwise, the structured append block shall be placed at beginning of the barcode text. The OnInvalidChar

or

OnInvalidDataChar

event will occur if the structured append block be placed more than once, or it isn't placed at beginning of the barcode text or behind of the AIM FNC1 (" \0 "), GS1 FNC1 (" \1 ") or FNC3 (" \3 "). The following is examples of structured append:

\2[79, 5, 2]

ABCDEFGabcdefg1234567890...

\0\2[99, 6, 1]

ASDFGHJKL098765...

42

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

AllowEscape

MinVersion

MaxVersion

ECCLevel

ECCLevelUpgrade

CurrentVersion

(Read only)

CurrentECCLevel

(Read only)

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.8 TBarcodeFmx2D_HanXinCode

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Han Xin Code 2D barcode symbols. It's defined in the pfmxHanXinCode unit.

Han Xin Code is also known as Chinese Sensible Code, It is a unique, variable size, matrix symbology specifically optimized for two and four byte alphabets such as Chinese and other ideographic/pictographic alphabets. It is equally suitable for single byte ISO Code Pages such as English.

Han Xin Code also includes an option for octet byte encoding for applications such as graphics and audio. Extended Channel

Interpretation (ECIs) support is also included. It incorporates strong Reed-Solomon error correction to enable four levels of error correction abilities to recover information from damaged symbols.

Symbol sizes

There are eighty-four sizes of Han Xin Code symbols, referred to as version 1 to 84, in increasing order of size and data capacity. You can use the

MinVersion

and the MaxVersion

properties to specifiy the minimum and maximum sizes for a Han Xin Code symbol. They can be one of values from 1 to 84 (defined in the pfmxHanXin unit), corresponding to the versions 1 to 84. The smallest symbol size

43

2D Barcode FMX Components User Manual

that accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes. The CurrentVersion

property can be used to get the factual symbol size.

If the barcode text does not fill the maximum data capacity of the Han Xin Code symbol, remaining data capacity of the symbol will be

filled by using pad bits (the ECCLevelUpgrade

property is set to false), or will be used to upgrade the error correction code level (the

ECCLevelUpgrade property is set to true). If the barcode text is so long that it cannot be encoded using the maximum symbol size

specified by the MaxVersion

property, an OnInvalidLength

or

OnInvalidDataLength

event will occur.

Error correction code (ECC)

There are four user-selectable levels of error correction, from L1 to L4 respectively in increasing order of recovery capacity.

You can use the

ECCLevel

property to specify the error correction code level for a Han Xin Code symbol. It can be one of these values: elLevel_1 , elLevel_2 , elLevel_3 , and elLevel_4 (they are defined in the pfmxHanXinCode unit), corresponding to the ECC levels from L1 to L4.

These ECC levels are listed in following table:

Value of ECCLevel

property

elLevel_1 elLevel_2 elLevel_3 elLevel_4

Error correction code level

L1

L2

L3

L4

Recevory capacities (%) (approx.)

8%

15%

23%

30%

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol

size will be used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error

correction code level specified by the ECCLevel

property (see also the "Symbol sizes" section above). In other words, only the

remaining capacity in current symbol size will be used to upgrade the error correction code level. The property CurrentECCLevel

can be used to get the factual error correction code level.

Quiet zones

The minimum quiet zone is equal to 3 modules on all four sides. So the minimum values of LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties are equal to 3.

Character set

All 7-bit ASCII values can be encoded.

8-bit binary data can be encoded.

GB 18030 Chinese characters can be encoded.

One non-data characters can be encoded:

ECI

: ECI indicator blocks is for the standardized encoding of message interpretation information. The escape sequence

" \e[<ECI_Number>] " can be used to place the ECI indicator block to barcode text. See also the "Extended Channel

Interpretation (ECI)" section below.

The AllowEscape

property should be set to true in order to place non-data characters.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\e[<ECI_Number>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the

44

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

AllowEscape

MinVersion

MaxVersion

ECCLevel

ECCLevelUpgrade

ReviseVersion5

CurrentVersion

(Read only)

CurrentECCLevel

(Read only)

2D Barcode FMX Components User Manual

default character set.

The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding.

The ECI is identified by an integer (up to 6 digits) which is encoded in the Han Xin Code symbol by the ECI indicator block. The escape sequence " \e[<ECI_Number>] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 999999 (including the boundaries), the leading zero is optional.

In a Han Xin Code symbol, the ECI indicator blocks may be placed anywhere in the barcode text. For example:

ABC

\e[123]

DEFabc

\e[000003]

def

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

45

2D Barcode FMX Components User Manual

4.1.9 TBarcodeFmx2D_MaxiCode

The component is used to create the MaxiCode 2D Barcode symbols. It's defined in the pfmxMaxiCode unit.

MaxiCode is a public domain, machine-readable symbol system originally created and used by United Parcel Service in 1992. It was designed for tracking and managing the shipment of packages, and can be quickly automatically scanned on high-speed conveyor lines.

MaxiCode is a fixed-size symbology. A MaxiCode symbol appears as a 1.11 * 1.054 inchs square, with a bullseye in the middle, surrounded by a pattern of hexagonal dots (modules). Each hexagonal dot (module) measures 0.035 *

0.041 inches.

Modes

MaxiCode has modes which are used to define the format of the message and the level of error correction within a symbol:

Mode 2

: It encodes a structured carrier message with a numeric postal code, and an optional secondary message. A numeric postal code, a country code, and a class of service code assigned by the carrier are included in the structured carrier message.

The symbol employs enhanced error correction for the structured carrier message and standard error correction for the secondary message, see also the "Error checking and correcting (ECC)" section below.

It is designed for use in the transport industry. Primary use is US domestic destinations.

The formats of mode 2 barcode text are specified in the following list:

[)>{RS}01{GS}YYPPPPPPPPP{GS}CCC{GS}SSS{GS}MESSAGE{RS}{EOT}

YY

: Date (year), 2 digits.

PPPPPPPPP

: Numeric postal code, up to 9 digits. Only first 9 digits will be encoded if its length is greater than 9 digits.

CCC

: Country code, 3 digits.

SSS

: Serivce class, 3 digits

MESSAGE

: Optional secondary message. All 256 of the ASCII characters can be used. A maximum of about 71 alphanumeric characters or about 107 digits can be encoded in the message.

{RS}

: ASCII character RS (ASCII value 30). The RS character after the secondary message is optional. If the

property is set to true, you can use the " \r " instead of the RS character.

{GS}

: ASCII character GS (ASCII value 29). It's used to delimit each field in barcode text. The GS character after the

service class can be omitted if secondary message doesn't exist. If the AllowEscape

property is set to true, you can use the " \g " instead of the GS character.

{EOT}

: Optional ASCII character EOT (ASCII value 4). If the

property is set to true, you can use the " \t " instead of the EOT character.

For example (Date: 96 ; Postal code: 123456789 ; Country code: 840 ; Service class: 001 ; Secondary message: 'PA USA' +

Chr(29) + 'UPS\123' ):

'[)>' +

Chr(30)

+ '01' +

Chr(29)

+ '96123456789' +

Chr(29)

+ '840' +

Chr(29)

+ '001' +

Chr(29)

+ 'PA USA' + Chr(29) + 'UPS\123' +

Chr(30)

+

Chr(4)

'[)>

\r

01

\g

96123456789

\g

840

\g

001

\g

PA USA\gUPS \\ 123

\r\t

'

PPPPPPPPP{GS}CCC{GS}SSS{GS}MESSAGE{EOT}

PPPPPPPPP

: Numeric postal code, up to 9 digits. Only first 9 digits will be encoded if its length is greater than 9 digits.

CCC

: Country code, 3 digits.

SSS

: Serivce class, 3 digits

MESSAGE

: Optional secondary message. All 256 of the ASCII characters can be used. A maximum of about 82 alphanumeric characters or about 121 digits can be encoded in the message.

{GS}

: ASCII character GS (ASCII value 29). It's used to delimit each field in barcode text. The GS character after the

46

2D Barcode FMX Components User Manual

service class can be omitted if secondary message doesn't exist. If the AllowEscape

property is set to true, you can use the " \g " instead of the GS character.

{EOT}

: Optional ASCII character EOT (ASCII value 4). If the

property is set to true, you can use the " \t " instead of the EOT character.

For example (Postal code: 123456789 ; Country code: 840 ; Service class: 001 ; Secondary message: 'PA USA' + Chr(29) +

'UPS\123' ):

'123456789' +

Chr(29)

+ '840' +

Chr(29)

+ '001' +

Chr(29)

+ 'PA USA' + Chr(29) + 'UPS\123' +

Chr(4)

'123456789

\g

840

\g

001

\g

PA USA\gUPS \\ 123

\t

'

Mode 3

: It encodes a structured carrier message with an alphanumeric postal code, and an optional secondary message. An alphanumeric postal code, a country code, and a class of service code assigned by the carrier are included in the structured carrier message.

The symbol employs enhanced error correction for the structured carrier message and standard error correction for the secondary message, see also the "Error checking and correcting (ECC)" section below.

It is designed for use in the transport industry. Primary use is international destinations.

The mode 3 is similar to mode 2, but the postal code field encodes 6 alphanumeric characters.

The formats of mode 3 barcode text are specified in the following list:

[)>{RS}01{GS}YYPPPPPP{GS}CCC{GS}SSS{GS}MESSAGE{RS}{EOT}

YY

: Date (year), 2 digits.

PPPPPP

: Alphanumeric postal code, up to 6 alphanumeric characters. Only first 6 characters will be encoded if its length is greater than 6 characters. All upper case letters, all numeric characters, space character, and the punctuations and symbols corresponding to the ASCII values from 34 to 58 can be encoded.

CCC

: Country code, 3 digits.

SSS

: Serivce class, 3 digits

MESSAGE

: Optional secondary message. All 256 of the ASCII characters can be used. A maximum of about 71 alphanumeric characters or about 107 digits can be encoded in the message.

{RS}

: ASCII character RS (ASCII value 30). The RS character after the secondary message is optional. If the

property is set to true, you can use the " \r " instead of the RS character.

{GS}

: ASCII character GS (ASCII value 29). It's used to delimit each field in barcode text. The GS character after the

service class can be omitted if secondary message doesn't exist. If the AllowEscape

property is set to true, you can use the " \g " instead of the GS character.

{EOT}

: Optional ASCII character EOT (ASCII value 4). If the

property is set to true, you can use the " \t " instead of the EOT character.

For example (Date: 96 ; Postal code: ABC12 ; Country code: 840 ; Service class: 001 ; Secondary message: 'PA USA' + Chr(29) +

'UPS\123' ):

'[)>' +

Chr(30)

+ '01' +

Chr(29)

+ '96ABC12' +

Chr(29)

+ '840' +

Chr(29)

+ '001' +

Chr(29)

+

'PA USA' + Chr(29) + 'UPS\123' +

Chr(30)

+

Chr(4)

'[)>

\r

01

\g

96ABC12

\g

840

\g

001

\g

PA USA\gUPS \\ 123

\r\t

'

PPPPPP{GS}CCC{GS}SSS{GS}MESSAGE{EOT}

PPPPPP

: Alphanumeric postal code, up to 6 alphanumeric characters. Only first 6 characters will be encoded if its length is greater than 6 characters. All upper case letters, all numeric characters, space character, and the punctuations and symbols corresponding to the ASCII values from 34 to 58 can be encoded.

CCC

: Country code, 3 digits.

SSS

: Serivce class, 3 digits

47

2D Barcode FMX Components User Manual

MESSAGE

: Optional secondary message. All 256 of the ASCII characters can be used. A maximum of about 82 alphanumeric characters or about 121 digits can be encoded in the message.

{GS}

: ASCII character GS (ASCII value 29). It's used to delimit each field in barcode text. The GS character after the

service class can be omitted if secondary message doesn't exist. If the AllowEscape

property is set to true, you can use the " \g " instead of the GS character.

{EOT}

: Optional ASCII character EOT (ASCII value 4). If the

property is set to true, you can use the " \t " instead of the EOT character.

For example (Postal code: ABC12 ; Country code: 840 ; Service class: 001 ; Secondary message: 'PA USA' + Chr(29) +

'UPS\123' ):

'ABC12' +

Chr(29)

+ '840' +

Chr(29)

+ '001' +

Chr(29)

+ 'PA USA' + Chr(29) + 'UPS\123' +

Chr(4)

'ABC12

\g

840

\g

001

\g

PA USA\gUPS \\ 123

\t

'

Mode 4

:

Indicates that the symbol encodes an unformatted message. The barcode message is divided into a primary message and a secondary message internally, the symbol employs enhanced error correction for the primary message and standard error correction for the secondary message.

All 256 of the ASCII characters can be used. A maximum of about 93 alphanumeric characters or about 138 digits can be encoded in the symbol.

Mode 5

:

Indicates that the symbol encodes an unformatted message. The barcode message is divided into a primary message and a secondary message internally, the symbol employs enhanced error correction for both the primary and secondary messages.

All 256 of the ASCII characters can be used. A maximum of about 77 alphanumeric characters or about 113 digits can be encoded in the symbol.

The mode 5 is similar to mode 4, but it employs enhanced error correction for secondary messages.

Mode 6

:

Indicates that the symbol encodes a message used to program the reader system. The barcode message is divided into a primary message and a secondary message internally, the symbol employs enhanced error correction for the primary message and standard error correction for the secondary message.

All 256 of the ASCII characters can be used. A maximum of about 93 alphanumeric characters or about 138 digits can be encoded in the symbol.

You can use the

Mode

property to specify the factual mode for a MaxiCode symbol. It can be one of values from 2 to 6, corresponding to the modes from 2 to 6. They are defined in the pfmxMaxiCode unit.

Also, you can set the AutoMode

property to true, in order to automatically select the suitable mode depending on the barcode text and

the value of Mode

property. And use the CurrentMode

property to get the factual mode:

If the

Mode

property is set to mode 2 or 3, the factual mode will be selected between mode 2 and 3, depending on the postal code field in the barcode text.

If the Mode

property is set to mode 4, the factual mode will be selected between mode 4 and 5, depending on the length of barcode text. If the length of barcode text is so short that can be encoded by using mode 5, the mode 5 will be used in order to employ enhanced error correction, otherwise the mode 4 will be used in order to accommodate more barcode text.

If the Mode

property is set to mode 5, the mode 5 will be selected always, in order to insure high level of enhanced error correction.

If the Mode

property is set to mode 6, the mode 6 will be selected always, in order to encodes a message used to program the reader system.

Symbol size

48

2D Barcode FMX Components User Manual

Each MaxiCode symbol is of a fixed size, having 884 hexagonal modules arranged in 33 rows around a central finder pattern. Each row consists of a maximum of 30 modules.

Also, each symbol, including the quiet zones, is of a fixed physical size, nominally 28.14mm wide, 26.91mm high. Each hexagonal dot

(module) measures 0.889 * 1.041 millimeters.

Quiet zones

The MaxiCode symbology require the minimum 1 module quiet zones as measured from the outside edges. So the minimum values of

LeadingQuietZone ,

TrailingQuietZone

,

TopQuietZone

, and

BottomQuietZone

properties are equal to 1.

Error checking and correcting (ECC)

MaxiCode symbology offer two levels of error checking and correction, Enhanced Error Correction (EEC) and Standard Error

Correction (SEC), which are specified by the Mode, see also the "Modes" section above.

In mode 2 and 3, the symbol employs EEC for the structured carrier message and SEC for the secondary message. In mode 4, 5, and

6, MaxiCode symbols are internally divided into a primary message and a secondary message, the mode 4 and 6 symbol employ EEC for the primary message and SEC for the secondary message. the mode 5 symbol employs EEC for both the primary and secondary messages.

Character set

In mode 2, all numeric characters can be encoded in the country code, service class, and postal code fields. All 256 of the ASCII characters can be encoded in the secondary message.

In mode 3, all numeric characters can be encoded in the country code and service class fields, all upper case letters, all numeric characters, space character, and punctuations and symbols corresponding to the ASCII values from 34 to 58 can be encoded in the postal code field. All 256 of the ASCII characters can be encoded in the secondary message.

In mode 4, 5 and 6, All 256 of the ASCII characters can be encoded in the entire message.

The default interpretation of these characters shall be:

Values 0-127, in accordance with ANSI X3.4, i.e. all 128 ASCII characters values 128-255 in accordance with ISO 8859-1: Latin Alphabet No. 1, i.e. extended ASCII characters.

This default interpretation corresponds to ECI 000003.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\f

: Insert a FS character (ASCII value 28) to barcode text. See also the "Modes" section above.

\g

: Insert a GS character (ASCII value 29) to barcode text. See also the "Modes" section above.

\r

: Insert a RS character (ASCII value 30) to barcode text. See also the "Modes" section above.

\t

: Insert a EOT character (ASCII value 4) to barcode text. See also the "Modes" section above.

\e[<ECI_Number>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

\s[<Index>, <Amount>]

: Insert a structured append block to barcode text in order to create the symbol in a structured append.

See also the "Structured append" section below.

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Four broad types of interpretations are supported in MaxiCode:

International character sets (or code pages).

General purpose interpretations such as encryption and compaction.

49

2D Barcode FMX Components User Manual

User defined interpretations for closed systems.

Control information for structured append in unbuffered mode.

The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding.

The ECI is identified by an integer (up to 6 digits) which is encoded in the MaxiCode symbol by the ECI indicator block. The escape sequence " \e[ECI_Number] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 999999 (including the boundaries), the leading zero is optional.

ECI indicator blocks may be placed anywhere in the barcode text in a single or structured append set of MaxiCode symbols, but cannot be within the primary message (structured carrier message) for modes 2 and 3:

In mode 2 and 3, the ECI blocks may only be invoked within secondary message. For example:

[)>01\r01\g99123456789\g123\g456\g

\e[002]

ABCg

\e[123]

DEF\r\t

In mode 4, 5 and 6, the ECI blocks may be invoked anywhere in the barcode text. For example:

ABC

\e[23]

DEFG

\e[001]

HIJKLMN

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Structured append

Up to eight MaxiCode symbols may be appended in a structured format to convey more data. If a symbol is part of a structured append this shall be indicated by a structured append block in barcode text. The escape sequence " \s[<Index>, <Amount>] " is used to place the structured append block to the barcode text:

Index

: The position index of the symbol within the set of MaxiCode symbols in the structured append format. It's an integer between 1 and 8 (including the boundaries) in string format.

Amount

: The total amount of the symbol within the set of MaxiCode symbols in the structured append format. It's an integer between 2 and 8 (including the boundaries) in string format.

The structured append block may only be placed once in the barcode text. The OnInvalidChar

or OnInvalidDataChar

event will occur if

the structured append block be placed more than once. The AllowEscape

property should be set to true in order to place the structured append block. The valid locations for structured append block in the barcode text are specified in the following:

In the mode 2 and mode 3 of MaxiCode symbols, the structured append block shall be placed at beginning or end in the barcode text, or anywhere in the secondary message. For example:

\s[2,5]

[)>01\r01\g99123456789\g123\g456\gABCDEF\r\t

[)>01\r01\g99123456789\g123\g456\g

\s[2,5]

ABCDEF\r\t

[)>01\r01\g99123456789\g123\g456\gABC

\s[2,5]

DEF\r\t

[)>01\r01\g99123456789\g123\g456\gABCDEF

\s[2,5]

\r\t

[)>01\r01\g99123456789\g123\g456\gABCDEF\r\t

\s[2,5]

In the mode 4, 5 and 6 of MaxiCode symbols, the structured append block can be placed at anywhere in the barcode text. For example:

\s[2,5]

ABCDEFG

ABC

\s[2,5]

DEFG

ABCDEFG

\s[2,5]

50

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Mode

AutoMode

AllowEscape

CurrentMode

(Read only)

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.10 TBarcodeFmx2D_MicroPDF417

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the MicroPDF417 Barcode symbols. It is defined in the pfmxMicroPDF417 unit.

MicroPDF417 is a multi-row symbology, derived from and closely based on PDF417

. MicroPDF417 is designed for applications with a need for improved area efficiency but without the requirement for PDF417's maximum data capacity. A limited set of symbol sizes is available, together with a fixed level of error correction for each symbol size. Module dimensions are userspecified to enable symbol production and reading by a wide variety of techniques.

Symbol sizes

MicroPDF417 symbols shall conform with certain predefined combinations of number of stacked rows, columns, and number of errorcorrection codewords, referred to as symbol sizes. The symbol size values from mpSize_1_11 to mpSize_4_44 corresponding to these symbol sizes, and denotation the number of columns and rows in every symbol size. For example, the symbol size value mpSize_2_23 denotations the MicroPDF417 symbol size is 23 stacked rows by 2 columns. These symbol size values are defined in the pfmxMicroPDF417 unit.

The

RowHeight

property can be used to specify the height for each row, in modules.

You can use the MinSize

property to specify a minimum symbol size, and use the MaxSize

property to specifiy a maximum symbol

size. According to the priority order specified by the StretchOrder property, the first symbol size that accommodates the barcode text

51

2D Barcode FMX Components User Manual

will be automatically selected between the minimum symbol size and the maximum symbol size.

You can use the CurrentSize

property to get the factual symbol size.

If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by the

MaxSize property, an

OnInvalidLength

or OnInvalidDataLength

event will occur.

Quiet zones

The symbol shall include a quiet zone on all four sides. The minimum quiet zone is equal to 1 module on all four sides. So the minimum values of

LeadingQuietZone

, TrailingQuietZone

, TopQuietZone

, and BottomQuietZone

properties are equal to 1.

Error checking and correcting (ECC)

Each MicroPDF417 symbol contains at least seven error correction codewords. The error correction codewords provide capability for both error detection and correction. The number of error correction codewords for a MicroPDF417 symbol is fixed for each symbol size.

Character set

All 8-bit values can be encoded. The default interpretation shall be:

For values 0 to 127, in accordance with the U.S. national version of ISO/IEC 646 (ASCII).

For values 128 - 255, in accordance with ISO/IEC 8859-1 (Extended ASCII).

This interpretation corresponds to ECI 000003.

MicroPDF417 has three unique data compaction modes as Text compaction mode, Numeric compaction mode, and Byte compaction mode. All 8-bit values are encoded by switching internally between all 3 compaction modes:

Text compaction mode

: Permits all printable ASCII characters, i.e. ASCII values from 32 to 126 inclusive accordance with

ISO/IEC 646, as well as selected control characters (CR, HT, and LF).

The mode has four sub-modes:

Alpha

: Uppercase letters and space.

Lower

: Lowercase letters and space.

Mixed

: Numeric and some punctuations.

Punctuation

: Some punctuations.

The sub-mode will be switched automatically in order to minimize the symbol size.

Numeric compaction mode

: Permits efficient encoding of numeric data string.

Byte compaction mode

: Permits all 256 possible 8-bit byte values to be encoded. This includes all ASCII characters value from 0 to 127 inclusive and provides for international character set support.

In the specification of MicroPDF417, the initial compaction mode in effect at the start of each symbol shall always be Byte compaction mode. You can change the initial compaction mode by using the

DefaultEncodeMode and DefaultTextEncodeMode

properties, in order to macth the reader. If the poMicroPDF417Explicit901

value is included in the Options

property, a mode latch to Byte compaction mode " \901 " will be explicitly inserted into beginning of barcode text, in order to work with any reader.

The compaction mode will be switched automatically in a MicroPDF417 symbol in order to minimize the symbol size. Also, you can manually switch the code set by using escape sequences " \900 ", " \901 ", " \902 ", and " \924 ". See also the "Escape sequences" section below.

The FNC1 characters can be encoded for compatibility with some existing applications. There are two mode FNC1 characters to identify symbols encoding messages formatted according to specific predefined industry or application specifications, also the

FNC1 character can be used as the data field separator:

First position mode

: FNC1 in this mode indicator identifies symbols encoding data formatted according to the GS1

Application Identifiers standard. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode text.

52

2D Barcode FMX Components User Manual

If any one of escape sequences in " \903 ", " \904 " and " \905 " followed by an Application Identifier (2 or more digits) is placed at beginning of barcode text, it represents a leading FNC1 character in "First position" mode, and implies a mode latch to Text compaction mode or Numeric compaction mode. See also the "Escape sequences" section below.

Also, you can place an escape sequence \f " followed by an Application Identifier (2 or more digits) at beginning of barcode text instead of the " \903 ", " \904 " or " \905 " escape sequence followed by the Application Identifier, to place the FNC1 character in

"First position" mode. The component will automatically select one of escape sequences from " \903 ", " \904 " and " \905 " depending on on the barcode text, in order to minimize the symbol size.

The escape sequences " \906 ", " \907 ", " \912 ", " \914 " and " \915 " can be placed the FNC1 character in "First position" mode too.

See also the "Escape sequences" section below.

Second position mode

: FNC1 in this mode indicator identifies symbols formatted in accordance with specific industry or application specifications previously agreed with AIM International. It is immediately followed by an application indicator assigned to identify the specification concerned by AIM International. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode. An application indicator may take the form of any single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number.

If any one of escape sequences in " \908 " and " \909 " followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) is placed at beginning of barcode text, it represents a leading

FNC1 character in "Second position" mode, and implies a mode latch to Text compaction mode or Numeric compaction mode.

See also the "Escape sequences" section below.

Data field separator

: The FNC1 character may also be used as a data field separator (i.e. at the end of a variable-length data field), in which case it will be represented in the transmitted message as GS character (ASCII value 29). The data field separator shall not be placed at beginning of barcode text.

If any one of escape sequences in " \903 ", " \904 " and " \905 " is placed in the barcode text, but not at beginning of the barcode text, it represents a data field separator, and implies a mode latch to Text compaction mode or Numeric compaction mode. See also the "Escape sequences" section below.

Also, you can use the escape sequence " \f " instead of the " \903 ", " \904 " or " \905 " to placed the FNC1 character as the data field separator. The component will automatically select one of escape sequences from " \903 ", " \904 " and " \905 " based on the barcode text, in order to minimize the symbol size.

The appearance of an adjacent pair of repeated " \903 ", " \904 " or " \905 " escape sequences will cause the decoder to divide the transmission at that point, but without transmitting the two implied GS (ASCII value 29) characters themselves.

The ECI indicator blocks can be encoded for the standardized encoding of message interpretation information. The escape sequence " \e[<ECI_Numnerm>] " can be used to place the ECI indicator block to barcode text. See also the "Extended Channel

Interpretation (ECI)" section below.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\5

: Insert a 05 macro to barcode text. It's used to abbreviate the industry specific header " [)>{RS}05{GS} " and trailer " {RS}{EOT} ", in order to reduce the size of symbol. It must only be placed once at beginning of the barcode text and it shall not be used in conjunction with a series of structured append symbols.

\6

: Insert a 06 macro to barcode text. It's used to abbreviate the industry specific header " [)>{RS}06{GS} " and trailer " {RS}{EOT} ", in order to reduce the size of symbol. It shall only be placed once at beginning of the barcode text and it shall not be used in conjunction with a series of structured append symbols.

\r

: Instructs the reader to interpret the data contained within the MicroPDF417 symbol as programming for reader initialisation. It shall only be placed once at beginning of the barcode text. In the case of a structured append initialisation sequence, it shall appear in every symbol.

\e[<ECI_Numnerm>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

53

54

2D Barcode FMX Components User Manual

\f

: Insert a FNC1 character either in "First position" mode or as a data field separator, to the barcode text. One of " \903 ", " \904 ", and " \905 " will be automatically selected instead of the " \f ", to insert to the symbol, depending on the barcode text. If it's placed at beginning of barcode text, it represents a FNC1 character in "First position" mode, otherwise, it represents a data field separator.

See also the "Character set" section above.

Note, when the " poFirstFNC1MatchAI01

" is included in the value of Options

property, if the " \f " followed by a SSC-14 number

(including Application Identifier 01 and 13-digit data, the checkdigit isn't required) is placed at beginnig of barcode text, the " \905 " will be selected to encode the FNC1 character in order to reduce the symbol size (the leading Application Identifier 01 is not encoded in the SSC-14 number).

structured append control block to barcode text in order to create the structured append symbol. See also the "Structured append" section below.

\,

: Insert a comma to File name, Sender or Address field in the structured append control block. It shall only be placed in these fields of structured append control. See also the "Structured append" section below.

\t

: Structured append terminator. If the segment count is unused in the structured append control block of a structured append symbols set, this terminator is required in last symbol within the set of the structured append symbols. Otherwise, it's optional.

See also the "Structured append" section below.

\<nnn>

: Insert a function codeword. This "

<nnn>

" can be one of these values:

900

: Manually places a mode latch to Text compaction mode.

901

: Manually places a mode latch to Byte compaction mode. It shall be used when the total number of subsequent bytes to be encoded is not a multiple of 6, otherwise, it will be changed to " \924 " automatically by the component.

902

: Manually places a mode latch to Numeric compaction mode.

903

: If it's placed at beginning of barcode text, it represents a leading FNC1 character in "First position" mode and indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3). Also it implies a mode latch to Mixed sub-mode of Text compaction mode.

If it's placed in the barcode text, but not at beginning of the barcode text, it represents an FNC1 character as field separator, and implies a mode latch to Alpha sub-mode of Text compaction mode.

904

: If it's placed at beginning of barcode text, it represents a leading FNC1 character in "First position" mode and indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3). Also it implies a mode latch to Numeric compaction mode.

If it's placed in the barcode text, but not at beginning of the barcode text, it represents an FNC1 character as field separator, and implies a mode latch to Mixed sub-mode of Text compaction mode.

905

: If the " \905 " followed by 13 required digits is placed at beginning of barcode text, it represents a leading FNC1 character in "First position" mode and encodes a SCC-14 number together with subsequent 13 digits (the Application Identifier 01 is implied and the last checkdigit isn't required). It indicates that the MicroPDF417 symbol's data output shall conform with the

Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3). Also it implies a mode latch to Numeric compaction mode.

If the it is placed in the barcode text, but not at beginning of the barcode text, it represents an FNC1 character as field separator, and implies a mode latch to Numeric compaction mode.

906

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Mixed sub-mode of Text compaction mode. It not only indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also indicates that a linear symbol printed below the symbol is "linked" to the data of the symbol.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

907

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Numeric compaction mode. it

2D Barcode FMX Components User Manual

not only indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also indicates that a linear symbol printed below the symbol is "linked" to the data of the symbol.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

908

: The " \908 " followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) represents a leading FNC1 character in "Second position" mode, and indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (used by AIM Global, the symbology identifier prefix is set to ]C2 or ]L4). Also it implies a mode latch to Mixed sub-mode of Text compaction mode.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

909

: The " \909 " followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) represents a leading FNC1 character in "Second position" mode, and indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (used by AIM Global, the symbology identifier prefix is set to ]C2 or ]L4). Also it implies a mode latch to Numeric compaction mode.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

910

: It indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (standard data package, the symbology identifier prefix is set to ]C0 or ]L5), and implies a mode latch to Mixed sub-mode of Text compaction mode.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

911

: It indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (standard data package, the symbology identifier prefix is set to ]C0 or ]L5), and implies a mode latch to Numeric compaction mode.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

912[AAYYMMDDBB]

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Numeric compaction mode. Not only does it indicate that the MicroPDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also it encodes that the data begins with a 6-digit date field (Application Identifier is 11, 13, 15, or 17), and this date field may be followed by an implied

Application Identifier 10 or 21 as well:

AA

: Application Identifier of the 6-digit data field. It can be one of 11, 13, 15, or 17.

YY

: Year of the 6-digit data field.

MM

: Month of the 6-digit data field.

DD

: Day of the 6-digit data field.

BB

: An optional Application Identifier that follows the 6-digit data field. It can be one of 10 or 21.

For example:

\912[1199010721]

Also, You can encode the 6-digit date field and the subsequent Application Identifier by yourself:

\912994071

You can explicitly insert a mode latch to Numeric compaction mode after the " \912 " by using the " ":

\912[

-

1199010721]

\912[

-

]994071

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

55

2D Barcode FMX Components User Manual

OnInvalidDataChar

event will occur.

914

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Numeric compaction mode. It not only indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also indicates that the data begins with an implied

Application Identifier is 10.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

915

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Numeric compaction mode. it not only indicates that the MicroPDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also indicates that the data begins with an implied

Application Identifier is 21.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

916

: Insert a 05 macro to barcode text. It shall only be placed once at beginning of the barcode text and it shall not be used in conjunction with a series of structured append symbols. It's completely equivalent to escape sequence " \5 ".

917

: Insert a 06 macro to barcode text. It shall only be placed once at beginning of the barcode text and it shall not be used in conjunction with a series of structured append symbols. It's completely equivalent to escape sequence " \6 ".

918

: It shall be used as a linkage flag to signal the presence of an associated linear component in a composite symbol (other than an ECC.UCC composite symbol). The " \918 " may be placed anywhere in the barcode text.

919

: Reserved.

920

: It shall be used as a linkage flag to signal the presence of an associated linear component in an ECC.UCC composite symbol. The " \920 " may be placed anywhere in the barcode text.

921

: Instructs the reader to interpret the data contained within the MicroPDF417 symbol as programming for reader initialisation. It only shall be placed once at beginning of the barcode text. In the case of a structured append initialisation sequence, it shall appear in every symbol. It's completely equivalent to escape sequence " \r ".

924

: Manually places a mode latch to Byte compaction mode. It shall be used when the total number of subsequent bytes to be encoded is an integer multiple of 6, otherwise, it will be changed to " \901 " automatically by the component.

For some reader, the meanings of some function codewords don't conform with the MicroPDF417 specification. You can use the

Options

property to change the meanings of these fucntion codewords, in order to match the reader.

Note, the " {RS} " is ASCII character RS (ASCII value 30), the " {EOT} " is ASCII character EOT (ASCII value 4).

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Five broad types of interpretations are supported in MicroPDF417:

International character sets (or code pages).

General purpose interpretations such as encryption and compaction.

User defined interpretations for closed systems.

Transmission of control information for structured append.

Transmission of uninterpreted MicroPDF417 codewords.

The ECI is identified by an integer (up to 6 digits) which is encoded in the MicroPDF417 by the ECI indicator block. The escape sequence " \e[<ECI_Number>] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 999999 (including the boundaries), the leading zero is optional.

ECI indicator blocks may be placed anywhere in the barcode text in a single or structured append set of MicroPDF417 symbols. For

56

2D Barcode FMX Components User Manual

example:

ABC

\e[123]

DEFabc

\e[000003]

def

Normally, the sub-mode invoked immediately prior to the ECI escape sequence is preserved for the encodation immediately after it.

Thus, sub-mode latches and shifts are preserved across an ECI escape sequence; and thus a sub-mode shift immediately before an

ECI escape sequence is not ignored. If the value " poIgnoreShiftBeforeECI " is included in the

Options

property, the sub-mode shift immediately before an ECI escape sequence is ignored, but a sub-mode latch immediately before an ECI escape sequence is never ignored.

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Structured append

Structured append provides a mechanism for the data in a file too large to be split into blocks and be represented in more than one

MicroPDF417 symbol. Up to 99999 individual MicroPDF417 symbols may be used to encode data in structured append.

Structured append symbols differ from ordinary MicroPDF417 symbols in that they contain additional control information in a structured append control block. The control block defines the file ID, the concatenation sequence and optionally other information about the file. structured append decoder uses the control block's information to reconstruct the file correctly independently of symbol scanning order. The escape sequence " \s[<Index>, <File_ID>, <File_Name>, <Amount>, <Time_Stamp>, <Sender>, <Address>,

<File_Size>, <Checksum>] " is used to place the structured append control block to the barcode text:

Index

: The position index of the symbol within the set set of MicroPDF417 symbols in the structured append format. It's an integer between 1 and 999999 (including the boundaries) in decimal string format. Note, the field is required.

File_ID

: The file ID. It is a variable length numeric sequence which contains one or more triads of digits. Each triad of digits is an integer between 000 to 899 (the leading zero is required), in decimal string format. For each related structured append symbol, the file ID should be specified using the same numeric sequence. This ensures that all reassembled symbol data belongs to the same distributed file representation. Note, the field is required.

File_Name

: The file name. It's a text string with an implied reset to ECI 000002. The ECI escape sequences may be used in order to set a different ECI within the field. Note, the field is optional.

Amount

: The segment count (identifying the total number of structured append symbols in the distributed file). It's an integer between 2 and 99999 (including the boundaries) in decimal string format. Note, the field is optional, if it's used, that field shall appear in every segment.

Time_Stamp

: The time stamp. It indicates the time stamp on the source file. It's a GMT time in "

yyyy-mm-dd hh:nn:ss

" format:

yyyy

: 4-digit year.

mm

: 2-digit month, the leading zero is optional.

dd

: 2-digit day, the leading zero is optional.

hh

: 2-digit hour in 24 hours format, the leading zero is optional.

nn

: 2-digit minute, the leading zero is optional.

ss

: 2-digit second, the leading zero is optional.

Note, entire time portion or the minute and second portion are optional, i.e. the "

yyyy-mm-dd

", "

yyyy-mm-dd hh

", and "

yyyy-mmdd hh:nn

" formats are valid. If the hour, minute or second portion is not included, they defaults to 00.

Sender

: The sender, It's a text string with an implied reset to ECI 000002. The ECI escape sequences may be used in order to set a different ECI within the field. Note, the field is optional.

Address

: The address, It's a text string with an implied reset to ECI 000002. The ECI escape sequences may be used in order to set a different ECI within the field. Note, the field is optional.

File_Size

: The file size. It's an integer in decimal string format, and indicates the size in bytes of the entire source file. Note, the field is optional.

57

2D Barcode FMX Components User Manual

Checksum

: The checksum, It's an integer value of the 16-bit (2 bytes) CRC checksum using the CCITT-16 polynomial computed over the entire source file, in decimal string format. You can use the

GetCheckSum

method to calculate the checksum for a source file. Note, the field is optional.

The ECI escape sequences, " \900 ", " \901 ", " \902 ", and " \924 " can be used in the File_Name, Sender and Address fields. If you want place the comma in these fields, please use the escape sequence " \, " instead.

An empty string indicates an unused optional field, the subsequent comma can be omitted if all fields of succeeding are unused.

otherwise, the comma is required. All unused fields at the end can be omitted.

The control block may only be placed once in the barcode text. Also, it shall be placed at end of the barcode text. The OnInvalidChar

or

OnInvalidDataChar

event will occur if the control block be placed more than once or it isn't placed at end of the barcode text.

The following is an example of structured append symbol:

Position index: 2

File ID: 001 287 023

File name: Unused

Segment count: 5

Time stame: 05:30:00 GMT on 3 December, 2008

Sender: Unused

Address: USA

File size: Unused

Checksum: Unused

ABCDEFGHIJKLMN

\s[2,001287023,,5,2008-12-03 05:30:00,,USA]

Note, if the segment count is unused, a structured append terminator, " \t " escape sequence is required in last symbol within the set of structured append symbols. Otherwise, it's optional. The " \t " escape sequence shall be placed at the end of the barcode text, after the structured append control block. For example:

ABCDEFGHIJKLMN \s[5,001287023]

\t

The

AllowEscape

property should be set to true in order to place the structured append control block and the terminator.

58

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

MinSize

MaxSize

StretchOrder

RowHeight

DefauldEncodeMode

DefauldTextEncodeMode

UseECIDescriptor

Options

AllowEscape

CurrentSize

(Read only)

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

GetCheckSum

4.1.11 TBarcodeFmx2D_MicroQRCode

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the Micro QR Code barcode symbols. It's defined in the pfmxMicroQRCode unit.

Micro QR Code is a very small QR Code

that fits applications that require a smaller space and use smaller amounts of data, such as ID of printed circuit boards and electronics parts, etc. The efficiency of data encoding has been increased with the use of only one position detection pattern.

Micro QR Code is a two-dimensional matrix symbology. It is not capable of storing much data. However, because it can store data for each symbol size more efficiently than QR Code, the size of Micro QR Code symbols does not significantly increase, even though the amount of data is increased.

The Micro QR Code was created by Toyota subsidiary Denso-Wave in 1994.

59

2D Barcode FMX Components User Manual

Error checking and correcting (ECC)

There are three user-selectable levels of error correction, as shown in following table, offering the capability of recovery from the amounts of damage in the table:

Values of ECCLevel property

elLowest elMedium elQuality

ECC levels

L

M

Q

Recevory capacities (%) (approx.)

7

15

25

You can use the

ECCLevel

property to specify the error correction code level for a Micro QR Code symbol. It can be one of these values: elLowest , elMedium , and elQuality , corresponding to the error checking and correcting levels L, M, and Q. These values are defined in the pfmxMicroQRCode unit.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error

correction code level specified by the ECCLevel

property (see also the "Symbol sizes" section below). In other words, only the

remaining capacity in current symbol size will be used to upgrade the error correction code level. The property CurrentECCLevel

can be used to get the factual error correction code level.

Note, for version 1 Micro QR Code symbols, the error checking and correcting capacity is limited to error detection only. See also the

"Symbol sizes" section below.

Symbol sizes

There are four sizes of Micro QR Code symbol, referred to as version 1 to 4, in increasing order of data capacity. You can use the

MinVersion

and the

MaxVersion

properties to specifiy the minimum and maximum sizes for a Micro QR Code symbol. They can be one of values from 1 to 4 (defined in the pfmxMicroQRCode unit), corresponding to the versions 1 to 4. The smallest symbol size that

accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes. The CurrentVersion

property can be used to get the factual symbol size.

The symbol sizes and the maximum data capacity of each version are listed in following table:

Version

1

2

3

4

Symbol size (modules)

11 * 11

13 * 13

15 * 15

17 * 17

ECC level

M

L

L

L

M

L

M

Q

Data capacities

Numeric mode Alphanumeric mode Byte mode Kanji mode

5

10

8

23

18

35

30

21

-

6

5

14

11

21

18

13

-

9

-

-

7

15

13

9

-

6

-

-

4

9

8

5

If the barcode text does not fill the maximum data capacity of the Micro QR Code symbol, remaining data capacity of the symbol will be filled by using PAD characters. If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by

the MaxVersion

property, an

OnInvalidLength

or OnInvalidDataLength

event will occur.

Quiet zones

The minimum quiet zone is equal to 2 modules on all four sides. So the minimum values of LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties are equal to 2.

Character set

All 8-bit values can be encoded. The default interpretation shall be:

For values 0 to 127, in accordance with the U.S. national version of ISO/IEC 646 (ASCII).

For values 128 - 255, in accordance with ISO/IEC 8859-1 (Extended ASCII).

Encoding modes

60

2D Barcode FMX Components User Manual

Micro QR Code has four encoding modes as Numeric mode, Alphanumeric mode, Kanji mode and Byte mode respectively in decreasing order of encoding density. All 256 8-bits value are encoded by switching automatically between all 4 (the

AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode

property is set to false) encoding modes. The character sets in each mode are listed in the following:

Numeric mode

: Encodes data from the decimal digit set (0 to 9, byte values 48 to 57).

Alphanumeric mode

: Encodes data from a set of 45 characters, i.e. 10 numeric digits (0 to 9) (byte values 48 to 57), 26 alphabetic characters (A - Z) (byte values 65 to 90) , and 9 symbols (SP, $, %, *, +, -, ., /, :) (byte values 32, 36, 37, 42, 43, 45 to

47, 58 respectively).

Note, alphanumeric mode is not available in version 1 Micro QR Code symbols.

Byte mode

: All 8-bit values can be encoded.

Note, Byte mode is not available in version 1 or 2 Micro QR Code symbols.

Kanji mode

: The Kanji mode efficiently encodes Kanji characters in accordance with the Shift JIS system based on JIS X 0208.

The Shift JIS values are shifted from the JIS X 0208 values. JIS X 0208 gives details of the shift coded representation.

It may be possible to achieve a smaller symbol size by using the Kanji mode compaction rules when an appropriate sequence of

byte values occurs in the data. You can set the AllowKanjiMode

property to false in order to disable the Kanji mode.

Note, Kanji mode is not available in version 1 or 2 Micro QR Code symbols.

The EncodePolicy

property indicates how to use these encoding mode by the component. This property can be one of these values

(defined in the pfmxMicroQRCode unit):

epMixingOptimal

: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The optimal

combination of encoding modes will be used in order to minimize the symbol size.

epMixingQuick

: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode

property is set to

true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The combination of

encoding modes may not be the optimal one, in order to optimize encoding speed.

epSingleMode

: The encoding mode will be selected automatically and applied to entire symbol, based on the barcode text, in other words, the barcode text to be encoded will be analysed, and an appropriates lowest level (highest encoding density) encoding mode will be selected, in order to minimize the symbol size, and the encoding mode will not be switched in the sybmol.

Note, the Kanji mode will not be used if the AllowKanjiMode

property is set to false.

61

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Inversed

Mirrored

EncodePolicy

MaxSliceLen

MinVersion

MaxVersion

ECCLevel

ECCLevelUpgrade

AllowKanjiMode

CurrentVersion

(Read only)

CurrentECCLevel

(Read only)

4.1.12 TBarcodeFmx2D_PDF417

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the PDF417 Barcode symbols. It is defined in the pfmxPDF417 unit.

PDF417 is a continuous, stacked 2D linear barcode symbol format used in a variety of applications, primarily transport, identification cards, and inventory management. PDF stands for Portable Data File. It can encode all 8-bit values.

The PDF417 symbology was invented by Dr. Ynjiun P. Wang at Symbol Technologies in 1991.

Symbol size

Each PDF417 symbol consists of a stack of vertically aligned rows with a minimum of 3 rows (maximum 90 rows). Each stacked row

62

2D Barcode FMX Components User Manual

shall include a minimum of 1 symbol character column (maximum 30 symbol character columns), excluding start, stop and row indicator columns. They are defined in the pfmxPDF417Custom

unit. The RowHeight

property can be used to specify the height for each stacked row, in modules. See diagram:

You can use the MinRows

and the MaxRows

properties to specifiy the minimum and maximum number of stacked rows for a PDF417

symbol. And use the MinColumns

and the MaxColumns properties to specifiy the minimum and maximum number of symbol character

columns for it. In other words, the MinRows

and

MinColumns

properties specify a minimum symbol size, and the

MaxRows

and

MaxColumns

properties specify a maximum symbol size. According to the priority order specified by the StretchOrder

property, the first symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

You can use the

CurrentRows

property to get the factual number of stacked rows. And use the CurrentColumns

property to get the factual number of columns.

If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by the MaxRows

and the

MaxColumns

properties, an OnInvalidLength

or OnInvalidDataLength

event will occur.

Quiet zones

The symbol shall include a quiet zone on all four sides. The minimum quiet zone is equal to 4 modules on all four sides. So the minimum values of

LeadingQuietZone

, TrailingQuietZone

, TopQuietZone

, and BottomQuietZone

properties are equal to 4.

Error checking and correcting (ECC)

PDF417 symbols offer 9 levels of error correction, referred to as ECC 0 to ECC 8 respectively in increasing order of recovery capacity.

You can use the

ECCLevel

property to specify the error correction code level for a PDF417 symbol. It can be one of values from elEcc_0 to elEcc_8 , corresponding to error correction code level from ECC 0 to ECC 8. They are defined in the pfmxPDF417Custom unit.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased, it may be determined based on the length of barcode text, and the error correction code level specified by the

ECCLevel

property, in other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level. The

CurrentECCLevel

property can be used to get the factual error correction code level.

Character set

All 8-bit values can be encoded. The default interpretation shall be:

For values 0 to 127, in accordance with the U.S. national version of ISO/IEC 646 (ASCII).

For values 128 - 255, in accordance with ISO/IEC 8859-1 (Extended ASCII).

This interpretation corresponds to ECI 000003.

PDF417 has three unique data compaction modes as Text compaction mode, Numeric compaction mode, and Byte compaction mode. All 8-bit values are encoded by switching internally between all 3 compaction modes:

Text compaction mode

: Permits all printable ASCII characters, i.e. ASCII values from 32 to 126 inclusive accordance with

ISO/IEC 646, as well as selected control characters (CR, HT, and LF).

The mode has four sub-modes:

Alpha

: Uppercase letters and space.

Lower

: Lowercase letters and space.

Mixed

: Numeric and some punctuations.

63

64

2D Barcode FMX Components User Manual

Punctuation

: Some punctuations.

The sub-mode will be switched automatically in order to minimize the symbol size.

Numeric compaction mode

: Permits efficient encoding of numeric data string.

Byte compaction mode

: Permits all 256 possible 8-bit byte values to be encoded. This includes all ASCII characters value from 0 to 127 inclusive and provides for international character set support.

The compaction mode will be switched automatically in a PDF417 symbol in order to minimize the symbol size. Also, you can manually switch the code set by using escape sequences " \900 ", " \901 ", " \902 ", and " \924 ". See also the "Escape sequences" section below.

The FNC1 characters can be encoded for compatibility with some existing applications. There are two mode FNC1 characters to identify symbols encoding messages formatted according to specific predefined industry or application specifications, also the

FNC1 character can be used as the data field separator:

First position mode

: FNC1 in this mode indicator identifies symbols encoding data formatted according to the GS1

Application Identifiers standard. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode text.

If any one of escape sequences in " \903 ", " \904 " and " \905 " followed by an Application Identifier (2 or more digits) is placed at beginning of barcode text, it represents a leading FNC1 character in "First position" mode, and implies a mode latch to Text compaction mode or Numeric compaction mode. See also the "Escape sequences" section below.

Also, you can place an escape sequence " \f " followed by an Application Identifier (2 or more digits) at beginning of barcode text instead of the " \903 ", " \904 " or " \905 " escape sequence followed by the Application Identifier, to place the FNC1 character in "First position" mode. The component will automatically select one of escape sequences from " \903 ", " \904 " and " \905 " depending on the barcode text, in order to minimize the symbol size.

The escape sequences " \906 ", " \907 ", " \912 ", " \914 " and " \915 " can be placed the FNC1 character in "First position" mode too.

See also the "Escape sequences" section below.

Second position mode

: FNC1 in this mode indicator identifies symbols formatted in accordance with specific industry or application specifications previously agreed with AIM International. It is immediately followed by an application indicator assigned to identify the specification concerned by AIM International. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode. An application indicator may take the form of any single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number.

If any one of escape sequences in " \908 " and " \909 " followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) is placed at beginning of barcode text, it represents a leading

FNC1 character in "Second position" mode, and implies a mode latch to Text compaction mode or Numeric compaction mode.

See also the "Escape sequences" section below.

Data field separator

: The FNC1 character may also be used as a data field separator (i.e. at the end of a variable-length data field), in which case it will be represented in the transmitted message as GS character (ASCII value 29). The data field separator shall not be placed at beginning of barcode text.

If any one of escape sequences in " \903 ", " \904 " and " \905 " is placed in the barcode text, but not at beginning of the barcode text, it represents a data field separator, and implies a mode latch to Text compaction mode or Numeric compaction mode. See also the "Escape sequences" section below.

Also, you can use the escape sequence " \f " instead of the " \903 ", " \904 " or " \905 " to placed the FNC1 character as the data field separator. The component will automatically select one of escape sequences from " \903 ", " \904 " and " \905 " depending on the barcode text, in order to minimize the symbol size.

The appearance of an adjacent pair of repeated " \903 ", " \904 " or " \905 " escape sequences will cause the decoder to divide the transmission at that point (but without transmitting the two implied GS (ASCII value 29) characters themselves).

The ECI indicator blocks can be encoded for the standardized encoding of message interpretation information. The escape sequence " \e[<ECI_Numnerm>] " can be used to place the ECI indicator block to barcode text. See also the "Extended Channel

Interpretation (ECI)" section below.

2D Barcode FMX Components User Manual

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\5

: Insert a 05 macro to barcode text. It's used to abbreviate the industry specific header " [)>{RS}05{GS} " and trailer " {RS}{EOT} ", in order to reduce the size of symbol. It must only be placed once at beginning of the barcode text and it shall not be used in

Macro PDF417 symbols.

\6

: Insert a 06 macro to barcode text. It's used to abbreviate the industry specific header " [)>{RS}06{GS} " and trailer " {RS}{EOT} ", in order to reduce the size of symbol. It shall only be placed once at beginning of the barcode text and it shall not be used in

Macro PDF417 symbols.

\r

: Instructs the reader to interpret the data contained within the PDF417 symbol as programming for reader initialisation. It shall only be placed once at beginning of the barcode text. In the case of a Macro PDF417 initialisation sequence, it shall appear in every symbol.

\e[<ECI_Numnerm>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

\f

: Insert a FNC1 character either in "First position" mode or as a data field separator, to the barcode text. One of " \903 ", " \904 ", and " \905 " will be automatically selected instead of the " \f ", to insert to the symbol, depending on the barcode text. If it's placed at beginning of barcode text, it represents a FNC1 character in "First position" mode, otherwise, it represents a data field separator.

See also the "Character set" section above.

Note, When the " poFirstFNC1MatchAI01 " is included in the value of

Options

property, if the " \f " followed by a SSC-14 number

(including Application Identifier 01 and 13-digit data, the checkdigit isn't required) is placed at beginnig of barcode, the " \905 " will be selected to encode the FNC1 character in order to reduce the symbol size (the leading Application Identifier 01 is not encoded in the SSC-14 number).

additional control information to barcode text in order to create the Marco PDF417 symbol. See also the "Macro PDF417" section below.

\,

: Insert a comma to File name, Sender or Address field of the Marco PDF417 control information. It shall only be placed in these fields of Marco PDF417 control information. See also the "Macro PDF417" section below.

\t

: Marco PDF417 terminator. If the segment count is unused in the control information of a Marco PDF417 symbols set, this terminator is required in last symbol within the set of the Marco PDF417 symbols. Otherwise, it's optional. See also the "Macro

PDF417" section below.

\<nnn>

: Insert a function codeword. This "

<nnn>

" can be one of these values:

900

: Manually places a mode latch to Text compaction mode.

901

: Manually places a mode latch to Byte compaction mode. It shall be used when the total number of subsequent bytes to be encoded is not a multiple of 6, otherwise, it will be change to " \924 " automatically by the component.

902

: Manually places a mode latch to Numeric compaction mode.

903

: If it's placed at beginning of barcode text, it represents a leading FNC1 character in "First position" mode and indicates that the PDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3). Also it implies a mode latch to Mixed sub-mode of Text compaction mode.

If it's placed in the barcode text, but not at beginning of the barcode text, it represents an FNC1 character as field separator, and implies a mode latch to Alpha sub-mode of Text compaction mode.

904

: If it's placed at beginning of barcode text, it represents a leading FNC1 character in "First position" mode and indicates that the PDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3). Also it implies a mode latch to Numeric compaction mode.

65

66

2D Barcode FMX Components User Manual

If it's placed in the barcode text, but not at beginning of the barcode text, it represents an FNC1 character as field separator, and implies a mode latch to Mixed sub-mode of Text compaction mode.

905

: If the " \905 " followed by 13 required digits is placed at beginning of barcode text, it represents a leading FNC1 character in "First position" mode and encodes a SCC-14 number together with subsequent 13 digits (the Application Identifier 01 is implied and the last checkdigit isn't required). It indicates that the PDF417 symbol's data output shall conform with the

Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3). Also it implies a mode latch to Numeric compaction mode.

If the it is placed in the barcode text, but not at beginning of the barcode text, it represents an FNC1 character as field separator, and implies a mode latch to Numeric compaction mode.

906

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Mixed sub-mode of Text compaction mode. It not only indicates that the PDF417 symbol's data output shall conform with the Code128 specification

(UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also indicates that a linear symbol printed below the symbol is "linked" to the data of the symbol.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

907

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Numeric compaction mode. It not only indicates that the PDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also indicates that a linear symbol printed below the symbol is "linked" to the data of the symbol.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

908

: The " \908 " followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) represents a leading FNC1 character in "Second position" mode, and indicates that the PDF417 symbol's data output shall conform with the Code128 specification (used by AIM Global, the symbology identifier prefix is set to ]C2 or

]L4). Also it implies a mode latch to Mixed sub-mode of Text compaction mode.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

909

: The " \909 " followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) represents a leading FNC1 character in "Second position" mode, and indicates that the PDF417 symbol's data output shall conform with the Code128 specification (used by AIM Global, the symbology identifier prefix is set to ]C2 or

]L4). Also it implies a mode latch to Numeric compaction mode.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

910

: It indicates that the PDF417 symbol's data output shall conform with the Code128 specification (standard data package, the symbology identifier prefix is set to ]C0 or ]L5), and implies a mode latch to Mixed sub-mode of Text compaction mode.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

911

: It indicates that the PDF417 symbol's data output shall conform with the Code128 specification (standard data package, the symbology identifier prefix is set to ]C0 or ]L5), and implies a mode latch to Numeric compaction mode.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

912[AAYYMMDDBB]

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Numeric compaction mode. Not only does it indicate that the PDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also it encodes that the data begins with a 6-digit date field (Application Identifier is 11, 13, 15, or 17), and this date field may be followed by an implied

Application Identifier 10 or 21 as well:

2D Barcode FMX Components User Manual

AA

: Application Identifier of the 6-digit data field. It can be one of 11, 13, 15, or 17.

YY

: Year of the 6-digit data field.

MM

: Month of the 6-digit data field.

DD

: Day of the 6-digit data field.

BB

: An optional Application Identifier that follows the 6-digit data field. It can be one of 10 or 21.

For example:

\912[1199010721]

Also, You can encode the 6-digit date field and the subsequent Application Identifier by yourself:

\912994071

You can explicitly insert a mode latch to Numeric compaction mode after the " \912 " by using the " ":

\912[

-

1199010721]

\912[

-

]994071

The escape sequence shall only be placed once at beginning of barcode text, otherwise the OnInvalidChar

or

OnInvalidDataChar

event will occur.

914

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Numeric compaction mode. It not only indicates that the PDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also indicates that the data begins with an implied

Application Identifier is 10.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

915

: It represents a leading FNC1 character in "First position" mode and implies a mode latch to Numeric compaction mode. it not only indicates that the PDF417 symbol's data output shall conform with the Code128 specification (UCC/EAN-128 emulation, the symbology identifier prefix is set to ]C1 or ]L3), but also indicates that the data begins with an implied

Application Identifier is 21.

The escape sequence shall only be placed once at beginning of barcode text, otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur.

916

: Insert a 05 macro to barcode text. It shall only be placed once at beginning of the barcode text and it shall not be used in

Macro PDF417 symbols. It's completely equivalent to escape sequence " \5 ".

917

: Insert a 06 macro to barcode text. It shall only be placed once at beginning of the barcode text and it shall not be used in

Macro PDF417 symbols. It's completely equivalent to escape sequence " \6 ".

918

: It shall be used as a linkage flag to signal the presence of an associated linear component in a composite symbol (other than an ECC.UCC composite symbol). The " \918 " may be placed anywhere in the barcode text.

919

: Reserved.

920

: It shall be used as a linkage flag to signal the presence of an associated linear component in an ECC.UCC composite symbol. The " \920 " may be placed anywhere in the barcode text.

921

: Instructs the reader to interpret the data contained within the PDF417 symbol as programming for reader initialisation. It only shall be placed once at beginning of the barcode text. In the case of a Macro PDF417 initialisation sequence, it shall appear in every symbol. It's completely equivalent to escape sequence " \r ".

924

: Manually places a mode latch to Byte compaction mode. It shall be used when the total number of subsequent bytes to be encoded is an integer multiple of 6, otherwise, it will be changed to " \901 " automatically by the component.

For some reader, the meanings of some function codewords don't conform with the PDF417 specification. You can use the

Options

property to change the meanings of these fucntion codewords, in order to match the reader.

67

2D Barcode FMX Components User Manual

Note, the " {RS} " is ASCII character RS (ASCII value 30), the " {EOT} " is ASCII character EOT (ASCII value 4).

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Five broad types of interpretations are supported in PDF417:

International character sets (or code pages).

General purpose interpretations such as encryption and compaction.

User defined interpretations for closed systems.

Transmission of control information for Macro PDF417.

Transmission of uninterpreted PDF417 codewords.

The ECI is identified by an integer (up to 6 digits) which is encoded in the PDF417 by the ECI indicator block. The escape sequence

" \e[<ECI_Number>] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 999999 (including the boundaries), the leading zero is optional.

ECI indicator blocks may be placed anywhere in the barcode text in a single or Macro PDF417 set of symbols. For example:

ABC

\e[123]

DEFabc

\e[000003]

def

Normally, the sub-mode invoked immediately prior to the ECI escape sequence is preserved for the encodation immediately after it.

Thus, sub-mode latches and shifts are preserved across an ECI escape sequence; and thus a sub-mode shift immediately before an

ECI escape sequence is not ignored. If the value " poIgnoreShiftBeforeECI " is included in the

Options

property, the sub-mode shift immediately before an ECI escape sequence is ignored, but a sub-mode latch immediately before an ECI escape sequence is never ignored.

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Compact PDF417

In an environment where space considerations are a primary concern and symbol damage is unlikely (e.g. an office), the right row indicators may be omitted and the stop pattern may be reduced to one module width bar. This reduction version is called Compact PDF417, which is fully decoder compatible with standard PDF417.

Note, the Compact PDF417 was referred as Truncated PDF417 in previous standard.

You can set the Compact

property to true in order to generate a Compact PDF417 symbol.

Macro PDF417

Macro PDF417 provides a mechanism for the data in a file too large to be split into blocks and be represented in more than one

PDF417 symbol. This mechanism is similar to the structured append feature in other symbologies. Up to 99999 individual PDF417 symbols may be used to encode data in Macro PDF417.

Each Macro PDF417 symbol shall contain additional control information to enable the original data file to be properly reconstructed, irrespective of the sequence in which the individual PDF417 symbols are scanned and decoded. The escape sequence " \s[<Index>, information to the barcode text:

Index

: The position index of the symbol within the set of Marco PDF417 symbols. It's an integer between 1 and 999999 (including the boundaries) in decimal string format. Note, the field is required.

File_ID

: The file ID. It is a variable length numeric sequence which contains one or more triads of digits. Each triad of digits is an integer between 000 to 899 (the leading zero is required), in decimal string format. For each related Macro PDF417 symbol, the file

ID should be specified using the same numeric sequence. This ensures that all reassembled symbol data belongs to the same distributed file representation. Note, the field is required.

68

2D Barcode FMX Components User Manual

File_Name

: The file name. It's a text string with an implied reset to ECI 000002. The ECI escape sequences may be used in order to set a different ECI within the field. Note, the field is optional.

Amount

: The segment count (identifying the total number of Macro PDF417 symbols in the distributed file). It's an integer between 2 and 99999 (including the boundaries) in decimal string format. Note, the field is optional, if it's used, that field shall appear in every segment.

Time_Stamp

: The time stamp. It indicates the time stamp on the source file. It's a GMT time in "

yyyy-mm-dd hh:nn:ss

" format:

yyyy

: 4-digit year.

mm

: 2-digit month, the leading zero is optional.

dd

: 2-digit day, the leading zero is optional.

hh

: 2-digit hour in 24 hours format, the leading zero is optional.

nn

: 2-digit minute, the leading zero is optional.

ss

: 2-digit second, the leading zero is optional.

Note, entire time portion or the minute and second portion are optional, i.e. the "

yyyy-mm-dd

", "

yyyy-mm-dd hh

", and "

yyyy-mmdd hh:nn

" formats are valid. If the hour, minute or second portion is not included, they defaults to 00.

Sender

: The sender, It's a text string with an implied reset to ECI 000002. The ECI escape sequences may be used in order to set a different ECI within the field. Note, the field is optional.

Address

: The address, It's a text string with an implied reset to ECI 000002. The ECI escape sequences may be used in order to set a different ECI within the field. Note, the field is optional.

File_Size

: The file size. It's an integer in decimal string format, and indicates the size in bytes of the entire source file. Note, the field is optional.

Checksum

: The checksum, It's an integer value of the 16-bit (2 bytes) CRC checksum using the CCITT-16 polynomial computed over the entire source file, in decimal string format. You can use the

GetCheckSum

method to calculate the checksum for a source file. Note, the field is optional.

The ECI escape sequences, " \900 ", " \901 ", " \902 ", and " \924 " can be used in the File_Name, Sender and Address fields. If you want place the comma in these fields, please use the " \, " instead.

An empty string indicates an unused optional field, the subsequent comma can be omitted if all fields of succeeding are unused.

otherwise, the comma is required. All unused fields at the end can be omitted.

The control information may only be placed once in the barcode text. Also, it shall be placed at end of the barcode text. The

OnInvalidChar

or OnInvalidDataChar

event will occur if the control information be placed more than once or it isn't placed at end of the barcode text.

The following is an example of Marco PDF417 symbol:

Position index: 2

File ID: 001 287 023

File name: Unused

Segment count: 5

Time stame: 05:30:00 GMT on 3 December, 2008

Sender: Unused

Address: USA

File size: Unused

Checksum: Unused

ABCDEFGHIJKLMN

\s[2,001287023,,5,2008-12-03 05:30:00,,USA]

Note, if the segment count is unused, a Marco PDF417 terminator, " \t " escape sequence is required in last symbol within the set of

Marco PDF417 symbols. Otherwise, it's optional. The " \t " escape sequence shall be placed at the end of the barcode text, after the

69

2D Barcode FMX Components User Manual

control information. For example:

ABCDEFGHIJKLMN \s[5,001287023]

\t

The

AllowEscape

property should be set to true in order to place the control information and the terminator.

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

MinRows

MaxRows

MinColumn

MaxColumn

StretchOrder

ECCLevel

ECCLevelUpgrade

RowHeight

Compact

Options

AllowEscape

CurrentRows

(Read only)

CurrentColumns

(Read only)

CurrentECCLevel

(Read only)

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

GetCheckSum

4.1.13 TBarcodeFmx2D_QRCode

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

70

2D Barcode FMX Components User Manual

The component is used to create the QR Code barcode symbols. It's defined in the pfmxQRCode unit.

A QR Code is a two-dimensional matrix symbology, readable by QR scanners, mobile phones with a camera, and smartphones. The code consists of black modules arranged in a square pattern on white background. It has position detection patterns on three of its four corners. The information encoded can be text, URL or other data.

Common in Japan, where it was created by Toyota subsidiary Denso-Wave in 1994, the QR Code is one of the most popular types of two-dimensional barcodes. Although initially used for tracking parts in vehicle manufacturing, QR Codes are now used in a much broader context, including both commercial tracking applications and convenience-oriented applications aimed at mobile phone users.

QR is the abbreviation for Quick Response, as the creator intended the code to allow its contents to be decoded at high speed.

Error checking and correcting (ECC)

There are four user-selectable levels of error correction, as shown in following table, offering the capability of recovery from the amounts of damage in the table:

Values of ECCLevel property

elLowest elMedium elQuality elHighest

ECC levels

L

M

Q

H

Recevory capacities (%) (approx.)

7

15

25

30

You can use the

ECCLevel

property to specify the error correction code level for a QR Code symbol. It can be one of these values: elLowest , elMedium , elQuality , and elHighest , corresponding to the error checking and correcting levels L, M, Q, and H. These values are defined in the pfmxRCode unit.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error

correction code level specified by the ECCLevel

property (see also the "Symbol sizes" section below). In other words, only the

remaining capacity in current symbol size will be used to upgrade the error correction code level. The property CurrentECCLevel

can be used to get the factual error correction code level.

Symbol sizes

There are forty sizes of QR Code symbol. referred to as version 1 to 40, in increasing order of data capacity. You can use the

MinVersion

and the MaxVersion

properties to specifiy the minimum and maximum sizes for a QR Code symbol. They can be one of values from 1 to 40 (defined in the pfmxQRCode unit), corresponding to the versions 1 to 40. The smallest symbol size that

accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes. The CurrentVersion

property can be used to get the factual symbol size.

These symbol sizes and the maximum data capacity of each version are listed in following table:

Version

1

2

3

4

Symbol size (modules)

21 * 21

25 * 25

29 * 29

33 * 33

ECC level

H

L

M

Q

H

H

L

M

Q

H

L

M

Q

L

M

Q

Data capacities

Numeric mode Alphanumeric mode Byte mode Kanji mode

41 25 17 10

34

127

101

77

34

27

17

77

63

48

58

187

149

111

82

20

77

61

47

20

16

10

47

38

29

35

114

90

67

50

14

53

42

32

14

11

7

32

26

20

24

78

62

46

34

8

32

26

20

8

7

4

20

16

12

15

48

38

28

21

71

72

5

12

13

10

11

8

9

6

7

16

17

14

15

18

19

37 * 37

57 * 57

61 * 61

65 * 65

69 * 69

41 * 41

45 * 45

49 * 49

53 * 53

73 * 73

77 * 77

81 * 81

85 * 85

89 * 89

93 * 93

2D Barcode FMX Components User Manual

Q

H

L

M

Q

Q

H

L

M

H

L

M

Q

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

M

Q

H

L

M

Q

H

L

L

M

Q

H

L

M

Q

H

L

M

M

Q

H

L

775

602

1548

1212

876

674

1725

1346

948

746

1903

1500

1063

621

468

1250

991

703

530

1408

1082

489

374

1022

796

580

427

1101

871

364

288

772

604

427

331

883

691

255

178

139

370

293

207

154

461

255

202

144

106

322

365

259

202

522

432

312

235

652

513

470

365

938

734

531

408

1046

816

574

452

1153

909

644

376

283

758

600

426

321

854

656

296

227

619

483

352

259

667

528

221

174

468

366

259

200

535

419

154

108

84

224

178

125

93

279

154

122

87

64

195

221

157

122

335

262

189

143

395

311

198

154

397

310

224

173

442

345

243

191

488

384

272

159

120

320

254

180

136

361

277

125

96

262

204

149

109

282

223

93

74

198

155

109

85

226

177

75

53

39

118

65

45

36

95

65

52

37

27

82

93

66

52

141

111

80

60

167

131

322

250

644

504

364

280

718

560

394

310

792

624

442

258

194

520

412

292

220

586

450

203

155

425

331

241

177

458

362

151

119

321

251

177

137

367

287

106

74

58

154

122

86

64

192

106

84

60

44

134

152

108

84

230

180

130

98

271

213

29

30

27

28

25

26

23

24

33

34

31

32

20

21

22

97 * 97

101 * 101

105 * 105

125 * 125

129 * 129

133 * 133

137 * 137

109 * 109

113 * 113

117 * 117

121 * 121

141 * 141

145 * 145

149 * 149

153 * 153

2D Barcode FMX Components User Manual

H

L

M

Q

H

L

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

Q

H

L

M

M

Q

H

L

813

3283

2544

1804

1425

3517

2701

1933

1501

3669

2812

2188

1588

1228

3057

2395

1718

1286

2409

1872

1358

1056

2620

2059

1468

1108

2061

1600

1159

919

2232

1708

1224

969

3289

2358

1782

4147

3486

2473

1897

4686

2857

2085

1581

3909

3035

2181

1677

4158

3693

2670

2022

4965

3909

2805

2157

5253

4134

493

1990

1542

1094

864

2132

1637

1172

910

2223

1704

1326

963

744

1853

1451

1041

779

1460

1134

823

640

1588

1248

890

672

1249

970

702

557

1352

1035

742

587

1994

1429

1080

2677

2113

1499

1150

2840

1732

1263

958

2369

1839

1322

1016

2520

2238

1618

1226

3009

2369

1700

1307

3183

2506

208

842

652

462

365

902

692

496

385

940

721

561

407

315

784

614

440

330

618

480

348

270

672

528

376

284

528

410

297

235

572

438

314

248

843

604

457

1132

894

634

486

1201

732

534

405

1002

778

559

430

1066

947

684

518

1273

1002

719

553

1347

1060

338

1367

1059

751

593

1465

1125

805

625

1528

1171

911

661

511

1273

997

715

535

1003

779

565

439

1091

857

611

461

858

666

482

382

929

711

509

403

1370

982

742

1840

1452

1030

790

1952

1190

868

658

1628

1264

908

698

1732

1538

1112

842

2068

1628

1168

898

2188

1722

73

2D Barcode FMX Components User Manual

35

36

37

38

39

40

157 * 157

161 * 161

165 * 165

169 * 169

173 * 173

177 * 177

H

L

M

Q

H

H

L

M

Q

M

Q

H

L

M

Q

Q

H

L

L

M

Q

H

L

M

Q

H

2524

6153

4775

3417

2625

6479

5039

3599

2735

2949

2301

5529

4343

3081

2361

5836

4588

3244

6743

5313

3791

2927

7089

5596

3993

3057

1530

3729

2894

2071

1591

3927

3054

2181

1658

1787

1394

3351

2632

1867

1431

3537

2780

1966

4087

3220

2298

1774

4296

3391

2420

1852

1051

2563

1989

1423

1093

2699

2099

1499

1139

1228

958

2303

1809

1283

983

2431

1911

1351

2809

2213

1579

1219

2953

2331

1663

1273

647

1577

1224

876

673

1661

1292

923

701

756

590

1417

1113

790

605

1496

1176

832

1729

1362

972

750

1817

1435

1024

784

If the barcode text does not fill the maximum data capacity of the QR Code symbol, remaining data capacity of the symbol will be filled by using PAD characters. If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by the

MaxVersion

property, an OnInvalidLength

or

OnInvalidDataLength

event will occur.

Quiet zones

The minimum quiet zone is equal to 4 modules on all four sides. So the minimum values of LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties are equal to 4.

Character set

All 8-bit values can be encoded. The default interpretation shall be:

For values 0 to 127, in accordance with the U.S. national version of ISO/IEC 646 (ASCII).

For values 128 - 255, in accordance with ISO/IEC 8859-1 (Extended ASCII).

This interpretation corresponds to ECI 000003.

The FNC1 characters can be encoded for compatibility with some existing applications. In QR Code symbology, there are two mode FNC1 characters to identify symbols encoding messages formatted according to specific predefined industry or application specifications:

First position

: FNC1 in this mode indicator identifies symbols encoding data formatted according to the GS1 Application

Identifiers standard. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode text, and after any ECI indicator block or structured append block (if exists).

The escape sequence " \t " or " \f " followed by an Application Identifier (2 or more digits), can be used to placed the FNC1 character in "First position" mode to barcode text. For example, the barcode symbol (01)00012345678905 can be represented using any one of following sequences:

\t

01 00012345678905

\f

01 00012345678905

Where the GS1 specifications call for the FNC1 character to be used as a data field separator (i.e. at the end of a variablelength data field), QR Code symbols shall use the GS character (byte value 29) to perform this function. In this case, any one

74

2D Barcode FMX Components User Manual

of " \g ", " \d ", " \t ", and " \f " escape sequences can be used to place the GS character to the barcode text. For example:

\t01 00012345678905 21 512

\f

20 18

Second position

: FNC1 in this mode indicator identifies symbols formatted in accordance with specific industry or application specifications previously agreed with AIM International. It is immediately followed by an application indicator assigned to identify the specification concerned by AIM International. For this purpose, it shall only be used once in a symbol and shall be placed at beginning of the barcode, and after any ECI indicator block or structured append block (if exists). An application indicator may take the form of any single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number.

There are two ways to place a FNC1 character in "Second position" mode:

The escape sequence " \d " followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) can be used to placed the FNC1 character in "Second position" mode to barcode text. For example:

\d

A 0001234567890

\d

01 0001234567890

The escape sequence " \f[<AI>] " can be used to placed the FNC1 character in "Second position" mode to barcode text:

AI

: The application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number).

For example:

\f[ A ]

0001234567890

\f[ 01 ]

0001234567890

Where the application specifications call for the FNC1 character to be used as a data field separator, QR Code symbols shall use the GS character (byte value 29) to perform this function. In this case, any one of " \g ", " \d ", " \t ", and " \f " escape sequences can be used to place the GS character to the barcode text. For example:

\dA 00012345678905 21 512

\g

20 18

Note, the "First position" and "Second position" are not used in a literal sense but is a historical reference to the position of the

FNC1 symbol character in Code 128 symbols.

The ECI indicator blocks can be encoded for the standardized encoding of message interpretation information. The escape sequence " \e[<ECI_Number>] " can be used to place the ECI indicator block to barcode text. See also the "Extended Channel

Interpretation (ECI)" section below.

The

AllowEscape

property should be set to true in order to place the FNC1 characters or the ECI indicator blocks.

Escape sequences

If the AllowEscape

property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:

\\

: Insert a backslash to barcode text.

\f

: Insert a FNC1 character to barcode text. There are three usages:

Insert a FNC1 character in "First position" mode to the barcode text. In this case, it shall only be used once in a symbol and shall be placed at beginning of the barcode text, and after any ECI indicator block or structured append block (if exists), followed by an Application Identifier (2 or more digits). For example:

\f

01 00012345678905

Insert a FNC1 character in "Second position" mode to the barcode text. In this case, it shall only be used once in a symbol and shall be placed at beginning of the barcode text, and after any ECI indicator block or structured append block (if exists), followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number), which is enclosed in square brackets. For example:

75

2D Barcode FMX Components User Manual

\f

[01] 00012345678905

Insert a GS character (ASCII value 29) as the data field separator to the barcode text. In this case, it can be placed anywhere but at beginning of the barcode text. For example:

\t01 00012345678905 21 512

\f

20 18

See also the "Character set" section above.

\t

: Insert a FNC1 character in "First position" mode to barcode text, or insert a GS character (ASCII value 29) as the data field separator to the barcode text. There are two usages:

Insert a FNC1 character in "First position" mode to the barcode text. It's completely equivalent to escape sequence " \f " that inserts the FNC1 character in "First position" mode. In this case, it shall only be used once in a symbol and shall be placed at beginning of the barcode text, and after any ECI indicator block or structured append block (if exists), followed by an

Application Identifier (2 or more digits). For example:

\t

01 00012345678905

Insert a GS character (ASCII value 29) as the data field separator to the barcode text. It's completely equivalent to the escape sequence " \f " that inserts the FNC1 character as the data field separator. In this case, it can be placed anywhere but at beginning of the barcode text. For example:

\f01 00012345678905 21 512

\t

20 18

See also the "Character set" section above.

\d

: Insert a FNC1 character in "Second position" mode to barcode text, or insert a GS character (ASCII value 29) as the data field separator to the barcode text. There are two usages:

Insert a FNC1 character in "Second position" mode to the barcode text. It's completely equivalent to escape sequence " \f " that inserts the FNC1 character in "Second position" mode. In this case, it shall only be used once in a symbol and shall be placed at beginning of the barcode text, and after any ECI indicator block or structured append block (if exists), followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number). For example:

\d

01 00012345678905

Insert a GS character (ASCII value 29) as the data field separator to the barcode text. It's completely equivalent to the escape sequence " \f " that inserts the FNC1 character as the data field separator. In this case, it can be placed anywhere but at beginning of the barcode text. For example:

\f01 00012345678905 21 512

\d

20 18

See also the "Character set" section above.

\g

: Insert a GS character (ASCII value 29) to the barcode text. When FNC1 is used as a data field separator, it can be used instead of the FNC1 character. For example:

\f01 00012345678905 21 512

\g

20 18

See also the "Character set" section above.

\e[<ECI_Number>]

: Insert an ECI indicator block to barcode text. See also the "Extended Channel Interpretation (ECI)" section below.

\s[<Index>, <Amound>, <Parity>]

: Insert a structured append block to barcode text in order to create the symbol in a structured append. See also the "Structured append" section below.

Encoding modes

QR Code has four encoding modes as Numeric mode, Alphanumeric mode, Kanji mode and Byte mode respectively in decreasing order of encoding density. All 256 8-bits value are encoded by switching automatically between all 4 (the

AllowKanjiMode

property is

set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The character sets in

each mode are listed in the following:

76

2D Barcode FMX Components User Manual

Numeric mode

: Encodes data from the decimal digit set (0 to 9) (byte values 48 to 57).

Alphanumeric mode

: Encodes data from a set of 45 characters, i.e. 10 numeric digits (0 to 9) (byte values 48 to 57), 26 alphabetic characters (A - Z) (byte values 65 to 90) , and 9 symbols (SP, $, %, *, +, -, ., /, :) (byte values 32, 36, 37, 42, 43, 45 to

47, 58 respectively).

Byte mode

: All 8-bit values can be encoded.

Kanji mode

: The Kanji mode efficiently encodes Kanji characters in accordance with the Shift JIS system based on JIS X 0208.

The Shift JIS values are shifted from the JIS X 0208 values. JIS X 0208 gives details of the shift coded representation.

It may be possible to achieve a smaller symbol size by using the Kanji mode compaction rules when an appropriate sequence of

byte values occurs in the data. You can set the AllowKanjiMode

property to false in order to disable the Kanji mode.

The EncodePolicy

property indicates how to use these encoding mode by the component. This property can be one of these values

(defined in the pfmxQRCode unit):

epMixingOptimal

: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The optimal

combination of encoding modes will be used in order to minimize the symbol size.

epMixingQuick

: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode

property is set to

true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The combination of

encoding modes may not be the optimal one, in order to optimize encoding speed.

epSingleMode

: The encoding mode will be selected automatically and applied to entire symbol, based on the barcode text, in other words, the barcode text to be encoded will be analysed, and an appropriates lowest level (highest encoding density) encoding mode will be selected, in order to minimize the symbol size, and the encoding mode will not be switched in the sybmol.

Note, the Kanji mode will not be used if the AllowKanjiMode

property is set to false.

Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Four broad types of interpretations are supported in QR Code:

International character sets (or code pages).

General purpose interpretations such as encryption and compaction.

User defined interpretations for closed systems.

Control information for structured append in unbuffered mode.

The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding.

The ECI is identified by an integer (up to 6 digits) which is encoded in the QR Code symbol by the ECI indicator block. The escape sequence " \e[<ECI_Number>] " is used to place the ECI indicator block to the barcode text:

ECI_Number

: The ECI number, it's an integer between 0 and 999999 (including the boundaries), the leading zero is optional.

ECI indicator blocks may be placed anywhere in the barcode text in a single or structured append set of QR Code symbols. For example:

ABC

\e[123]

DEFabc

\e[000003]

def

The default interpretation for QR Code is ECI 000003 representing the ISO/IEC 8859-1 character set.

The

AllowEscape

property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.

Structured append

In order to handle larger messages than are practical in a single symbol, a data message can be distributed across several QR Code symbols. Up to 16 QR Code symbols may be appended in a structured format to convey more data. If a symbol is part of a structured append this shall be indicated by a structured append block in barcode text. The escape sequence " \s[<Index>, <Amount>, <Parity>] "

77

2D Barcode FMX Components User Manual

is used to place the structured append block to the barcode text:

Index

: The position index of the symbol within the set of QR Code symbols in the structured append format. It's an integer between 1 and 16 (including the boundaries) in string format.

Amount

: The total amount of the symbol within the set of QR Code symbols in the structured append format. It's an integer between 2 and 16 (including the boundaries) in string format.

Parity

: The parity data. It shall be an 8-bit byte value obtained by using the GetParity

method with the original input data as its parameter. It is identical in all symbols in the structured append, enabling it to be verified that all symbols read form part of the same structured append message.

The

AllowEscape

property should be set to true in order to place the structured append block. The structured append block may only

be placed once in the barcode text. Also, it shall be placed at beginning of the barcode text. The OnInvalidChar

or

OnInvalidDataChar

event will occur if the structured append block be placed more than once, or it isn't placed at beginning of the barcode text. The following is the examples of structured append:

\s[2, 5, 125]

ABCDEFGabcdefg1234567890

78

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Inversed

Mirrored

EncodePolicy

MaxSliceLen

MinVersion

MaxVersion

ECCLevel

ECCLevelUpgrade

AllowKanjiMode

AllowEscape

CurrentVersion

(Read only)

CurrentECCLevel

(Read only)

4.1.14 TBarcodeFmx2D_RSS14

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

GetParity

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the RSS-14 (Reduce Space Symbology) barcode symbols, including RSS-14 (Standard), RSS-14

Truncated, RSS-14 Stacked, and RSS-14 Stacked Omnidirectional. It's defined in the pfmxRss14 unit.

RSS-14 is a continuous linear symbology capable encoding the full GS1 14-digit EAN.UCC item identification number

(Global Trade Item Numbers, GTINs). The first digit represents the Indicator digit to indicate packaging level. The following twelve digits are the GS1 Company Prefix and the Item Reference. The last digit represents the Check Digit. A leading Application Identifier (01) is implied and is not encoded in the symbol.

79

2D Barcode FMX Components User Manual

Styles

There are four styles (versions) of RSS-14 symbols, as described in following list:

Standard

: The standard style RSS-14 barcode symbol encodes the full 14-digit EAN.UCC item identification (Global

Trade Item Numbers, GTINs) in a symbol that can be omnidirectionally scanned by suitably configured point-of-sale laser scanners.

Truncated

: RSS-14 Truncated is structured and encoded in the same way as the standard RSS-14 format, except its height is reduced to a 13 modules minimum. It may be used for small items, instead of

RSS Limited . It may also be

used when the four-column 2D component is desired in order to minimize the height of an EAN.UCC Composite symbol.

RSS-14 Truncated is designed to be read by scanners such as wands, handheld lasers, and linear and 2D imagers. It cannot be read efficiently by omnidirectional flat-bed and presentation scanners.

Stacked

: RSS-14 Stacked is an RSS-14 Truncated two-row format. It may be used for small items instead of RSS

Limited when the available space is too narrow for RSS Limited . Moreover, the narrower width of RSS-14 Stacked might

allow for a larger module width and potentially higher print quality. However,

RSS Limited

or RSS-14 Truncated should be used in preference to the stacked format whenever space permits without reducing module width, as they are easier to scan with a wand or linear scanner.

RSS-14 Stacked is designed to be read by scanners such as wands, handheld lasers, and linear and 2D imagers. It cannot be read efficiently by omnidirectional flat-bed and presentation scanners.

Stacked Omnidirectional

: RSS-14 Stacked Omnidirectional is a full height RSS-14 two-row format. It can be used instead of RSS-14 for omnidirectional scanning applications where the different aspect ratio is needed.

You can use the Style property to specify which style will be used. It can be one of these values:

rsStandard , rsTruncated , rsStacked , and rsStackedOmnidirectional , corresponding to the Standard, Truncated, Stacked, and Stacked

Omnidirectional styls. They are defined in the pfmxRss14 unit.

Symbol size

RSS-14 (Standard)

: Normally, the overall size of this format is 96 modules wide by a minimum of 33 modules high. You can use the

TotalHeight

property to specify the height for an RSS-14 (Standard) symbol, in modules.

RSS-14 Truncated

: Normally, the overall size of this format is 96 modules wide by a minimum of 13 modules high. You can use the

TotalHeight

property to specify the height for an RSS-14 Truncated symbol, in modules.

RSS-14 Stacked

: Normally, the top row is 5 modules high and the bottom row is 7 modules high with a 1 module (minimum) high separator pattern between the two rows. So the overall size of this format is 50 modules wide by 13 modules high. You can use t h e

SeparatorRowHeight

property to specify the height of separator pattern between the two rows, in modules. And use the

TotalHeight

property to specify the total height for an RSS-14 Stacked symbol, in modules. the height of separator pattern is included in the total height.

RSS-14 Stacked Omnidirectional

: Normally, Each row is 33 modules high minimum with a 3 modules high separator pattern between the two rows. So the overall size of this format is 50 modules wide by 69 modules high minimum. You can use the

SeparatorRowHeight

property to specify the height of separator pattern between the two rows, in modules. And use the

TotalHeight

property to specify the total height for an RSS-14 Stacked Omnidirectional symbol, in modules. the height of separator pattern is included in the total height.

If both the Link2D

and

Show2DSeparator properties are set to Ture, a contiguous separator pattern is represented and its minimum

height is 1 module (the pattern height can be specified by the

SeparatorRowHeight

property). In this case, the height of the RSS-14 symbol will be reached to increase the contiguous separator pattern height.

Quiet zones

No quiet zones is required outside the bounds of the RSS-14 symbol. The first and last elements may appear wider than one module

without affecting the symbol if the adjacent background area is the same color. So the minimum values of LeadingQuietZone ,

TrailingQuietZone

, TopQuietZone

, and BottomQuietZone

properties are equal to 0.

Character set

80

2D Barcode FMX Components User Manual

All 10 numeric characters, i.e. 0 through 9.

Check digit

All styles of RSS-14 symbols have a check digit, it is a form of redundancy check used for error detection. It consists of a single numeric character computed from the other character in the EAN.UCC item identification number.

If the AutoCheckDigit

property is set to false, the check digit shall be included in the barcode text. Otherwise, It wii be appended automatically by the component, so the check digit isn't required in the barcode text.

Data capactiy

All styles of RSS-14 symbologies encode the full GS1 14-digit EAN.UCC item identification number (Global Trade Item Numbers,

GTINs) in a symbol, including a leading indicator digit, 12 data characters (GS1 Company Prefix and the Item Reference), and a check digit. Note, A leading Application Identifier (01) is implied and is not encoded in the symbol, so it isn't required in the barcode text.

If the AutoCheckDigit

property is set to false, the check digit shall be included in the barcode text, so the length of barcode text shall is

14 numeric characters, and the last numeric character in the barcode text is the check digit.

If the AutoCheckDigit

property is set to true, the check digit will be appended automatically by the component, so the length of barcode text shall is 13 numeric characters, and the check digit isn't required in the barcode text.

Composite symbols

Any styles of an RSS-14 barcode symbol can be used together with a CC-A or CC-B barcode symbol to create the EAN.UCC

composite symbol. Only a 4-column CC-A or a 4-column CC-B symbol can be used together with an RSS-14 (Standard) or an RSS-14

Truncated symbol. Only a 3-column CC-A or a 3-column CC-B symbol can be used together with an RSS-14 Stacked or an RSS-14

Stacked Omnidirectional symbol.

If you use it together with a CC-A or a CC-B component that's from another components package, the Link2D

property should be set to true in order to denote the RSS-14 symbol is used as the linear component in an EAN.UCC composite symbol. In this case, the

Show2DSeparator

property specifies whether to represent the contiguous separator pattern between the RSS-14 linear and the 2D components in the EAN.UCC composite symbol.

81

2D Barcode FMX Components User Manual

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

TotalHeight

Link2D

Show2DSeparator

Style

SeparatorRowHeight

AutoCheckDigit

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.15 TBarcodeFmx2D_RSSExpanded

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the RSS Expanded barcode symbols, including RSS Expanded (Standard) and RSS Expanded

Stacked. It's defined in the pfmxRssExpanded unit.

RSS Expanded is a variable length linear symbology capable of encoding up to 74 numeric or 41 alphabetic characters of AI element string data internally represented as a binary number. RSS Expanded can be used to encode primary and supplementary data intended for use in retail point-of-sale and other applications where the scanners and application software have been appropriately programmed.

RSS Expanded can be scanned and decoded in up to 22 segments and then reconstructed. This facilitates omnidirectional scanning.

Styles

There are two styles (versions) of RSS Expanded symbols, as described in following list:

Standard

: RSS Expanded (Standard) is a single row, variable length linear symbology. It can identify small items and carry more information than the current EAN/UPC barcode.

82

2D Barcode FMX Components User Manual

Stacked

: RSS Expanded Stacked is an RSS Expanded multi-row format. It may be stacked in two to eleven rows.

RSS Expanded Stacked is used when the symbol area or print mechanism is not wide enough to accommodate the full single row symbol.

You can use the Style property to specify which style will be used. It can be one of values

rsStandard and rsStacked , corresponding to the Standard and Stacked styls. They are defined in the pfmxRss14Expanded unit.

Symbol size

In both RSS Expanded (Standard) and RSS Expandedn Stacked symbols, the barcode text will be encoded as a symbol segments sequence, there are between 4 and 22 symbol segments (including the boundaries) in the sequence. The symbol sizes are based on the number of symbol segments, and are described in following list:

Standard

: It's a variable length symbology, the symbol width is based on the number of symbol segments. The symbol height are specified by the

RowHeight

property, in modules.

Stacked

: The symbol width is based on the number of symbol segments in each stacked row. The symbol height is based on the number of symbol stacked rows and the height of each stacked row.

You can use the

RowSymbols

property to specify the number of symbol segments in each row for an RSS Expanded Stacked symbol, between 2 and 20 (including the boundaries, only even values are valid), the barcode symbol will be stacked in two to eleven rows based on the total numbers of symbol segments and the number of symbol segments in each row. There are three separator patterns between the stacked rows.

Each row is minimum 34 modules high, and each separator pattern is minimum 1 module high. You can use the RowHeight

property to specify the height for each row, in modules. And use the

SeparatorRowHeight

property to specify the height of each separator pattern, in modules.

If both the Link2D

and

Show2DSeparator properties are set to Ture, a contiguous separator pattern is represented and its minimum

height is 1 module, the height can be specified by the SeparatorRowHeight

property too.

Quiet zones

No quiet zones is required outside the bounds of the RSS Expanded symbol. The first and last elements may appear wider than one

module without affecting the symbol if the adjacent background area is the same color. So the minimum values of LeadingQuietZone ,

TrailingQuietZone

, TopQuietZone

, and BottomQuietZone

properties are equal to 0.

Character set

A subset of ISO/IEC 646, consisting of the upper and lower case letters ( A Z , a z ), digits ( 0 9 ), space, and 19 selected punctuation characters ( !:%&()*+,-./:;<=>?_

) in addition to the special function character, FNC1.

If you want insert the FNC1, please insert the " ^ " character instead.

Note, in the barcode text, all Application Identifiers should be enclosed in parentheses " ( " and " ) ", the parentheses are only for identifying Application Identifiers, and they are not encoded into the barcode symbol. If you want encode the parentheses " ( " and " ) " in an Application Identifier element string, please use the " { " and " } " instead.

Data capactiy

74 numeric or 41 alphabetic characters.

Note, the RSS Expanded data capacity depends on the encodation method. The maximum is 74 digits for (01) + other AIs, the maximum is 70 digits for any AIs, and the maximum is 77 digits for (01) + (392x) + any AIs.

Composite symbols

Any style of an RSS Expanded barcode symbol can be used together with a 4-column CC-A or a 4-column CC-B barcode symbol to create the EAN.UCC composite symbol. In this case, the RSS Expanded Stacked symbol shall contain at least four symbol characters

within its top row, in other words, the value of RowSymbols

property should be greater than or equal to 4.

If you use it together with a CC-A or a CC-B component that's from another components package, the Link2D

property should be set to true in order to denote the RSS Expanded symbol is used as the linear component in an EAN.UCC composite symbol. In this case,

the Show2DSeparator

property specifies whether to represent the contiguous separator pattern between the RSS Expanded linear and

83

2D Barcode FMX Components User Manual

the 2D components in the EAN.UCC composite symbol.

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

Style

RowHeight

RowSymbols

SeparatorRowHeight

Link2D

Show2DSeparator

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

4.1.16 TBarcodeFmx2D_RSSLimited

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

The component is used to create the RSS Limited barcode symbols. It's defined in the pfmxRssLimited unit.

RSS Limited is a continuous linear symbology capable encoding the entire GS1 14-digit EAN.UCC item identification number (Global Trade Item Numbers, GTINs) set with Indicator digits 1 and 0. The first digit represents the Indicator digit to indicate packaging level (only 0 and 1). The following twelve digits are the GS1 Company Prefix and the Item Reference. The last digit represents the Check Digit. A leading Application Identifier (01) is implied and is not encoded in the symbol.

Symbol size

Normally, the overall size of the RSS Limited symbol is 74 modules wide by a minimum of 10 modules high.

If both the Link2D

and

Show2DSeparator properties are set to Ture, a contiguous separator pattern is represented and its minimum

height is 1 module (the pattern height can be specified by the SeparatorRowHeight

property). In this case, the height of the RSS

Limited symbol will be reached to increase the contiguous separator pattern height. Namely, If height of the contiguous separator

84

2D Barcode FMX Components User Manual

pattern is 1 module, then the minimum height of the RSS Limited symbol is 11 modules.

The

TotalHeight

property can be used to specify the height for an RSS Limited symbol, in modules. If the contiguous separator pattern is represented, its height is included in the property value.

Quiet zones

No quiet zones is required outside the bounds of the RSS Limited symbol. The first and last elements may appear wider than one

module without affecting the symbol if the adjacent background area is the same color. So the minimum values of LeadingQuietZone ,

TrailingQuietZone

, TopQuietZone

, and BottomQuietZone

properties are equal to 0.

Character set

All 10 numeric characters, i.e. 0 through 9.

Check digit

The RSS Limited symbols have a check digit, it is a form of redundancy check used for error detection. It consists of a single numeric character computed from the other character in the EAN.UCC item identification number.

If the AutoCheckDigit

property is set to false, the check digit shall be included in the barcode text. Otherwise, It wii be appended automatically by the component, so the check digit isn't required in the barcode text.

Data capactiy

The RSS Limited symbology encodes the entire GS1 14-digit EAN.UCC item identification number (Global Trade Item Numbers,

GTINs) set with Indicator digits 1 and 0 in a symbol, including a leading indicator digit (only 0 and 1), 12 data characters (GS1

Company Prefix and the Item Reference), and a Check digit. Note, A leading Application Identifier (01) is implied and is not encoded in the symbol, so it isn't required in the barcode text.

Note, First numeric character is the Indicator digit in the barcode text, only 1 and 0 can be encoded.

If the AutoCheckDigit

property is set to false, the check digit shall be included in the barcode text, so the length of barcode text shall is

14 numeric characters, and the last numeric character in the barcode text is the check digit.

If the AutoCheckDigit

property is set to true, the check digit will be appended automatically by the component, so the length of barcode text shall is 13 numeric characters, and the check digit isn't required in the barcode text.

Composite symbols

The RSS Limited barcode symbol can be used together with a 3-column CC-A or a 3-column CC-B barcode symbol to create the

EAN.UCC composite symbol.

If you use it together with a CC-A or a CC-B component that's from another components package, the Link2D

property should be set to true in order to denote the RSS Limited symbol is used as the linear component in an EAN.UCC composite symbol. In this case, the

Show2DSeparator

property specifies whether to represent the contiguous separator pattern between the RSS Limited linear and the

2D components in the EAN.UCC composite symbol.

85

Properties:

Image

Barcode

Data

Module

BarColor

SpaceColor

Opacity

Orientation

Stretch

LeftMargin

TopMargin

BarcodeWidth

BarcodeHeight

ShowQuietZone

LeadingQuietZone

TopQuietZone

TrailingQuietZone

BottomQuietZone

EnableUpdateDB

Locked

TotalHeight

Link2D

SeparatorRowHeight

Show2DSeparator

AutoCheckDigit

2D Barcode FMX Components User Manual

Methods:

Create

Destroy

Assign

Clear

Draw

Size

DrawTo

DrawToSize

Print

PrintSize

Events:

OnChange

OnEncode

ParseBarcodeIndex

OnInvalidChar

OnInvalidLength

OnInvalidDataChar

OnInvalidDataLength

OnDrawBarcode

4.2 TSaveFmx2D

It is the base class of all image saving components, these components can be used to save barcode symbol to picture file in multiple formats. And it cannot be instantiated. It's defined in the pfmxSave2D unit.

Properties:

Barcode2D

4.2.1 TSaveFmx2D_Bmp

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

86

2D Barcode FMX Components User Manual

The component is used to save the barcode symbol to image file in Bitmap image (BMP) format. It is defined in the pfmxSave2D_Bmp unit.

Properties:

Barcode2D

ColorDepth

XPPM

YPPM

4.2.2 TSaveFmx2D_Emf

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

The component is used to save the barcode symbol to image file in Enhaced Metafile Format (EMF). It is defined in the pfmxSave2D_Emf unit.

Properties:

Barcode2D

DeviceWidthInPixel

DeviceHeightInPixel

DeviceWidthInMM

DeviceHeightInMM

DeviceWidthInUM

DeviceHeightInUM

EmbedBarcodeText

4.2.3 TSaveFmx2D_Eps

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

The component is used to save the barcode symbol to image file in Encapsulated PostScript (EPS) format. It is defined in the pfmxSave2D_Eps unit.

Properties:

Barcode2D

EmbedBarcodeText

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

4.2.4 TSaveFmx2D_Gif

The component is used to save the barcode symbol to image file in Graphics Interchange Format (GIF). It is defined in the pfmxSave2D_Gif unit.

87

2D Barcode FMX Components User Manual

Properties:

Barcode2D

Version

ColorDepth

Interlaced

EmbedBarcodeText

4.2.5 TSaveFmx2D_Jpg

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

The component is used to save the barcode symbol to image file in JPEG image (JPG, JPEG) format. It is defined in the pfmxSave2D_Jpg unit.

Properties:

Barcode2D

Quality

4.2.6 TSaveFmx2D_Png

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

The component is used to save the barcode symbol to image file in Portable Network Graphics (PNG) format. It is defined in the pfmxSave2D_Png unit.

Properties:

Barcode2D

ColorDepth

Interlaced

CompressionLevel

EmbedBarcodeText

4.2.7 TSaveFmx2D_Svg

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

The component is used to save the barcode symbol to image file in Scalable Vector Graphics (SVG) format. It is defined in the pfmxSave2D_Svg unit.

Properties:

Barcode2D

EmbedBarcodeText

88

2D Barcode FMX Components User Manual

4.2.8 TSaveFmx2D_Wmf

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

The component is used to save the barcode symbol to image file in Windows Metafile Format (WMF). It is defined in the pfmxSave2D_Wmf unit.

Properties:

Barcode2D

Placeable

LogicUnitsPerInch

Methods:

Create

Destroy

Assign

Save

Events:

OnSave

OnSaved

4.3 TCopyFmx2D

The component is used to copy the barcode symbol to clipboard. It is defined in the pfmxCopy2D unit.

Properties:

Barcode2D

Methods:

Create

Destroy

Assign

Copy

4.4 TUserWorkArea

It contains fields to specify the parameters (e.g. position, size, etc.) for the barcode symbol. It is defined in the pfmxBarcode2D unit.

Syntax: type

{ Defined in the pfmxBarcode2D unit }

TUserWorkArea =

record

WCanvas: TCanvas;

WBarcode: string;

WBarColor: TAlphaColor;

WSpaceColor: TAlphaColor;

WOpacity: Single;

89

2D Barcode FMX Components User Manual

WModule: Single;

WLeftInPixels: Single;

WTopInPixels: Single;

WAngle: Single;

WShowQuietZone: Boolean;

WMirror: Boolean;

WBarcodeData: TBytes;

WBarcodeLength: Integer;

WQuietZoneWidthInModules_Left: Integer;

WQuietZoneWidthInModules_Top: Integer;

WQuietZoneWidthInModules_Right: Integer;

WQuietZoneWidthInModules_Bottom: Integer;

WSymbolZoneWidthInModules: Integer;

WSymbolZoneHeightInModules: Integer;

WTotalWidthInPixels: Single;

WTotalHeightInPixels: Single;

WSymbolZoneOffsetInPixels_Left: Single;

WSymbolZoneOffsetInPixels_Top: Single;

WAlpha: Single;

WOrigin: TPointF;

WDensityRate: Single;

end

;

Fields:

WCanvas

: TCanvas; The target canvas that the barcode symbol will be represented on it.

WBarcode

: string; The barcode text which will be encoded to the barcode symbol.

If you use the Barcode

property, or use

Draw

,

Size

,

DrawTo (Syntax 1)

,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize

(Syntax 1) method, It's equal to the value of Barcode property.

If you use the DrawTo (Syntax 2)

,

DrawToSize (Syntax 2) ,

Print (Syntax 2)

, or

PrintSize (Syntax 2)

method, it is equal to their

Barcode parameter value.

If you use the Data

property, or use

DrawTo (Syntax 3)

,

DrawToSize (Syntax 3)

,

Print (Syntax 3)

, and PrintSize (Syntax 3)

methods, it's an empty string.

WBarColor

: TAlphaColor; It's the color used by all bars (Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

WSpaceColor

: TAlphaColor; It's the color used by all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in the barcode symbol. Also the leading, trailing, top, and bottom quiet zones are represented using the color too.

WOpacity

: Single; It's the transparency-level of entire barcode symbol, where 1 is not transparant at all, 0.5 is 50% see-through, and 0 is completely transparent.

WModule

: Single; It's the module size in pixels ( Draw , DrawTo

) or dots ( Print ). The horizontal resolution is used. See also the

" Module

" property.

WLeftInPixels

: Single; It's the margin between the barcode symbol and the left side of the canvas in pixels ( Draw

,

DrawTo

) or

dots ( Print

). The horizontal resolution is used. If the quiet zones are represented, they are included in the barcode symbol. See also the "

LeftMargin " property.

WTopInPixels

: Single; It's the margin between the barcode symbol and the top side of the canvas in pixels ( Draw

,

DrawTo

) or

dots ( Print

). The vertical resolution is used. If the quiet zones are represented, they are included in the barcode symbol. See also the "

TopMargin

" property.

WAngle

: Single; It's the angle to rotate the barcode symbol anticlockwise, in degrees.

WShowQuietZone

: Boolean; Denotes whether the leading, trailing, top and bottom quiet zones are represented. See also the

90

2D Barcode FMX Components User Manual

" ShowQuietZone

" property.

WMirror

: Boolean; Denotes whether the barcode symbol is reversed right to left (horizontal mirror reversal). See also the

" Mirrored

" property.

WBarcodeData

: TBytes; The barcode text which will be encoded to the barcode symbol, it's a byte array.

If you use the Barcode

property, or use

Draw

,

Size

,

DrawTo (Syntax 1)

,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize

(Syntax 1) method, it is the UTF-8 byte sequences converted from the Barcode property value (the BOM isn't included, if you used

the

OnEncode event function, it's equal to its

Data parameter value).

If you use the DrawTo (Syntax 2)

,

DrawToSize (Syntax 2)

,

Print (Syntax 2)

, or

PrintSize (Syntax 2)

method, it is the UTF-8 bytes sequence converted from their Barcode

parameter value (the BOM isn't included, if you used the OnEncode

event function, it's equal to its Data parameter value).

If you use the Data

property, it's equal to the value of

Data

property. If you use

DrawTo (Syntax 3)

,

DrawToSize (Syntax 3)

, Print

(Syntax 3) , or PrintSize (Syntax 3) method, it is equal to their Data parameter value.

WBarcodeLength

: Integer; It's the length of WBarcodeData feild's value by byte count.

WQuietZoneWidthInModules_Left

: Integer; It's the width of leading quiet zone if it is represented, in modules. See also the

" LeadingQuietZone

" property.

WQuietZoneWidthInModules_Top

: Integer; It's the height of top quiet zone if it is represented, in modules. See also the

" TopQuietZone

" property.

WQuietZoneWidthInModules_Right

: Integer; It's the width of trailing quiet zone if it is represented, in modules. See also the

" TrailingQuietZone

" property.

WQuietZoneWidthInModules_Bottom

: Integer; It's the height of bottom quiet zone if it is represented, in modules. See also the

" BottomQuietZone

" property.

WSymbolZoneWidthInModules

: Integer; It's the height of entire barcode symbol before the barcode symbol is rotated, in modules. The quiet zones aren't included even if they are represented.

WSymbolZoneHeightInModules

: Integer; It's the width of entire barcode symbol before the barcode symbol is rotated, in modules. The quiet zones aren't included even if they are represented.

WTotalWidthInPixels

: Single; It's the height of entire barcode symbol before the barcode symbol is rotated, in pixels ( Draw ,

DrawTo

) or dots ( Print ). The horizontal resolution is used. The quiet zones are included if they are represented.

WTotalHeightInPixels

: Single; It's the width of entire barcode symbol before the barcode symbol is rotated, in pixels ( Draw ,

DrawTo

) or dots ( Print ). The horizontal resolution is used. The quiet zones are included if they are represented.

WSymbolZoneOffsetInPixels_Left

: Single; It's the horizontal offset from the upper-left corner of entire barcode symbol (the quiet zones are included if they are represented) to the upper-left of the barcode symbol (the quiet zones aren't included even if they

are represented) before the barcode symbol is rotated, in in pixels ( Draw

,

DrawTo

) or dots ( Print

). The horizontal resolution is used.

WSymbolZoneOffsetInPixels_Top

: Single; It's the vertical offset from the upper-left corner of entire barcode symbol (the quiet zones are included if they are represented) to the upper-left of the barcode symbol (the quiet zones aren't included even if they

are represented) before the barcode symbol is rotated, in in pixels ( Draw

,

DrawTo

) or dots ( Print

). The horizontal resolution is used.

WAlpha

: Single; It's the angle that the barcode symbol will be rotated, in radian.

WOrigin

: TPointF; The coordinate of the upper-left corner of the barcode symbol after the barcode symbol is rotated, in pixels

( Draw , DrawTo

) or dots ( Print

). The horizontal resolution is used.

WDensityRate:

Single; It is the ratio of the horizontal resolution DPI and veritical resolution DPI of the canvas.

91

92

2D Barcode FMX Components User Manual

Chapter 5. FAQs

5.1 How to download the full version

Please download the installation package using the download link that's sent from us after you purchase the components package, within the validity period.

If the download link expired, please visit the " Manage your licenses " page to request a new download link.

Please open the page then enter your order ID, license user name or license e-mail address to locate your order, then click on the oder ID to display it, choose a license and click on the "

Request a new download link

", the new download link will be sent to this license e-mail address automatically. Please use the new download link whthin the validity period.

5.2 I forgot my license key

If you forgot the license key, please visit the " Manage your licenses " page to retrieve it. Please open the page then enter your order ID, license user name or license e-mail address to locate your order, then click on the oder ID to display it, choose a license and click on the "

Retrieve the license key

", the license key will be sent to the license e-mail address automatically.

2D Barcode FMX Components User Manual

Chapter 6. Information

6.1 Support

This help is designed to be used on-screen. Many troubleshooting questions can be answered by this help. If your question is not covered in the help document, please read the next section.

Technical Support

If you have a specific technical issue, if you would like to send general comments about the product, please reads the following:

Please read the " Frequently Asked Question " in our web site to see whether your question is already answered.

Please visit the " Support " page in our web site, and submit your problem to us.

You may email the technical support issues to [email protected]

. The registered users will get priority, so include your order number in the email to ensure a prompt response.

In order to provide more accurate service, please provides the following information:

Whether the problem can be reproduced? How is it reproduced?

What development system do you use?

Which version of 2D Barcode FMX components do you use?

Feedback

If you have any comments or concerns about this product please send them to [email protected]

. Your feedback is very important for us because it helps to us to make our software better and more efficient. Many of its features have been heavily influenced by comments from users. So if you have a grand idea for a new feature, or a better way of doing something, please drop us a note.

6.2 Purchase

The 2D Barcode FMX Components is a Shareware product. If you find it useful, please purchase the full version of this product. After your purchase you will receive an e-mail with a download link of full version for downloading.

Why should I purchase

After your purchase you can continue to use the 2D Barcode FMX Components and entitles you to the following benefits:

The trial version is fully functional, though limited, and adds a watermark that appears in the final 2D Barcode symbol. So purchase will allow you to use 2D Barcode FMX Components without limitations.

You are entitled to free upgrades during 1 year since the date of your purchase. This includes both major and minor upgrades in appropriate time period. It means that during one year you can download and install the latest versions of the software from our site.

You will be entitled to a 50% discount for all future major upgrades if you purchased the software more than one year ago, and allow you to have free upgrades for another year.

93

2D Barcode FMX Components User Manual

You will be always entitled to free minor upgrades for the version that is purchased.

You will also have priority in technical support.

Purchasing the product may also entitle you to discounts on new software releases from Han-soft .

Finally, by purchasing the software, you provide us with the resources and incentive to support the software with updates and to develop additional quality products in the future.

How to purchase

You can purchase the 2D Barcode FMX Components by using following steps:

1. Please open the " Purchase " web page of our web site http://www.han-soft.com

.

2. In the " Purchase " web page, choose the license type and open the order form web page. Fill in the information on the web page, and choose from the available ordering options that best suits your needs. We accept credit card orders, PayPal orders, orders by phone and fax, checks, purchase orders, and wire transfers.

3. Once the purchase is completed, the download link of full version and the license key will be sent instantaneously to your email address. If you do not receive your download link and license key within a few minutes, please check your SPAM filter inbox.

Important:

When completing the order form, please double-check that your email address is correct. If it is not, you will be unable to receive the download link and the license key.

6.3 Contact us

Contact us if you have any questions, comments or suggestions:

Web site

Main site: http://www.han-soft.com

Mirror: http://www.han-soft.biz

E-mail

General information: [email protected]

Technical support: [email protected]

Sales: [email protected]

Service: [email protected]

Feedback: [email protected]

Web information: [email protected]

6.4 End-User License Agreement

This End-User License Agreement ("EULA") is a legal agreement between you (either an individual or a single entity) and the Han-soft, which includes computer software and may include associated media, printed materials, and "online" or electronic documentation

("SOFTWARE PRODUCT").

By installing, copying, or otherwise using the SOFTWARE PRODUCT, you agree to be bound by the terms of this EULA. If you do not agree to the terms of this EULA, do not install or use the SOFTWARE PRODUCT; you may, however, return it to your place of

94

2D Barcode FMX Components User Manual

purchase for a full refund.

SOFTWARE PRODUCT LICENSE

The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.

1.

GRANT OF LICENSE.

This EULA grants you the following rights:

Installation and Use.

You may install and use an unlimited number of copies of the TRIAL SOFTWARE PRODUCT.

Reproduction and Distribution.

You may reproduce and distribute an unlimited number of copies of the TRIAL SOFTWARE PRODUCT; provided that each copy shall be a true and complete copy, including all copyright and trademark notices, and shall be accompanied by a copy of this EULA. Copies of the TRIAL SOFTWARE PRODUCT may be distributed as a standalone product or included with your own product.

Purchase.

You may use the registered SOFTWARE PRODUCT on that number of computers for which you have purchased a separate license as indicated on the invoice or sales receipt. If the SOFTWARE PRODUCT is installed on a network server or other storage device, you must purchase a license for each separate computer on which the SOFTWARE PRODUCT is used. A license for the SOFTWARE PRODUCT may not be shared by alternating use of the SOFTWARE PRODUCT between different computers. The primary user of a computer for which a license has been purchased may make and use one copy of the SOFTWARE PRODUCT on his or her portable computer. You may also make one copy of the SOFTWARE PRODUCT for back-up or archival purposes. Otherwise, you may not copy the SOFTWARE PRODUCT in whole or in part. You may not transfer your rights under this license.

2.

DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.

Limitations on Components and Source Code.

You may distribute the runtime packages with your end-user applications. You must not distribute the library in such a way that it allows direct programmatic access to the SOFTWARE PRODUCT, or such that it competes with the SOFTWARE

PRODUCT in any way - this library is intended for inclusion in end user products. You may not publish or otherwise expose the licensed source code outside of your organization whatsoever. You may modify the source code as required for your own software products but the code may only be used to produce compiled software. Software built incorporating our licensed source code must not allow programmatic access to the software components or in any way compete with our software products.

Limitations on Reverse Engineering, Decompilation, and Disassembly.

You may not reverse engineer, decompile, or disassemble the SOFTWARE PRODUCT, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.

Separation of Components.

The SOFTWARE PRODUCT is licensed as a single product. Its components parts may not be separated for use on more than one computer.

Software Transfer.

You may permanently transfer all of your rights under this EULA, provided the recipient agrees to the terms of this EULA.

Termination.

Without prejudice to any other rights, the Author of this Software may terminate this EULA if you fail to comply with the terms and conditions of this EULA. In such event, you must destroy all copies of the SOFTWARE PRODUCT and all of its components parts.

95

2D Barcode FMX Components User Manual

Distribution.

The SOFTWARE PRODUCT may not be sold or be included in a product or package which intends to receive benefits through the inclusion of the SOFTWARE PRODUCT. The registered SOFTWARE PRODUCT may not be included in any free or non-profit packages or products.

3.

COPYRIGHT.

All title and copyrights in and to the SOFTWARE PRODUCT (including but not limited to any images, photographs, animations, video, audio, music, text, and "applets" incorporated into the SOFTWARE PRODUCT), the accompanying printed materials, and any copies of the SOFTWARE PRODUCT are owned by the Author of this Software. The SOFTWARE PRODUCT is protected by copyright laws and international treaty provisions. Therefore, you must treat the SOFTWARE PRODUCT like any other copyrighted material except that you may install the SOFTWARE PRODUCT on a single computer provided you keep the original solely for backup or archival purposes.

MISCELLANEOUS

Should you have any questions concerning this EULA, or if you desire to contact the author of this Software for any reason, please contact him at the email address mentioned at the bottom of this EULA.

LIMITED WARRANTY

1.

NO WARRANTIES.

The Author of this Software expressly disclaims any warranty for the SOFTWARE PRODUCT. The SOFTWARE PRODUCT and any related documentation is provided "as is" without warranty of any kind, either express or implied, including, without limitation, the implied warranties or merchantability, fitness for a particular purpose, or non-infringement. The entire risk arising out of use or performance of the SOFTWARE PRODUCT remains with you.

2.

NO LIABILITY FOR DAMAGES.

In no event shall the author of this Software be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this product, even if the Author of this Software has been advised of the possibility of such damages. Because some states/jurisdictions do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.

CONTACT US

Please sent email to the [email protected]

email address.

96

2D Barcode FMX Components User Manual

Annex A. Properties

A.1 TBarcodeFmx2D

A.1.1 AllowEscape

Specifies whether to allow users to insert the escape sequences to barcode text, in order to place the function characters and additional control information.

Syntax: property

AllowEscape: Boolean;

Description:

The property specifies whether to allow users to insert the escape sequences to barcode text, in order to place the function characters and additional control information. An escape sequence is a series of characters used to place the function character and special character, or the control information.

Escape sequences use an escape character " \ " to change the meaning of the characters which follow it. For example:

ABCDEFG

\p

HIJKLMN

Some escape sequences may be followed by a parameters list, all parameters are comma delimited, and must be enclosed by square brackets. For example:

\s[1, 2]

ABCDEFGHIJKLMN

The escape sequences definition is different for every barcode symbology component, please read the "Escape sequences" section in the article of every barcode symbology component.

A.1.2 AllowKanjiMode

(TBarcodeFmx2D_MicroQRCode)

Specifies whether to allow the Kanji mode to be used when encoding the barcode data into a Micro QR Code

symbol.

Syntax: property

AllowKanjiMode: Boolean;

Description:

Micro QR Code

symbology has four encoding modes as Numeric mode, Alphanumeric mode, Kanji mode, and Byte mode respectively in decreasing order of encoding density. The Kanji mode can encode the Kanji characters more effectively. The property specifies

whether to allow the Kanji mode to be used when encoding the barcode data into a Micro QR Code

symbol.

If the property is set to true, the component will automatically select the encoding mode between Kanji mode and Byte mode when the

Kanji characters are encountered, in order to minimize the symbol size. Otherwise, all Kanji characters are always encoded in Byte

97

2D Barcode FMX Components User Manual

mode.

See also the "Encoding modes" section in the "

TBarcodeFmx2D_MicroQRCode

" article.

A.1.3 AllowKanjiMode

(TBarcodeFmx2D_QRCode)

Specifies whether to allow the Kanji mode to be used when encoding the barcode data into a QR Code

symbol.

Syntax: property

AllowKanjiMode: Boolean;

Description:

QR Code

symbology has four encoding modes as Numeric mode, Alphanumeric mode, Kanji mode, and Byte mode respectively in decreasing order of encoding density. The Kanji mode can encode the Kanji characters more effectively. The property specifies

whether to allow the Kanji mode to be used when encoding the barcode data into a QR Code

symbol.

If the property is set to true, the component will automatically select the encoding mode between Kanji mode and Byte mode when the

Kanji characters are encountered, in order to minimize the symbol size. Otherwise, all Kanji characters are always encoded in Byte mode.

See also the "Encoding modes" section in the "

TBarcodeFmx2D_QRCode

" article.

A.1.4 AutoCheckDigit

(TBarcodeFmx2D_RSS14, TBarcodeFmx2D_RSSLimited)

Specifies whether the check digit should be automatically appended to the barcode symbol.

Syntax: property

AutoCheckDigit: Boolean;

Description:

The RSS-14

and the

RSS Limited

barcode symbologies encode the GS1 14-digit EAN.UCC item identification number (Global Trade

Item Numbers, GTINs) in a symbol, its last digit represents the check digit. It is a form of redundancy check used for error detection. It consists of a single numeric character computed from the other character in the EAN.UCC item identification number.

The property specifies whether the check digit should be automatically appended to the barcode symbol.

If the AutoCheckDigit property is set to false, the check digit shall be included in the barcode text, so the length of barcode text shall is

14 numeric characters, and the last numeric character in the barcode text is the check digit.

If the AutoCheckDigit property is set to true, the check digit will be appended automatically by the component, so the length of barcode text shall is 13 numeric characters, and the check digit isn't required in the barcode text.

Note, the leading Application Identifier (01) is implied and is not encoded in the symbol. so it isn't required in the barcode text.

See also the "Check digit" section in the " TBarcodeFmx2D_RSS14

" and " TBarcodeFmx2D_RSSLimited

" articles.

98

2D Barcode FMX Components User Manual

A.1.5 AutoMode

(TBarcodeFmx2D_MaxiCode)

Specifies whether to automatically select the mode for a MaxiCode barcode symbol.

Syntax: property

AutoMode: Boolean;

Description:

The property specifies whether to automatically select the mode for a MaxiCode

barcode symbol, depending on the barcode text and

the Mode

property value.

If the property is set to true, the TBarcodeFmx2D_MaxiCode

component will automatically select the suitable mode depending on the barcode text and the value of

Mode

property:

If the

Mode

property is set to mode 2 or 3, the factual mode will be selected between mode 2 and 3, depending on the postal code field in the barcode text.

If the Mode

property is set to mode 4, the factual mode will be selected between mode 4 and 5, depending on the length of barcode text. If the length of barcode text is so short that can be encoded by using mode 5, the mode 5 will be used in order to employ enhanced error correction, otherwise the mode 4 will be used in order to accommodate more barcode text.

If the Mode

property is set to mode 5, the mode 5 will be selected always, in order to insure high level of enhanced error correction.

If the Mode

property is set to mode 6, the mode 6 will be selected always, in order to encodes a message used to program the reader system.

In this case, you can use the

CurrentMode

property to get the factual mode.

If the property is set to false, the mode will be specified by the Mode

property. The value of

CurrentMode

property is always equal to

the Mode

property value.

See also the "Modes" sections in the "

TBarcodeFmx2D_MaxiCode

" article.

A.1.6 Barcode

Specifies the barcode text in string format.

Syntax: property

Barcode: string;

Description:

Specifies the barcode text to encode it into the barcode symbol. The OnChange

event will occur when the property value is changed.

The OnInvalidChar

event will occur if there is any invalid character in the Barcode property value, and the

OnInvalidLength

event will occur if the length of the Barcode property value is invalid.

The property is of type string. It is in fact a UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence

(the BOM isn't included), then be encoded into the barcode symbol. If you want to use other encoding scheme (for example the ANSI,

UTF-16), please convert it in the OnEncode

event handle, or specify the converted bytes sequence in the Data

property.

If you want to encode a block of binary (bytes) data, please use the

Data

property, it is of type TBytes (array of bytes).

For the TBarcodeFmx2D_RSS14

and the TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be entered in the here, otherwise the check digit can be specified by you in here.

99

2D Barcode FMX Components User Manual

A.1.7 BarcodeHeight

Specifies the distance between the top and bottom of a barcode symbol in pixels.

Syntax: property

BarcodeHeight: Single;

Description:

Specifies the distance between the top and bottom of a barcode symbol in pixels. If the quiet zones are drawn (the ShowQuietZone

property is set to true), the

top quiet zone

and the bottom quiet zone

are included. See diagram (the SpaceColor property value is set

to claSilver in order to accentuate the quiet zones):

The property is set using the following formula:

When the property Stretch

is set to false:

The BarcodeHeight

property will be ignored, and the height of barcode symbol will be calculated based on the Module

property value.

You can get the height value by using the

Size

method.

When the property Stretch

is set to true:

If the BarcodeHeight property value is equal to zero:

When the Orientation

property is set to " boLeftRight " or " boRightLeft

", the TopMargin

property value will be subtracted from the height of the TImage

control that's specified by the Image

property, then the result will be used as the final barcode

height, the barcode symbol will be reduced/stretched to fit this final height value. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

When the Orientation

property is set to " boTopBottom " or " boBottomTop ", the

LeftMargin

property value will be subtracted from the width of the TImage

control that's specified by the Image

property, then the result will be used as the final barcode

height, the barcode symbol will be reduced/stretched to fit this final height value. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

100

If the BarcodeHeight property value is greater than zero:

The barcode symbol will be reduced/stretched to fit this height value. See diagram (the SpaceColor property value is set to

2D Barcode FMX Components User Manual

claSilver in order to accentuate the quiet zones):

If the BarcodeHeight property value is less than zero:

When the Orientation

property is set to " boLeftRight " or " boRightLeft ", the

TopMargin

property value and the absolute value of the negative height will be subtracted from the height of the TImage control that's specified by the

Image

property, then the result will be used as the final barcode height, the barcode symbol will be reduced/stretched to fit this final height value (it specifies the bottom margin of the barcode symbol, -1 denotes the bottom margin is 1, -2 denotes the bottom margin is 2, ...).

See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

When the Orientation

property is set to " boTopBottom " or " boBottomTop

", the LeftMargin

property value and the absolute value of the negative height will be subtracted from the width of the TImage

control that's specified by the Image

property, then the result will be used as the final barcode height, the barcode symbol will be reduced/stretched to fit this final height value (it specifies the right margin of the barcode symbol, -1 denotes the right margin is 1, -2 denotes the right margin is 2, ...).

See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

A.1.8 BarcodeWidth

Specifies the distance between the beginning and end of a barcode symbol in pixels.

Syntax: property

BarcodeWidth: Single;

Description:

Specifies the distance between the beginning and end of a barcode symbol in pixels. If the quiet zones are drawn (the

ShowQuietZone

property is set to true), the

leading quiet zone

and the trailing quiet zone

are included. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

The property is set using the following formula:

101

2D Barcode FMX Components User Manual

When the property Stretch

is set to false:

The BarcodeWidth

property will be ignored, and the width of barcode symbol will be calculated based on the Module

property value.

You can get the width value by using the Size

method.

When the property Stretch

is set to true:

If the property value is equal to zero:

When the Orientation

property is set to " boLeftRight " or " boRightLeft

", the LeftMargin

property value will be subtracted from the width of the TImage control that's specified by the

Image

property, then the result will be used as the final barcode width,

the barcode symbol will be reduced/stretched to fit this final width value. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

When the Orientation

property is set to " boTopBottom " or " boBottomTop ", the

TopMargin property value will be subtracted

from the height of the TImage

control that's specified by the Image

property, then the result will be used as the final barcode

width, the barcode symbol will be reduced/stretched to fit this final width value. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

If the property value is greater than zero:

The barcode symbol will be reduced/stretched to fit this width value. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

If the property value is less than zero:

When the Orientation

property is set to " boLeftRight " or " boRightLeft

", the LeftMargin

property value and the absolute value of the negative width will be subtracted from the width of the TImage

control that's specified by the Image

property, then the result will be used as the final barcode width, the barcode symbol will be reduced/stretched to fit this final width value (it specifies the right margin of the barcode symbol, -1 denotes the right margin is 1, -2 denotes the right margin is 2, ...). See

diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

102

When the Orientation

property is set to " boTopBottom " or " boBottomTop

", the TopMargin

property value and the absolute value of the negative width will be subtracted from the height of the TImage

control that's specified by the Image

property, then the result will be used as the final barcode width, the barcode symbol will be reduced/stretched to fit this final width value

(it specifies the bottom margin of the barcode symbol, -1 denotes the bottom margin is 1, -2 denotes the bottom margin is 2,

...). See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

2D Barcode FMX Components User Manual

Note:

For the

TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the trailing quiet zone

are included always, even if the

ShowQuietZone

property is set to false. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

A.1.9 BarColor

Specifies the color for all bars or dark modules in the barcode symbol, By default, it's claBlack .

Syntax: property

BarColor: TAlphaColor;

Description:

For the

Matrix

2D barcode symbologies,

including TBarcodeFmx2D_AztecCode

,

TBarcodeFmx2D_AztecRunes

,

TBarcodeFmx2D_DataMatrix

,

TBarcodeFmx2D_DataMatrixECC200

,

TBarcodeFmx2D_HanXinCode

,

TBarcodeFmx2D_GridMatrix

,

TBarcodeFmx2D_CompactMatrix

,

TBarcodeFmx2D_QRCode

,

TBarcodeFmx2D_MaxiCode

, and

TBarcodeFmx2D_MicroQRCode

, the

property specifies the color of every dark module in matrix symbol if the Inversed

property is set to false. Otherwise, it specifies the color of every light module (background color). The module is single cell in the matrix symbol used to encode one bit data, nominally a

suqare shape, in MaxiCode

symbology, it's a regular hexagonal shape.

F o r

Stacked

2D barcode symbologies and

Linear

1D barcode symbologies,

including TBarcodeFmx2D_Code16K

,

TBarcodeFmx2D_PDF417 ,

TBarcodeFmx2D_MicroPDF417

,

TBarcodeFmx2D_RSS14

,

TBarcodeFmx2D_RSSLimited

, and

TBarcodeFmx2D_RSSExpanded , the property specifies the color for all bars in the barcode symbol if the

Inversed

property is set to false. Otherwise, it specifies the color for all spaces (background color).

Also, when the leading quiet zone

, trailing quiet zone

,

top quiet zone

, and bottom quiet zone

are drawn (the ShowQuietZone

property is set to true), if the

Inversed

property is set to true, the color specified by this BarColor property will be used to draw them. Otherwise,

the color specified by the SpaceColor

property will be used.

A.1.10 BottomQuietZone

Specifies the vertical height of the bottom quiet zone in modules.

Syntax: property

BottomQuietZone: Integer;

Description:

103

2D Barcode FMX Components User Manual

Specifies the vertical height of the bottom quiet zone in modules. The quiet zone is drawn using the color specified by the SpaceColor

property if the

Inversed

property is set to false. Otherwise, it's drawn using the color specified by the BarColor

property. See diagram

(the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

This property is useful only when the ShowQuietZone

property value is set to true.

A.1.11 BytesAlwaysBackToUpper

(TBarcodeFmx2D_AztecCode)

The property is an advanced feature which allows low level control over data encoding for an Aztec Code

symbol.

Syntax: property

BytesAlwaysBackToUpper: Boolean;

Description:

In the Aztec Code

symbology specification, at the end of bytes mode, the encoding mode returns to the mode from which bytes mode was shifted into. For some readers, the encoding mode always returns to the upper mode, change the property to true in order to ensure barcode symbols can be read by these readers.

Please use your reader to read the following symbol, if the output text is "~~~a9a9a9TTT", please set the property to true, if the output text is "~~~a9a9a9\\\", please set the property to false.

A.1.12 Compact

(TBarcodeFmx2D_PDF417)

Specifies whether the PDF417

barcode symbol is generated in Compact

PDF417

format.

Syntax: property

Compact: Boolean;

Description:

In an environment where space considerations are a primary concern and symbol damage is unlikely (e.g. an office), the right row indicators of a

PDF417

symbol may be omitted and the stop pattern may be reduced to one module width bar. This reduction version

is called Compact PDF417 , which is fully decoder compatible with standard PDF417 . The property specifiies whether the PDF417 barcode symbol is generated in Compact PDF417

format. See diagram:

Note, the Compact

PDF417

was referred as Truncated

PDF417

in previous standard.

See also the "Compact PDF417" section in the "

TBarcodeFmx2D_PDF417

" article.

104

2D Barcode FMX Components User Manual

A.1.13 CurrentColumns

(TBarcodeFmx2D_PDF417)

Contains the factual number of columns of a

PDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxPDF417Custom unit }

TPDF417_Columns = 1..30;

property

CurrentColumns: TPDF417_Columns;

Description:

The minimum number of columns (specified by the

MinColumns property) and the minimum number of rows (specified by the

MinRows

property) indicate the minimum symbol size for a PDF417

barcode symbol. The maximum number of columns (specified by

the MaxColumns

property) and the maximum number of rows (specified by the

MaxRows

property) indicate the maximum symbol size

for the PDF417

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size. Read

the property to retrieve the factual number of columns of the PDF417

barcode symbol.

The property can be one of values from 1 to 30, denotations the factual number of columns of a PDF417

2D barcode symbol. They are defined in the pfmxPDF417Custom unit.

The property is read only.

See also the "Symbol size" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.14 CurrentECCLevel

(TBarcodeFmx2D_CompactMatrix)

Contains the factual error correction code level of a Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_EccLevel = 1..8;

property

CurrentECCLevel: TCompactMatrix_EccLevel;

Description:

The property always contains the factual error correction code level of a Compact Matrix

barcode symbol. It can be one of values from

1 to 8, corresponding to the ECC levels from 1 to 8.

If the ECCLevelUpgrade

property is set to true, the remaining data capacity of a

Compact Matrix

barcode symbol will be used to automatically upgrade the error correction code level, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Read the property to retrieve the factual error correction code level of the

Compact Matrix

barcode symbol.

If the ECCLevelUpgrade

property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of this property is always equal to the value of the ECCLevel

property.

105

2D Barcode FMX Components User Manual

The property is read only.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_CompactMatrix

" article.

A.1.15 CurrentECCLevel

(TBarcodeFmx2D_DataMatrix)

Contains the factual error correction code level of a Data Matrix (ECC 000 - 140)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrix unit }

TDataMatrix_ECCLevel = (dmECC000, dmECC050, dmECC080, dmECC100, dmECC140);

property

CurrentECCLevel: TDataMatrix_ECCLevel;

Description:

The property always contains the factual error correction code level of a Data Matrix (ECC 000 - 140)

barcode symbol. It can be one of five values dmECC000 , dmECC050 , dmECC080 , dmECC100 , and dmECC140 , corresponding to error correction code level ECC 000,

ECC 050, ECC 080, ECC 100, and ECC 140. They are defined in the pfmxDataMatrix unit.

If the ECCLevelUpgrade

property is set to true, the remaining data capacity of a

Data Matrix (ECC 000 - 140)

barcode symbol will be used to automatically upgrade the error correction code level, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Read the property to retrieve the factual error correction code level of the

Data Matrix (ECC 000 - 140) barcode symbol.

If the ECCLevelUpgrade

property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of this property is always equal to the value of the ECCLevel

property.

The property is read only.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_DataMatrix

" article.

A.1.16 CurrentECCLevel

(TBarcodeFmx2D_GridMatrix)

Contains the factual error correction code level of a Grid Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxGridMatrix unit }

TGridMatrix_EccLevel = (elLevel_Recommend, elLevel_1, elLevel_2, elLevel_3, elLevel_4, elLevel_5, elLevel_LowestRecommend);

property

CurrentECCLevel: TGridMatrix_EccLevel;

Description:

The

Grid Matrix

symbology offers five levels of error correction, from 1 to 5 respectively in increasing order of recovery capacity.

The property always contains the factual error correction code level of a Grid Matrix barcode symbol. It can be one of these values

(defined in the pfmxGridMatrix unit):

106

2D Barcode FMX Components User Manual elLevel_1

: The ECC level of a Grid Matrix

barcode symbol is 1. The percentage of total capacity for ECC data is 10%.

elLevel_2

: The ECC level of a Grid Matrix

barcode symbol is 2. The percentage of total capacity for ECC data is 20%.

elLevel_3

: The ECC level of a Grid Matrix

barcode symbol is 3. The percentage of total capacity for ECC data is 30%.

elLevel_4

: The ECC level of a Grid Matrix

barcode symbol is 4. The percentage of total capacity for ECC data is 40%.

elLevel_5

: The ECC level of a Grid Matrix

barcode symbol is 5. The percentage of total capacity for ECC data is 50%.

If the ECCLevelUpgrade

property is set to true, the remaining data capacity of a Grid Matrix

barcode symbol will be used to automatically upgrade the error correction code level, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Read the property to retrieve the factual error correction code level of the

Grid Matrix

barcode symbol.

If the ECCLevelUpgrade

property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of this property is always equal to the value of the ECCLevel

property.

The property is read only.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_GridMatrix

" article.

A.1.17 CurrentECCLevel

(TBarcodeFmx2D_HanXinCode)

Contains the factual error correction code level of a Han Xin Code

barcode symbol.

Syntax: type

{ Defined in the pfmxHanXinCode unit }

THanXinCode_EccLevel = (elLevel_1, elLevel_2, elLevel_3, elLevel_4);

property

CurrentECCLevel: THanXinCode_EccLevel;

Description:

The Han Xin Code

symbology offers four levels of error correction, from L1 to L4 respectively in increasing order of recovery capacity.

The property always contains the factual error correction code level of a Han Xin Code

barcode symbol. It can be one of these values

(defined in the pfmxHanXinCode unit):

elLevel_1

: The ECC level of a Han Xin Code

barcode symbol is L1. The recevory capacities (approx.) is 8%.

elLevel_2

: The ECC level of a Han Xin Code

barcode symbol is L2. The recevory capacities (approx.) is 15%.

elLevel_3

: The ECC level of a Han Xin Code

barcode symbol is L3. The recevory capacities (approx.) is 23%.

elLevel_4

: The ECC level of a Han Xin Code

barcode symbol is L4. The recevory capacities (approx.) is 30%.

If the ECCLevelUpgrade property is set to true, the remaining data capacity of a

Han Xin Code

barcode symbol will be used to automatically upgrade the error correction code level, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Read the property to retrieve the factual error correction code level of the

Han Xin Code

barcode symbol.

If the ECCLevelUpgrade

property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of this property is always equal to the value of the ECCLevel

property.

The property is read only.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_HanXinCode

" article.

107

2D Barcode FMX Components User Manual

A.1.18 CurrentECCLevel

(TBarcodeFmx2D_MicroQRCode)

Contains the factual error correction code level of a Micro QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxMicroQRCode unit }

TMicroQRCode_ECCLevel = (elLowest, elMedium, elQuality);

property

CurrentECCLevel: TMicroQRCode_ECCLevel;

Description:

The property always contains the factual error correction code level of a Micro QR Code barcode symbol. It can be one of these values

(defined in the pfmxMicroQRCode unit):

elLowest

: The ECC level of a

Micro QR Code

barcode symbol is L. The capability of recovery from the amounts of damage is 7%.

elMedium

: The ECC level of a Micro QR Code

barcode symbol is M. The capability of recovery from the amounts of damage is

15%.

elQuality

: The ECC level of a Micro QR Code

barcode symbol is Q. The capability of recovery from the amounts of damage is

25%.

If the ECCLevelUpgrade

property is set to true, the remaining data capacity of a Micro QR Code

barcode symbol will be used to automatically upgrade the error correction code level, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Read the property to retrieve the factual error correction code level of the

Micro QR Code

barcode symbol.

If the ECCLevelUpgrade

property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of this property is always equal to the value of the ECCLevel

property.

The property is read only.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_MicroQRCode

" article.

A.1.19 CurrentECCLevel

(TBarcodeFmx2D_PDF417)

Contains the factual error correction code level of a PDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxPDF417Custom unit }

TPDF417_EccLevel = (elEcc_0, elEcc_1, elEcc_2, elEcc_3, elEcc_4, elEcc_5, elEcc_6, elEcc_7, elEcc_8, elEcc_Auto);

property

CurrentECCLevel: TPDF417_EccLevel;

Description:

The property always contains the factual error correction code level of a PDF417

barcode symbol. It can be one of values from elEcc_0 to elEcc_8 , corresponding to error correction code level from ECC 0 to ECC 8. They are defined in the pfmxPDF417Custom unit.

If the ECCLevelUpgrade

property is set to true, the remaining data capacity of a PDF417

barcode symbol will be used to automatically upgrade the error correction code level. The highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Read the property to retrieve the factual error correction code level.

108

2D Barcode FMX Components User Manual

If the ECCLevelUpgrade

property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

If the ECCLevel

property is set to one of values from elECC_0 to elECC_8 , the value of this property is always equal to the value of the

ECCLevel

property. If the

ECCLevel

property is set to elEcc_Auto , the value of this property is the recommended minimum ECC level, depending on the length of barcode text.

The property is read only.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.20 CurrentECCLevel

(TBarcodeFmx2D_QRCode)

Contains the factual error correction code level of a QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxQRCode unit }

TQRCode_ECCLevel = (elLowest, elMedium, elQuality, elHighest);

property

CurrentECCLevel: TQRCode_ECCLevel;

Description:

The property always contains the factual error correction code level of a QR Code

barcode symbol. It can be one of these values

(defined in the pfmxQRCode unit):

elLowest

: The ECC level of a

QR Code barcode symbol is L. The capability of recovery from the amounts of damage is 7%.

elMedium

: The ECC level of a

QR Code barcode symbol is M. The capability of recovery from the amounts of damage is 15%.

elQuality

: The ECC level of a QR Code

barcode symbol is Q. The capability of recovery from the amounts of damage is 25%.

elHighest

: The ECC level of a QR Code

barcode symbol is H. The capability of recovery from the amounts of damage is 30%.

If the ECCLevelUpgrade

property is set to true, the remaining data capacity of a QR Code

barcode symbol will be used to automatically upgrade the error correction code level, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Read the property to retrieve the factual error correction code level of the

QR Code

barcode symbol.

If the ECCLevelUpgrade

property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of this property is always equal to the value of the ECCLevel

property.

The property is read only.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_QRCode

" article.

A.1.21 CurrentEncodeMode

(TBarcodeFmx2D_DataMatrix)

Contains the factual data encoding mode of a

Data Matrix (ECC 000 - 140) barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrix unit }

109

2D Barcode FMX Components User Manual

TDataMatrix_EncodeMode = (emAuto, emNumeric, emAlpha, emPunctuation, emAlphanumeric, emASCII, emBinary);

property

CurrentEncodeMode: TDataMatrix_EncodeMode;

Description:

Read the property to retrieve the factual data encoding mode of a Data Matrix (ECC 000 - 140)

barcode symbol. It can be one of these values: emNumeric , emAlpha , emPunctuation , emAlphanumeric , emASCII , and emBinary , corresponding to the Numeric (Base 11),

Alpha (Base 27), Punctuation (Base 37), Alphanumeric (Base 41), ASCII, and Binary encoding modes. They are defined in the pfmxDataMatrix unit.

If the EncodeMode

property is set to emAuto , the data encoding mode will be selected automatically, depending on the barcode text in order to minimize the symbol size. It can be one of these value: emNumeric , emAlpha , emPunctuation , emAlphanumeric , emASCII , and emBinary . You can read this property to get the factual data encoding mode.

If the EncodeMode

property isn't set to emAuto

, the value of this property is equal to the value of EncodeMode

property.

The property is read only.

See also the "Encoding modes" section in the "

TBarcodeFmx2D_DataMatrix

" article.

A.1.22 CurrentMode

(TBarcodeFmx2D_Code16K)

Contains the factual initial mode of a Code 16K

barcode symbol.

Syntax: type

{ Defined in the pfmxCode16K unit }

TCode16K_EncodeMode = (emAuto, emModeA, emModeB, emModeC, emModeB_FNC1, emModeC_FNC1, emModeC_Shift1B, emModeC_Shift2B, emMode_Extended);

property

CurrentMode: TCode16K_EncodeMode;

Description:

Read the property to retrieve the factual initial mode of a Code 16K

barcode symbol. It can be one of these values: emModeA , emModeB , emModeC , emModeB_FNC1 , emModeC_FNC1 , emModeC_Shift1B , emModeC_Shift2B , and emMode_Extended , corresponding to the initial modes 0 to 6, and extended data length mode. They are defined in the pfmxCode16K unit.

If the InitialMode property is set to

emAuto , the initial mode will be selected automatically, depending on the barcode text in order to minimize the symbol size. It can be one of these value: emModeA , emModeB , emModeC , emModeB_FNC1 , emModeC_FNC1 , emModeC_Shift1B , or emModeC_Shift2B . You can read this property to get the factual initial mode.

If the InitialMode

property isn't set to emAuto

, the value of this property is equal to the value of InitialMode

property.

The property is read only.

See also the "Initial modes" section in the " TBarcodeFmx2D_Code16K

" article.

A.1.23 CurrentMode

(TBarcodeFmx2D_MaxiCode)

110

2D Barcode FMX Components User Manual

Contains the factual mode of a MaxiCode

barcode symbol.

Syntax: type

{ Defined in the pfmxMaxiCode unit }

TMaxiCode_Mode = 2..6;

property

CurrentMode: TMaxiCode_Mode;

Description:

Read the property to retrieve the factual mode of a MaxiCode

barcode symbol. It can be one of values from 2 to 6, denotations the factual mode of a

MaxiCode

2D barcode symbol. They are defined in the pfmxMaxiCode unit.

If the AutoMode

property is set to Ture, the mode of

MaxiCode

symbol will be selected automatically, depending on the barcode text

and the value of Mode property. You can read this property to get the factual mode.

If the AutoMode

property is set to false, the value of this property is equal to the value of

Mode

property.

The property is read only.

See also the "Modes" section in the " TBarcodeFmx2D_MaxiCode

" article.

A.1.24 CurrentRows

(TBarcodeFmx2D_Code16K)

Contains the factual number of stacked rows of a Code 16K

barcode symbol.

Syntax: type

{ Defined in the pfmxCode16K unit }

TCode16K_Rows = 2..16;

property

CurrentRows: TCode16K_Rows;

Description:

The smallest number of stacked rows that accommodates the barcode text will be automatically selected between the minimum

number of stacked rows (specified by the MinRows

property) and the maximum number of stacked rows (specified by the

MaxRows

property). Read the property to retrieve the factual number of stacked rows of a Code 16K

barcode symbol.

The property can be one of values from 2 to 16, denotations the factual number of rows. They are defined in the pfmxCode16K unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_Code16K

" article.

A.1.25 CurrentRows

(TBarcodeFmx2D_PDF417)

Contains the factual number of stacked rows of a PDF417

barcode symbol.

Syntax: type

111

2D Barcode FMX Components User Manual

{ Defined in the pfmxPDF417Custom unit }

TPDF417_Rows = 3..90;

property

CurrentRows: TPDF417_Rows;

Description:

The minimum number of stacked rows (specified by the MinRows

property) and the minimum number of columns (specified by the

MinColumns

property) indicate the minimum symbol size for a PDF417

barcode symbol. The maximum number of stacked rows

(specified by the

MaxRows

property) and the maximum number of columns (specified by the MaxColumns

property) indicate the

maximum symbol size for the PDF417

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the

maximum symbol size. Read the property to retrieve the factual number of stacked rows of the PDF417

barcode symbol.

The property can be one of values from 3 to 90, denotations the factual number of rows. They are defined in the pfmxPDF417Custom unit.

The property is read only.

See also the "Symbol size" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.26 CurrentSegments

(TBarcodeFmx2D_CompactMatrix)

Contains the factual number of segments of a Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_Segments = 1..32;

property

CurrentSegments: TCompactMatrix_Segments;

Description:

In horizontal orientation, each Compact Matrix

symbol consists of an array of segments with a minimum of 1 segment (maximum 32 segments).

The minimum version (specified by the MinVersion

property) and the minimum number of segments (specified by the

MinSegments

property) indicate the minimum symbol size for a Compact Matrix

barcode symbol. The maximum version (specified by the MaxVersion

property) and the maximum number of segments (specified by the MaxSegments

property) indicate the maximum symbol size for the

Compact Matrix

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size. Read the property to retrieve the factual number of segments of the

Compact Matrix

barcode symbol.

The property can be one of values from 1 to 32, denotations the factual number of segments of a Compact Matrix

2D barcode symbol.

They are defined in the pfmxCompactMatrix unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_CompactMatrix

" article.

A.1.27 CurrentSize

(TBarcodeFmx2D_AztecCode)

112

2D Barcode FMX Components User Manual

Contains the factual symbol size of an Aztec Code

barcode symbol.

Syntax: type

{ Defined in the pfmxAztecCode unit }

TAztecCode_Size = (azSize_15Compact, azSize_19, azSize_19Compact, azSize_23, azSize_23Compact, azSize_27, azSize_27Compact, azSize_31, azSize_37, azSize_41, azSize_45, azSize_49, azSize_53, azSize_57, azSize_61, azSize_67, azSize_71, azSize_75, azSize_79, azSize_83, azSize_87, azSize_91, azSize_95, azSize_101, azSize_105, azSize_109, azSize_113, azSize_117, azSize_121, azSize_125, azSize_131, azSize_135, azSize_139, azSize_143, azSize_147, azSize_151);

property

CurrentSize: TAztecCode_Size;

Description:

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size specified by the

MinSize

property and the maximum symbol size specified by the MaxSize

property. Read the property to retrieve the factual symbol size of an

Aztec Code

barcode symbol.

The property can be one of values from azSize_15Compact to azSize_151 , denotations the factual format, number of rows and columns in current symbol. For example, the symbol size value azSize_19Compact

denotations the Aztec Code

symbol size is 19 rows by 19 columns, in compact format. These symbol size values are defined in the pfmxAztecCode unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_AztecCode

" article.

A.1.28 CurrentSize

(TBarcodeFmx2D_DataMatrix)

Contains the factual symbol size of a Data Matrix (ECC 000 - 140)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrix unit }

TDataMatrix_Size = (dmSize_09_09, dmSize_11_11, dmSize_13_13, dmSize_15_15, dmSize_17_17, dmSize_19_19, dmSize_21_21, dmSize_23_23, dmSize_25_25, dmSize_27_27, dmSize_29_29, dmSize_31_31, dmSize_33_33, dmSize_35_35, dmSize_37_37, dmSize_39_39, dmSize_41_41, dmSize_43_43, dmSize_45_45, dmSize_47_47, dmSize_49_49);

property

CurrentSize: TDataMatrix_Size;

Description:

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size specified by the

MinSize

property and the maximum symbol size specified by the MaxSize

property. Read the property to retrieve the factual symbol size of a

Data Matrix (ECC 000 - 140) barcode symbol.

The property can be one of values from dmSize_09_09 to dmSize_49_49 , denotations the factual number of rows and columns in current symbol. For example, the symbol size value dmSize_29_29

denotations the Data Matrix (ECC 000 - 140)

symbol size is 29 rows by 29 columns. These symbol size values are defined in the pfmxDataMatrix unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_DataMatrix

" article.

113

2D Barcode FMX Components User Manual

A.1.29 CurrentSize

(TBarcodeFmx2D_DataMatrixECC200)

Contains the factual symbol size of a Data Matrix (ECC 200)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrixEcc200 unit }

TDataMatrixEcc200_Size = (dmSize_10_10, dmSize_12_12, dmSize_14_14, dmSize_16_16, dmSize_18_18, dmSize_20_20, dmSize_22_22, dmSize_24_24, dmSize_26_26, dmSize_32_32, dmSize_36_36, dmSize_40_40, dmSize_44_44, dmSize_48_48, dmSize_52_52, dmSize_64_64, dmSize_72_72, dmSize_80_80, dmSize_88_88, dmSize_96_96, dmSize_104_104, dmSize_120_120, dmSize_132_132, dmSize_144_144, dmSize_8_18, dmSize_8_32, dmSize_12_26, dmSize_12_36, dmSize_16_36, dmSize_16_48);

property

CurrentSize: TDataMatrixEcc200_Size;

Description:

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size specified by the

MinSize

property and the maximum symbol size specified by the MaxSize

property. Read the property to retrieve the factual symbol size of a

Data Matrix (ECC 200)

barcode symbol.

The property can be one of values from dmSize_10_10 to dmSize_16_48 , denotations the factual number of rows and columns in current symbol. For example, the symbol size value dmSize_8_18

denotations the Data Matrix (ECC 200)

symbol size is 8 rows by 18 columns. These symbol size values are defined in the pfmxDataMatrixEcc200 unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_DataMatrixECC200

" article.

A.1.30 CurrentSize

(TBarcodeFmx2D_MicroPDF417)

Contains the factual symbol size of an MicroPDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_Size = (mpSize_1_11, mpSize_1_14, mpSize_1_17, mpSize_1_20, mpSize_1_24, mpSize_1_28, mpSize_2_8, mpSize_2_11, mpSize_2_14, mpSize_2_17, mpSize_2_20, mpSize_2_23, mpSize_2_26, mpSize_3_6, mpSize_3_8, mpSize_3_10, mpSize_3_12, mpSize_3_15, mpSize_3_20, mpSize_3_26, mpSize_3_32, mpSize_3_38, mpSize_3_44, mpSize_4_4, mpSize_4_6, mpSize_4_8, mpSize_4_10, mpSize_4_12, mpSize_4_15, mpSize_4_20, mpSize_4_26, mpSize_4_32, mpSize_4_38, mpSize_4_44);

property

CurrentSize: TMicroPDF417_Size;

Description:

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size specified by the

MinSize

property and the maximum symbol size specified by the MaxSize

property. Read the property to retrieve the factual symbol size of an

MicroPDF417 barcode symbol.

The property can be one of values from mpSize_1_11 to mpSize_4_44 , denotations the factual number of columns and rows in current symbol. For example, the symbol size value mpSize_3_12

denotations the MicroPDF417

symbol size is 12 stacked rows by 3 columns.

114

2D Barcode FMX Components User Manual

These symbol size values are defined in the pfmxMicroPDF417 unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_MicroPDF417

" article.

A.1.31 CurrentVersion

(TBarcodeFmx2D_CompactMatrix)

Contains the factual version value of a Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_Version = 1..32;

property

CurrentVersion: TCompactMatrix_Version;

Description:

There are 32 vertical sizes of Compact Matrix

symbol, referred to as version 1 to 32, in increasing order of symbol height and data capacity.

The minimum version (specified by the MinVersion

property) and the minimum number of segments (specified by the

MinSegments

property) indicate the minimum symbol size for a Compact Matrix

barcode symbol. The maximum version (specified by the MaxVersion

property) and the maximum number of segments (specified by the MaxSegments

property) indicate the maximum symbol size for the

Compact Matrix

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size. Read

the property to retrieve the factual version value of the Compact Matrix

barcode symbol.

The property can be one of values from 1 to 32, denotations the factual version value. They are defined in the pfmxCompactMatrix unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_CompactMatrix

" article.

A.1.32 CurrentVersion

(TBarcodeFmx2D_GridMatrix)

Contains the factual symbol version (symbol size) of a Grid Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxGridMatrix unit }

TGridMatrix_Version = 1..13;

property

CurrentVersion: TGridMatrix_Version;

Description:

There are thirteen sizes of Grid Matrix symbol, referred to as version 1 to 13, in increasing order of size and data capacity.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum

symbol version (symbol size) specified by the MinVersion

property and the maximum symbol version (symbol size) specified by the

115

2D Barcode FMX Components User Manual

MaxVersion

property. Read the property to retrieve the factual symbol version (symbol size) of a Grid Matrix

barcode symbol.

The property can be one of values from 1 to 13, denotations the factual version of a Grid Matrix

2D barcode symbol. They are defined in the pfmxGridMatrix unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_GridMatrix

" article.

A.1.33 CurrentVersion

(TBarcodeFmx2D_HanXinCode)

Contains the factual symbol version (symbol size) of a Han Xin Code

barcode symbol.

Syntax: type

{ Defined in the pfmxHanXinCode unit }

THanXinCode_Version = 1..84;

property

CurrentVersion: THanXinCode_Version;

Description:

There are eighty-four sizes of Han Xin Code

symbols, referred to as version 1 to 84, in increasing order of size and data capacity. The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum

symbol version (symbol size) specified by the MinVersion

property and the maximum symbol version (symbol size) specified by the

MaxVersion

property. Read the property to retrieve the factual symbol version (symbol size) of a Han Xin Code

barcode symbol.

The property can be one of values from 1 to 84, denotations the factual version of a Han Xin Code

2D barcode symbol. They are defined in the pfmxHanXinCode unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_HanXinCode

" article.

A.1.34 CurrentVersion

(TBarcodeFmx2D_MicroQRCode)

Contains the factual symbol version (symbol size) of a Micro QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxMicroQRCode unit }

TMicroQRCode_Version = 1..4;

property

CurrentVersion: TMicroQRCode_Version;

Description:

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum

symbol version (symbol size) specified by the MinVersion

property and the maximum symbol version (symbol size) specified by the

MaxVersion

property. Read the property to retrieve the factual symbol version (symbol size) of a Micro QR Code

barcode symbol.

The property can be one of values from 1 to 4, denotations the factual version of a Micro QR Code

2D barcode symbol. They are

116

2D Barcode FMX Components User Manual

defined in the pfmxMicroQRCode unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_MicroQRCode

" article.

A.1.35 CurrentVersion

(TBarcodeFmx2D_QRCode)

Contains the factual symbol version (symbol size) of a QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxQRCode unit }

TQRCode_Version = 1..40;

property

CurrentVersion: TQRCode_Version;

Description:

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum

symbol version (symbol size) specified by the MinVersion

property and the maximum symbol version (symbol size) specified by the

MaxVersion

property. Read the property to retrieve the factual symbol version (symbol size) of a QR Code

barcode symbol.

The property can be one of values from 1 to 40, denotations the factual version of a QR Code

2D barcode symbol. They are defined in the pfmxQRCode unit.

The property is read only.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_QRCode

" article.

A.1.36 Data

Specifies a block of binary (bytes) data to encode it into the barcode symbol.

Syntax: property

Data: TBytes;

Description:

You can use the property to specify a block of binary (bytes) data, and encode it into a barcode symbol. It's is of type TBytes (array of

bytes). The OnChange

event will occur when the property value is changed. The OnInvalidDataChar

event will occur if there is any invalid byte value in the Data

property value, and the OnInvalidDataLength

event will occur if the length of the Data property value is invalid.

The Barcode

property of TBarcodeFmx2D

component is of type string, it is in fact a UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the BOM isn't included), then be encoded into the barcode symbol. If you want to use other encoding scheme (for example the ANSI, UTF-16), please specify the converted bytes sequence in the Data property, or convert

it in the OnEncode

event handle.

For the TBarcodeFmx2D_RSS14

and the TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the property value, otherwise the check digit can be specified by you in it.

117

2D Barcode FMX Components User Manual

A.1.37 DefaultEncodeMode

(TBarcodeFmx2D_MicroPDF417)

Specifies the initial compaction mode for a

MicroPDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_EncodeMode = (emText, emByte, emNumeric, emNull);

property

DefaultEncodeMode: TMicroPDF417_EncodeMode;

Description:

The property specifies the initial compaction mode for a MicroPDF417 barcode symbol. In the specification of MicroPDF417

, the initial compaction mode in effect at the start of each symbol shall always be Byte compaction mode, but some readers use the Text compaction mode (Alpha sub-mode) as the initial compaction mode. The property should be set to match your reader. If you don't known the initial compaction mode used by your reader, please set the property value to emNull , or you can change the

Options

property to include the " poMicroPDF417Explicit901 " value, in order to explicitly insert a mode latch to Byte compaction mode into beginning of symbol data.

The property can be one of these values (defined in the pfmxMicroPDF417 unit).

emText

: Indicates the initial compaction mode to Text compaction mode. You can use the

DefaultTextEncodeMode

property to specify the Text compaction sub-mode.

emNumeric

: Indicates the initial compaction mode to Numeric compaction mode.

emByte

: Indicates the initial compaction mode to Byte compaction mode.

emNull

: The appropriate initial compaction mode will be introduced by an explicit mode latch depending on the barcode text.

See also the "Character set" section in the " TBarcodeFmx2D_MicroPDF417

" article.

A.1.38 DefaultTextEncodeMode

(TBarcodeFmx2D_MicroPDF417)

Specifies the initial Text compaction sub-mode for a MicroPDF417

barcode symbol if its initial compaction mode is set to Text compaction mode ( emText ).

Syntax: type

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_TextEncodeMode = (tmAlpha, tmLower, tmMixed, tmPunct);

property

DefaultTextEncodeMode: TMicroPDF417_TextEncodeMode;

Description:

In the specification of MicroPDF417

, the initial compaction mode in effect at the start of each symbol shall always be Byte compaction mode, but some readers use the Text compaction mode (Alpha sub-mode) as the initial compaction mode. The property specifies the initial Text compaction sub-mode for a

MicroPDF417

barcode symbol if its initial compaction mode is set to Text compaction mode (the

DefaultEncodeMode

property is set to emText ). It should be set to match your reader.

The property can be one of these values (defined in the pfmxMicroPDF417 unit).

118

2D Barcode FMX Components User Manual tmAlpha

: Indicates the initial Text compaction sub-mode to Alpha sub-mode.

tmLower

: Indicates the initial Text compaction sub-mode to Lower sub-mode.

tmMixed

: Indicates the initial Text compaction sub-mode to Mixed sub-mode.

tmPunct

: Indicates the initial Text compaction sub-mode to Punctuation sub-mode.

Note, the property is available only when the

DefaultEncodeMode

property is set to emText .

See also the "Character set" section in the " TBarcodeFmx2D_MicroPDF417

" and the "

DefaultEncodeMode

" articles.

A.1.39 ECCCount

(TBarcodeFmx2D_AztecCode)

Specifies the additional error correction size (number of codewords) for an

Aztec Code

symbol.

Syntax: property

ECCCount: Word;

Description:

The property specifies the additional error correction size (number of codewords) for an

Aztec Code

symbol.

If the ECCLevel

property is set to 0, the property specify the minimum error correction size (number of codewords) for an Aztec Code

symbol. Depending on message length, the symbology will typically have to add extra error correction codewords above this minimum to fill out the symbol.

If the ECCLevel property isn't set to 0, the property determines the error correction level together with the ECCLevel

property. For example, if the

ECCLevel

property is set to 23 and the ECCCount property is set to 3, a symbol (azSize_37) which holds 120 codewords should include at least 31 (120 * 23% + 3) error correction codewords, leaving up 89 codewords for encoding the data message. Depending on message length, the symbology will typically have to add extra error correction codewords above this minimum to fill out the symbol.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_AztecCode

" article.

A.1.40 ECCLevel

(TBarcodeFmx2D_AztecCode)

Specifies the alternate minimum error correction percentage for an

Aztec Code

symbol.

Syntax: type

{ Defined in the pfmxAztecCode unit }

TAztecCode_EccLevel = 0..99;

property

ECCLevel: TAztecCode_EccLevel;

Description:

The property specifies the alternate minimum error correction percentage for an Aztec Code

symbol (defined in the pfmxAztecCode unit), ranging from 0% to 99% plus always, for data security, 3 or more additional error correction codewords (specified by the

ECCCount

property). This is called a "minimum" percentage because, depending on message length, the symbology will typically have to add extra error correction codewords above this minimum to fill out the symbol.

119

2D Barcode FMX Components User Manual

It determines the error correction level together with the ECCCount property. For example, if the

ECCLevel property is set to 23 and

the ECCCount

property is set to 3, a symbol (azSize_37) which holds 120 codewords should include at least 31 (120 * 23% + 3) error correction codewords, leaving up 89 codewords for encoding the data message. Depending on message length, the symbology will typically have to add extra error correction codewords above this minimum to fill out the symbol.

The property can be one of values from 0 to 99, corresponding to the ECC level from 0% to 99%. They are defined in the pfmxAztecCode unit.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_AztecCode

" article.

A.1.41 ECCLevel

(TBarcodeFmx2D_CompactMatrix)

Specifies which ECC level (error correction code level) will be used to increase strength of a

Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_EccLevel = 1..8;

property

ECCLevel: TCompactMatrix_EccLevel;

Description:

The

Compact Matrix

symbology offers eight levels of error correction, from 1 to 8 respectively in increasing order of recovery capacity.

The property specifies which ECC level (error correction code level) will be used to increase strength of a Compact Matrix

barcode symbol. It can be one of values from 1 to 8, corresponding to the ECC levels from 1 to 8.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by this property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by this property. In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level.

The

CurrentECCLevel

property can always be used to get the factual error correction code level.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_CompactMatrix

" article.

A.1.42 ECCLevel

(TBarcodeFmx2D_DataMatrix)

Specifies which ECC level (error correction code level) will be used to increase strength of a Data Matrix (ECC 000 - 140)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrix unit }

TDataMatrix_ECCLevel = (dmECC000, dmECC050, dmECC080, dmECC100, dmECC140);

property

ECCLevel: TDataMatrix_ECCLevel;

Description:

120

2D Barcode FMX Components User Manual

The

Data Matrix (ECC 000 - 140)

symbology offers five levels of error correction, referred to as ECC 000, ECC 050, ECC 080, ECC 100 and ECC 140 respectively in increasing order of recovery capacity. In an application, it is important to understand that these error correction levels result in the generation of a proportional increase in the number of bits in the message (and hence increase in the size of the symbol), and offer different levels of error recovery.

The property specifies which ECC level (error correction code level) will be used to increase strength of a Data Matrix (ECC 000 - 140)

barcode symbol. It can be one of these values (defined in the pfmxDataMatrix unit):

dmECC000

: Indicates to use the ECC 000, namely, no error correction.

dmECC050

: Indicates to use the ECC 050, 25% data capacity is used for error correction, up to 2.8% damage can be corrected.

dmECC080

: Indicates to use the ECC 080, 33.3% data capacity is used for error correction, up to 5.5% damage can be corrected.

dmECC100

: Indicates to use the ECC 100, 50% data capacity is used for error correction, up to 12.6% damage can be corrected.

dmECC140

: Indicates to use the ECC 140, 75% data capacity is used for error correction, up to 25% damage can be corrected.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by this property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by this property. In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level.

The

CurrentECCLevel

property can always be used to get the factual error correction code level.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_DataMatrix

" article.

A.1.43 ECCLevel

(TBarcodeFmx2D_GridMatrix)

Specifies which ECC level (error correction code level) will be used to increase strength of a

Grid Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxGridMatrix unit }

TGridMatrix_EccLevel = (elLevel_Recommend, elLevel_1, elLevel_2, elLevel_3, elLevel_4, elLevel_5, elLevel_LowestRecommend);

property

ECCLevel: TGridMatrix_EccLevel;

Description:

The

Grid Matrix

symbology offers five levels of error correction, from 1 to 5 respectively in increasing order of recovery capacity.

The property specifies which ECC level (error correction code level) will be used to increase strength of a Grid Matrix

barcode symbol.

It can be one of these values (defined in the pfmxGridMatrix unit):

elLevel_1

: Indicates to use the ECC level 1. The percentage of total capacity for ECC data is 10%. Note, it is inapplicable to the version 1.

elLevel_2

: Indicates to use the ECC level 2. The percentage of total capacity for ECC data is 20%.

elLevel_3

: Indicates to use the ECC level 3. The percentage of total capacity for ECC data is 30%.

elLevel_4

: Indicates to use the ECC level 4. The percentage of total capacity for ECC data is 40%.

elLevel_5

: Indicates to use the ECC level 5. The percentage of total capacity for ECC data is 50%.

elLevel_Recommend

: For each symbol version, the denotative ECC levels are listed in the following table:

121

2D Barcode FMX Components User Manual

Version

1

2, 3

4 - 13

Denotative ECC level

ECC level 5

ECC level 4

ECC level 3

elLevel_LowestRecommend

: For each symbol version, the denotative lowest ECC levels are listed in the following table:

Version

1

2

3 - 13

Denotative ECC level

ECC level 4

ECC level 2

ECC level 1

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by this property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by this property. In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level.

The

CurrentECCLevel

property can always be used to get the factual error correction code level.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_GridMatrix

" article.

A.1.44 ECCLevel

(TBarcodeFmx2D_HanXinCode)

Specifies which ECC level (error correction code level) will be used to increase strength of a

Han Xin Code

barcode symbol.

Syntax: type

{ Defined in the pfmxHanXinCode unit }

THanXinCode_EccLevel = (elLevel_1, elLevel_2, elLevel_3, elLevel_4);

property

ECCLevel: THanXinCode_EccLevel;

Description:

The

Han Xin Code symbology offers four levels of error correction, from L1 to L4 respectively in increasing order of recovery capacity.

The property specifies which ECC level (error correction code level) will be used to increase strength of a Han Xin Code

barcode symbol. It can be one of these values (defined in the pfmxHanXinCode unit):

elLevel_1

: Indicates to use the ECC level L1. The recevory capacities (approx.) is 8%.

elLevel_2

: Indicates to use the ECC level L2. The recevory capacities (approx.) is 15%.

elLevel_3

: Indicates to use the ECC level L3. The recevory capacities (approx.) is 23%.

elLevel_4

: Indicates to use the ECC level L4. The recevory capacities (approx.) is 30%.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by this property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by this property. In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level.

The

CurrentECCLevel

property can always be used to get the factual error correction code level.

122

2D Barcode FMX Components User Manual

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_HanXinCode

" article.

A.1.45 ECCLevel

(TBarcodeFmx2D_MicroQRCode)

Specifies which ECC level (error correction code level) will be used to increase strength of a

Micro QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxMicroQRCode unit }

TMicroQRCode_EccLevel = (elLowest, elMedium, elQuality);

property

ECCLevel: TMicroQRCode_EccLevel;

Description:

The Micro QR Code symbology offers three levels of error correction, referred to as L, M, and Q respectively in increasing order of

recovery capacity.

The property specifies which ECC level (error correction code level) will be used to increase strength of a Micro QR Code

barcode symbol. It can be one of these values (defined in the pfmxMicroQRCode unit):

elLowest

: Indicates to use the ECC level L, up to 7% (approx.) damage can be corrected.

elMedium

: Indicates to use the ECC level M, up to 15% (approx.) damage can be corrected.

elQuality

: Indicates to use the ECC level Q, up to 25% (approx.) damage can be corrected.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by this property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by this property. In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level.

The

CurrentECCLevel

property can always be used to get the factual error correction code level.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_MicroQRCode

" article.

A.1.46 ECCLevel

(TBarcodeFmx2D_PDF417)

Specifies which ECC level (error correction code level) will be used to increase strength of a

PDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxPDF417Custom unit }

TPDF417_EccLevel = (elEcc_0, elEcc_1, elEcc_2, elEcc_3, elEcc_4, elEcc_5, elEcc_6, elEcc_7, elEcc_8, elEcc_Auto);

property

ECCLevel: TPDF417_EccLevel;

Description:

The

PDF417

symbology offers nine levels of error correction, referred to as ECC 0 to ECC 8 respectively in increasing order of recovery

123

2D Barcode FMX Components User Manual

capacity.

The property specifies which ECC level (error correction code level) will be used to increase strength of a PDF417

barcode symbol. It can be one of values from elECC_0 to elECC_8 , corresponding to the ECC level from 0 to 8. Also, it can be set to elEcc_Auto , indicates the recommended minimum ECC level will be used, depending on the length of barcode text. These ECC levels are defined in the pfmxPDF417Custom unit, they are listed in following table:

Property value

elECC_0 elECC_1 elECC_2 elECC_3 elECC_4 elECC_5 elECC_6 elECC_7 elECC_8

ECC Level

ECC 0

ECC 1

ECC 2

ECC 3

ECC 4

ECC 5

ECC 6

ECC 7

ECC 8

Number of

Error correction codewrods

2

4

8

16

32

64

128

256

512

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by this property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by this property. In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level.

The

CurrentECCLevel

property can always be used to get the factual error correction code level.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.47 ECCLevel

(TBarcodeFmx2D_QRCode)

Specifies which ECC level (error correction code level) will be used to increase strength of a

QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxQRCode unit }

TQRCode_ECCLevel = (elLowest, elMedium, elQuality, elHighest);

property

ECCLevel: TQRCode_ECCLevel;

Description:

The

QR Code symbology offers four levels of error correction, referred to as L, M, Q and H respectively in increasing order of recovery

capacity.

The property specifies which ECC level (error correction code level) will be used to increase strength of a QR Code barcode symbol. It

can be one of these values (defined in the pfmxQRCode unit):

elLowest

: Indicates to use the ECC level L, up to 7% (approx.) damage can be corrected.

elMedium

: Indicates to use the ECC level M, up to 15% (approx.) damage can be corrected.

elQuality

: Indicates to use the ECC level Q, up to 25% (approx.) damage can be corrected.

elHighest

: Indicates to use the ECC level H, up to 30% (approx.) damage can be corrected.

If the ECCLevelUpgrade

property is set to true, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by this property, and

124

2D Barcode FMX Components User Manual

the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by this property. In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level.

The

CurrentECCLevel

property can always be used to get the factual error correction code level.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_QRCode

" article.

A.1.48 ECCLevelUpgrade

(TBarcodeFmx2D_CompactMatrix)

For the Compact Matrix

barcode symbols, the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level in order to increase symbols strength.

Syntax: property

ECCLevelUpgrade: Boolean;

Description:

For a Compact Matrix

barcode symbol, the symbol size may be determined depending on the barcode text length and the error

correction code level specified by the ECCLevel

property. And the barcode text and the error correction code don't usually fill the maximum data capacity of the symbol. the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level, in order to increase symbols strength.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased. The

CurrentECCLevel

property can be used to get the factual error correction code level.

If the ECCLevelUpgrade property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of

CurrentECCLevel

property is always equal to the value of

ECCLevel

property.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_CompactMatrix

" article.

A.1.49 ECCLevelUpgrade

(TBarcodeFmx2D_DataMatrix)

For the Data Matrix (ECC 000 - 140)

barcode symbols, the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level in order to increase symbols strength.

Syntax: property

ECCLevelUpgrade: Boolean;

Description:

For a Data Matrix (ECC 000 - 140)

barcode symbol, the symbol size may be determined depending on the barcode text length and the

error correction code level specified by the ECCLevel

property. And the barcode text and the error correction code don't usually fill the maximum data capacity of the symbol. the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level, in order to increase symbols strength.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

125

2D Barcode FMX Components User Manual

property, and the symbol size will not be increased. The

CurrentECCLevel

property can be used to get the factual error correction code level.

If the ECCLevelUpgrade property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of

CurrentECCLevel

property is always equal to the value of

ECCLevel

property.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_DataMatrix

" article.

A.1.50 ECCLevelUpgrade

(TBarcodeFmx2D_GridMatrix)

For the Grid Matrix

barcode symbols, the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level in order to increase symbols strength.

Syntax: property

ECCLevelUpgrade: Boolean;

Description:

For a Grid Matrix

barcode symbol, the symbol size may be determined depending on the barcode text length and the error correction

code level specified by the ECCLevel

property. And the barcode text and the error correction code don't usually fill the maximum data capacity of the symbol. the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level, in order to increase symbols strength.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased. The

CurrentECCLevel

property can be used to get the factual error correction code level.

If the ECCLevelUpgrade property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of

CurrentECCLevel

property is always equal to the value of

ECCLevel

property.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_GridMatrix

" article.

A.1.51 ECCLevelUpgrade

(TBarcodeFmx2D_HanXinCode)

For the Han Xin Code

barcode symbols, the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level in order to increase symbols strength.

Syntax: property

ECCLevelUpgrade: Boolean;

Description:

For a Han Xin Code

barcode symbol, the symbol size may be determined depending on the barcode text length and the error

correction code level specified by the ECCLevel

property. And the barcode text and the error correction code don't usually fill the maximum data capacity of the symbol. the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level, in order to increase symbols strength.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

126

2D Barcode FMX Components User Manual

property, and the symbol size will not be increased. The

CurrentECCLevel

property can be used to get the factual error correction code level.

If the ECCLevelUpgrade property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of

CurrentECCLevel

property is always equal to the value of

ECCLevel

property.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_HanXinCode

" article.

A.1.52 ECCLevelUpgrade

(TBarcodeFmx2D_MicroQRCode)

For the Micro QR Code

barcode symbols, the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level in order to increase symbols strength.

Syntax: property

ECCLevelUpgrade: Boolean;

Description:

For a Micro QR Code

barcode symbol, the symbol size may be determined depending on the barcode text length and the error

correction code level specified by the ECCLevel

property. And the barcode text and the error correction code don't usually fill the maximum data capacity of the symbol. the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level, in order to increase symbols strength.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased. The

CurrentECCLevel

property can be used to get the factual error correction code level.

If the ECCLevelUpgrade property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of

CurrentECCLevel

property is always equal to the value of

ECCLevel

property.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_MicroQRCode

" article.

A.1.53 ECCLevelUpgrade

(TBarcodeFmx2D_PDF417)

For a PDF417

barcode symbol, the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level in order to increase symbols strength.

Syntax: property

ECCLevelUpgrade: Boolean;

Description:

For a PDF417

barcode symbol, the symbol size may be determined depending on the barcode text length and the error correction

code level specified by the ECCLevel

property. And the barcode text and the error correction code don't usually fill the maximum data capacity of the symbol. the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level, in order to increase symbols strength.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

127

2D Barcode FMX Components User Manual

property, and the symbol size will not be increased.

If the ECCLevelUpgrade property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

If the ECCLevel

property is set to one of values from elECC_0 to elECC_8 , the factual error correction code level is always equal to the

value of the ECCLevel

property. If the

ECCLevel

property is set to elEcc_Auto , the factual error correction code level is the recommended minimum ECC level, depending on the length of barcode text.

The

CurrentECCLevel

property can be used to get the factual error correction code level.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.54 ECCLevelUpgrade

(TBarcodeFmx2D_QRCode)

For the QR Code

barcode symbols, the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level in order to increase symbols strength.

Syntax: property

ECCLevelUpgrade: Boolean;

Description:

For a QR Code

barcode symbol, the symbol size may be determined depending on the barcode text length and the error correction

code level specified by the ECCLevel

property. And the barcode text and the error correction code don't usually fill the maximum data capacity of the symbol. the property specifies whether to use the remaining capacity to automatically upgrade the error correction code level, in order to increase symbols strength.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol

size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel

property, and the symbol size will not be increased. The

CurrentECCLevel

property can be used to get the factual error correction code level.

If the ECCLevelUpgrade property is set to false, the error correction code level specified by the

ECCLevel

property will be used always.

The value of

CurrentECCLevel

property is always equal to the value of

ECCLevel

property.

See also the "Error checking and correcting (ECC)" section in the "

TBarcodeFmx2D_QRCode

" article.

A.1.55 EnableUpdateDB

Determines whether the user can change the value of the field.

Syntax: property

EnableUpdateDB: Boolean;

Description:

If you link the Barcode

or Data

property to a data field using the LiveBindings, the EnableUpdateDB property specify whether the

TBarcodeFmx2D barcode component allows the user to change the field value by changing the value of its

Barcode

or Data

property.

When the EnableUpdateDB

property is set to false. The TBarcodeFmx2D

barcode component can only be used to draw the value of the field on the current record into a barcode symbol.

When the EnableUpdateDB

property is set to true. If the Barcode

property is linked to a data field, the user can change the field value

128

2D Barcode FMX Components User Manual

by changing the

Barcode

property value of the TBarcodeFmx2D

barcode component. If the Data

property is linked to a data field, the

user can change the field value by changing the Data

property value of the

TBarcodeFmx2D

barcode component.

A.1.56 EncodeMode

(TBarcodeFmx2D_DataMatrix)

Specifies the data encoding mode for a Data Matrix (ECC 000 - 140)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrix unit }

TDataMatrix_EncodeMode = (emAuto, emNumeric, emAlpha, emPunctuation, emAlphanumeric, emASCII, emBinary);

property

EncodeMode: TDataMatrix_EncodeMode;

Description:

The Data Matrix (ECC 000 - 140)

symbology offers six kinds of encoding mode, referred to as Numeric (Base 11), Alpha (Base 27),

Alphanumeric (Base 37), Punctuation (Base 41), ASCII, and Binary respectively in decreasing order of encoding density. The property specifies which data encoding mode will be used.

The property can be one of these values (defined in the pfmxDataMatrix unit):

emAuto

: The encoding mode will be selected automatically, depending on the barcode text, in other words, the barcode text to be encoded will be analysed, and an appropriates lowest level (highest encoding density) encoding mode will be selected, in order to

minimize the symbol size. The property CurrentEncodeMode

can be used to get the factual encoding mode.

emNumeric

: Indicates to use the Numeric (Base 11) encoding mode. It encodes 10 numeric characters 0 to 9, and the space character. The encoding density is 3.5 bits per data character. The encoding mode has highest encoding density.

emAlpha

: Indicates to use the Alpha (Base 27) encoding mode. It encodes 26 upper case letters A to Z, and the space character.

The encoding density is 4.8 bits per data character.

emAlphanumeric

: Indicates to use the Alphanumeric (Base 37) encoding mode. It encodes 26 upper case letters A to Z, 10 numeric characters 0 to 9, and the space character. The encoding density is 5.25 bits per data character.

emPunctuation

: Indicates to use the Punctuation (Base 41) encoding mode. It encodes 26 upper case letters A to Z, 10 numeric characters 0 to 9, and the space, point(.), hyphen(-), comma(,) and solidus(/) characters. The encoding density is 5.5 bits per data character.

emASCII

: Indicates to use the ASCII encoding mode. It encodes all 128 ASCII characters from ISO/IEC 646. The encoding density is 7 bits per data character.

emBinary

: Indicates to use the Binary encoding mode. It encodes all 256 8-bit bytes. It shall be used for closed applications, where the data interpretation shall be determined by the user. The encoding density is 8 bits per byte. The encoding mode has lowest encoding density.

The

CurrentEncodeMode

property can always be used to get the factual encoding mode.

See also the "Encoding modes" section in the "

TBarcodeFmx2D_DataMatrix

" article.

A.1.57 EncodePolicy

(TBarcodeFmx2D_MicroQRCode)

129

2D Barcode FMX Components User Manual

Indicates how to use the encoding mode in a Micro QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxQRCodeCom unit }

TQRCode_EncodePolicy = (epMixingOptimal, epMixingQuick, epSingleMode);

property

EncodePolicy: TQRCode_EncodePolicy;

Description:

The Micro QR Code

symbology offers four kinds of encoding mode, referred to as Numeric mode, Alphanumeric mode, Kanji mode and Byte mode respectively in decreasing order of encoding density.

This property indicates how to use these encoding mode by the component. It can be one of these values (defined in the pfmxQRCodeCom unit):

epMixingOptimal

: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The optimal

combination of encoding modes will be used in order to minimize the symbol size.

epMixingQuick

: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode

property is set to

true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The combination of

encoding modes may not be the optimal one, in order to optimize encoding speed.

epSingleMode

: The encoding mode will be selected automatically and applied to entire symbol, based on the barcode text, in other words, the barcode text to be encoded will be analysed, and an appropriates lowest level (highest encoding density) encoding mode will be selected, in order to minimize the symbol size, and the encoding mode will not be switched in the sybmol.

Note, the Kanji mode will not be used if the AllowKanjiMode

property is set to false.

See also the "Encoding modes" section in the "

TBarcodeFmx2D_MicroQRCode

" article.

A.1.58 EncodePolicy

(TBarcodeFmx2D_QRCode)

Indicates how to use the encoding mode in a QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxQRCodeCom unit }

TQRCode_EncodePolicy = (epMixingOptimal, epMixingQuick, epSingleMode);

property

EncodePolicy: TQRCode_EncodePolicy;

Description:

The

QR Code symbology offers four kinds of encoding mode, referred to as Numeric mode, Alphanumeric mode, Kanji mode and Byte

mode respectively in decreasing order of encoding density.

This property indicates how to use these encoding mode by the component. It can be one of these values (defined in the pfmxQRCodeCom unit):

epMixingOptimal

: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The optimal

combination of encoding modes will be used in order to minimize the symbol size.

epMixingQuick

: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode

property is set to

true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The combination of

encoding modes may not be the optimal one, in order to optimize encoding speed.

130

2D Barcode FMX Components User Manual epSingleMode

: The encoding mode will be selected automatically and applied to entire symbol, based on the barcode text, in other words, the barcode text to be encoded will be analysed, and an appropriates lowest level (highest encoding density) encoding mode will be selected, in order to minimize the symbol size, and the encoding mode will not be switched in the sybmol.

Note, the Kanji mode will not be used if the AllowKanjiMode

property is set to false.

See also the "Encoding modes" section in the "

TBarcodeFmx2D_QRCode

" article.

A.1.59 FixedLength

(TBarcodeFmx2D_AztecRunnes)

Specifies whether the leading zeros are required in the barcode text of an Aztec Runes

barcode symbol.

Syntax: property

FixedLength: Boolean;

Description:

For the Aztec Runes

barcode symbology, if the barcode text is specified by the

Barcode

property, it must be set to a number string. If

it's secified by the Data

property, it must be set to a number in ASCII bytes sequence. The number is an integer between 0 and 255

(including the boundaries). The property specifies whether the leading zeros are required in the barcode text.

If the property is set to true, the length of the barcode text must be exactly equal to 3 digits, adding leading zeros are required if the length is less than 3 digits, such as '0' , '2' , and '25' .

If the property is set to false, the length of the number barcode text should be less than, or equal to 3 digits, the leading zeros are optional, such as '0' , '12' , '012' , and '255' . In this case, the barcode symbol isn't changed when you remove leading zeros from the barcode text or add leading zeros to the barcode text. For example, the barcode symbol '12' is same as barcode symbol '012' .

Note, for the Aztec Runes

barcode symbology, the

Barcode

property cannot be set to an empty string, otherwise, an OnInvalidLength

will occur. Also, the

Data

property cannot be set to an empty TBytes

array, otherwise, an OnInvalidDataLength

event will occur.

See also the "Character set" and the "Data capacity" sections in the " TBarcodeFmx2D_AztecRunes

" article.

A.1.60 Image

Specifies a TImage control to represent the barcode symbol.

Syntax: property

Image: TControl;

Description:

Specifies a TImage control to display the barcode symbol. The barcode picture will not be saved into the DFM file in design time.

You can link single TImage

control to multiple TBarcodeFmx2D

components in order to display multiple barcode symbols in the

TImage

control (using LeftMargin

and TopMargin

properties to specify the position for every barcode symbol).

A.1.61 InitialMode

131

2D Barcode FMX Components User Manual

(TBarcodeFmx2D_Code16K)

Specifies the initial mode for Code 16K

barcode symbology.

Syntax: type

{ Defined in the pfmxCode16K unit }

TCode16K_EncodeMode = (emAuto, emModeA, emModeB, emModeC, emModeB_FNC1, emModeC_FNC1, emModeC_Shift1B, emModeC_Shift2B, emMode_Extended);

property

InitialMode: TCode16K_EncodeMode;

Description:

The property specifies the initial mode for Code 16K

barcode symbology. The initial mode indicates the initial code set and may also represent an implied leading FNC1 character or implied leading SHIFT B character as shown in following table. The code set will be automatically switched if a character is encountered that cannot be encoded by current code set. And Implied characters function as if they were actual symbol characters but don not occupy any space.

There are seven kinds of initial mode, from 0 to 6, and a kind of extended data length mode. The initial mode values from emCodeA to emExtended , corresponding to these modes, are defined in the pfmxCode16K unit. These modes and their values are listed in following table:

Initial

Mode

0

1

2

3

4

5

6

Value

emCodeA emCodeB emCodeC emCodeB_FNC1 B emCodeC_FNC1 C

Initial code set

Implied character

Description

A (None) The code set will be automatically switched if another code set character is

B (None) encountered.

C (None)

FNC1

FNC1 emCodeC_Shift1B C SHIFT B emCodeC_Shift2B C

Extended data length mode emMode_Extended B

Double

SHIFT B

None

First character excepting the message append block (if exists), must be code set B

character (ASCII 32 - ASCII 127), otherwise an OnInvalidChar

or OnInvalidDataChar

event will occur. The code set will be automatically switched if another code set character is encountered.

First two characters excepting the message append block (if exists), must be code

set B characters (ASCII 32 - ASCII 127), otherwise an OnInvalidChar

or

OnInvalidDataChar

event will occur. The code set will be automatically switched if another code set character is encountered.

Indicates to create a Code 16K barcode symbol in extended data length mode. An extended data length mode block is required, and it should be placed at beginning of barcode text, otherwiset the

OnInvalidChar or

OnInvalidDataChar

event will occur. See also the "Extended data length mode" section in the

"

TBarcodeFmx2D_Code16K

" article.

The property can be one of these values: emModeA , emModeB , emModeC , emModeB_FNC1 , emModeC_FNC1 , emModeC_Shift1B , emModeC_Shift2B , and emMode_Extended , corresponding to the initial modes 0 to 6, and the extended data length mode. In this case, it specifies the factual initial mode shown in table above.

Also, the InitialMode property can be set to emAuto (defined in the pfmxCode16K unit), in this case, one of values from emCodeA to emModeC_Shift2B , corresponding to the initial modes 0 to 6 shown in table above will be selected automatically, depending on the barcode text, in order to minimize the symbol size.

You can always use the CurrentMode

property to get the factual initial mode.

See also the "Initial modes" section in the " TBarcodeFmx2D_Code16K

" article.

A.1.62 Inversed

(TBarcodeFmx2D_AztecCode, TBarcodeFmx2D_DataMatrix, etc.)

132

2D Barcode FMX Components User Manual

Specifies whether to represent a barcode symbol in inversed color (reflectance reversal).

Syntax: property

Inversed: Boolean;

Description:

Specifies whether to draw a barcode symbol in inversed color (reflectance reversal).

In general, the barcode symbol is dark foreground on light background. In this case, the Inversed property should be set to false, and

all light modules in the barcode symbol are drawn using the color specified by the SpaceColor

property, all dark modules are drawn

using the color specified by the BarColor

property.

If the barcode symbol is light foreground on dark background, the Inversed property should be set to true, and all light modules in the barcode symbol are drawn using the color specified by the

BarColor

property, all dark modules are drawn using the color specified by

the SpaceColor

property.

See diagram:

When the leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and

bottom quiet zone

are displayed (the

ShowQuietZone

property value is set to true), if the Inversed

property is set to false, the color specified by the SpaceColor

property will be used to draw the

quiet zones, otherwise, the color specified by the BarColor

property will be used. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

A.1.63 LeadingQuietZone

Specifies the horizontal width of the leading quiet zone in modules.

Syntax: property

LeadingQuietZone: Integer;

Description:

Specifies the horizontal width of the leading quiet zone in modules. The quiet zone is drawn using the color specified by the

SpaceColor

property if the

Inversed

property is set to false. Otherwise, it's drawn using the color specified by the BarColor

property.

See diagram (the SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

This property is useful only when the ShowQuietZone

property value is set to true or the barcode symbology is a

Code 16K

symbol.

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone is drawn always, even if the ShowQuietZone

property

value is set to false. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

133

2D Barcode FMX Components User Manual

A.1.64 LeftMargin

Specifies the left margin of the barcode symbol in pixels.

Syntax: property

LeftMargin: Integer;

Description:

Specifies the margin between the leftmost side of the barcode symbol and the left side of the TImage control that is specified by the

Image

property, in pixels.

If the quiet zones are displayed (please read the ShowQuietZone property about whether or not the quiet zones will be displayed),

they are included in the barcode symbol. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

It is set using the following formula:

The Orientation

property is set to boLeftRight :

It is the margin between the beginning of the barcode symbol and the left side of the TImage control.

See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

The Orientation

property is set to boRightLeft :

It is the margin between the end of the barcode symbol and the left side of the TImage control.

See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

134

The Orientation

property is set to boTopBottom :

It is the margin between the bottom of the barcode symbol and the left side of the TImage control.

See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

2D Barcode FMX Components User Manual

The Orientation

property is set to boBottomTop :

It is the margin between the top of the barcode symbol and the left side of the TImage control.

See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

Note:

For the TBarcodeFmx2D_Code16K

barcode components, the

leading quiet zone

and the trailing quiet zone

are included always, even

if the ShowQuietZone

is set to false. See diagram (the SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

A.1.65 Link2D

Specifies whether an RSS symbol ( RSS-14

,

RSS Limited

, or

RSS Expanded

) can be used as the linear component of an EAN.UCC

Composite symbol.

Syntax: property

Link2D: Boolean;

Description:

An RSS barcode symbol (including RSS-14

, RSS Limited

, or RSS Expanded

) can be used together with a CC-A or a CC-B 2D symobl to create the EAN.UCC composite symbol. The property specifies whether the RSS symbol can be used as the linear component of an

EAN.UCC Composite symbol.

If the property is set to true, the RSS symbol and its contiguous separator pattern shall be aligned with a 2D symbol. Normally the

RSS symbol, its contiguous separator pattern, and the 2D symbol are drawn at the same time, comprising a single EAN.UCC

composite symbol.

If the property is set to false, the RSS symbol will be used as a stand-alone barcode symbol.

Note, a contiguous separator pattern is required between the RSS and the 2D symbol in an EAN.UCC Composite symbol. In order to

drawn the separator pattern on top of the RSS symbol, both the Show2DSeparator

and the Link2D properties must be set to true.

135

2D Barcode FMX Components User Manual

See also the "Composite symbol" section in the

" TBarcodeFmx2D_RSS14

", "

TBarcodeFmx2D_RSSLimited

", and

" TBarcodeFmx2D_RSSExpanded " articles.

The following is several examples of the EAN.UCC composite symbol:

A.1.66 Locked

Set the property to true to prevents updating of the barcode component until the property is reset to false.

Syntax: property

Locked: Boolean;

Description:

Set the property to true before making multiple changes to the barcode component. When all changes are complete, change the property to false so that the changes can be reflected on screen. It prevents excessive redraws and speed processing time when change the barcode component.

Set the property to true is similar to BeginUpdate method of an other Delphi/C++ Builder control such as a ListBox, Memo, TreeList,

ListView, and set the property to false is similar to its EndUpdate method.

A.1.67 MaxColumns

(TBarcodeFmx2D_PDF417)

Specifies the maximum number of columns for a PDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxPDF417Custom unit }

TPDF417_Columns = 1 .. 30;

property

MaxColumns: TPDF417_Columns;

Description:

The property specifies the maximum number of columns for a PDF417

barcode symbol. It can be one of values from 1 to 30, they are defined in the pfmxPDF417Custom unit.

136

2D Barcode FMX Components User Manual

The maximum number of columns together with the maximum number of stacked rows (specified by the MaxRows

property) indicates

the maximum symbol size for a PDF417

barcode symbol. And the minimum number of columns (specified by the MinColumns

property) together with the minimum number of stacked rows (specified by the MinRows

property) indicates the minimum symbol size

for the PDF417

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

If the barcode text is so long that it cannot be encoded using the maximum symbol size, an OnInvalidLength

(the barcode text is

specified in the Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur.

The

CurrentRows property can be used to get the factual number of rows.

Note, if the property is set to a value less than the MinColumns property's value, the MinColumns

property will be automatically changed to equal to this property's value. In other words, the MaxColumns property's value is always greater than or equal to the

MinColumns

property's value.

See also the "Symbol size" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.68 MaxRows

(TBarcodeFmx2D_Code16K)

Specifies the maximum number of stacked rows for a Code 16K

barcode symbol.

Syntax: type

{ Defined in the pfmxCode16K unit }

TCode16K_Rows = 2..16;

property

MaxRows: TCode16K_Rows;

Description:

The property specifies the maximum number of stacked rows for a Code 16K

barcode symbol. It can be one of values from 2 to 16.

They are defined in the pfmxCode16K unit.

The smallest number of stacked rows that accommodates the barcode text will be automatically selected between the minimum number of stacked rows (specified by the

MinRows

property) and the maximum number of stacked rows (specified by this property).

If the barcode text is so long that it cannot be encoded using the maximum number of stacked rows specified by this property, an

OnInvalidLength (the barcode text is specified in the

Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the

Data property) event will occur.

The

CurrentRows property can be used to get the factual number of stacked rows.

Note, if the property is set to a value less than the

MinRows

property's value, the

MinRows

property will be automatically changed to equal to this property's value. In other words, the MaxRows property's value is always greater than or equal to the

MinRows

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_Code16K

" article.

A.1.69 MaxRows

(TBarcodeFmx2D_PDF417)

Specifies the maximum number of stacked rows for a PDF417

barcode symbol.

137

2D Barcode FMX Components User Manual

Syntax: type

{ Defined in the pfmxPDF417Custom unit }

TPDF417_Rows = 3 .. 90;

property

MaxRows: TPDF417_Rows;

Description:

The property specifies the maximum number of stacked rows for a

PDF417

barcode symbol. It can be one of values from 3 to 90. They are defined in the pfmxPDF417Custom unit.

The maximum number of stacked rows together with the maximum number of columns (specified by the MaxColumns

property)

indicates the maximum symbol size for a PDF417

barcode symbol. And the minimum number of stacked rows (specified by the

MinRows

property) together with the minimum number of columns (specified by the MinColumns

property) indicates the minimum symbol size for the

PDF417

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

If the barcode text is so long that it cannot be encoded using the maximum symbol size, an OnInvalidLength

(the barcode text is

specified in the Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur.

The

CurrentRows property can be used to get the factual number of stacked rows.

Note, if the property is set to a value less than the

MinRows

property's value, the

MinRows

property will be automatically changed to equal to this property's value. In other words, the MaxRows property's value is always greater than or equal to the

MinRows

property's value.

See also the "Symbol size" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.70 MaxSegments

(TBarcodeFmx2D_CompactMatrix)

Specifies the maximum number of segments for a

Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_Segments = 1..32;

property

MaxSegments: TCompactMatrix_Segments;

Description:

In horizontal orientation, each Compact Matrix

symbol consists of an array of segments with a minimum of 1 segment (maximum 32

segments). The property specifies the maximum number of segments for a Compact Matrix

barcode symbol. It can be one of values from 1 to 32, they are defined in the pfmxCompactMatrix unit.

The maximum number of segments together with the maximum version (specified by the MaxVersion

property) indicates the maximum

symbol size for a Compact Matrix

barcode symbol. And the minimum number of segments (specified by the MinSegments

property)

together with the minimum version (specified by the MinVersion

property) indicates the minimum symbol size for the Compact Matrix

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

If the barcode text is so long that it cannot be encoded using the maximum symbol size, an OnInvalidLength

(the barcode text is

specified in the Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur.

The

CurrentSegments

property can be used to get the factual number of segments.

138

2D Barcode FMX Components User Manual

Note, if the property is set to a value less than the MinSegments property's value, the MinSegments

property will be automatically changed to equal to this property's value. In other words, the MaxSegments property's value is always greater than or equal to the

MinSegments

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_CompactMatrix

" article.

A.1.71 MaxSize

(TBarcodeFmx2D_AztecCode)

Specifies the maximum symbol size for an

Aztec Code

barcode symbol.

Syntax: type

{ Defined in the pfmxAztecCode unit }

TAztecCode_Size = (azSize_15Compact, azSize_19, azSize_19Compact, azSize_23, azSize_23Compact, azSize_27, azSize_27Compact, azSize_31, azSize_37, azSize_41, azSize_45, azSize_49, azSize_53, azSize_57, azSize_61, azSize_67, azSize_71, azSize_75, azSize_79, azSize_83, azSize_87, azSize_91, azSize_95, azSize_101, azSize_105, azSize_109, azSize_113, azSize_117, azSize_121, azSize_125, azSize_131, azSize_135, azSize_139, azSize_143, azSize_147, azSize_151);

property

MaxSize: TAztecCode_Size;

Description:

The property specifies the maximum symbol size for an Aztec Code barcode symbol. It can be one of values from

azSize_15Compact t o azSize_151 . These values denotation the symbol format, number of rows and columns in every symbol size. For example, the symbol size value azSize_91

denotations the Aztec Code

symbol size is 91 rows by 91 columns, not in compact format. These symbol size values are defined in the pfmxAztecCode unit.

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size

specified by the MinSize

property and the maximum symbol size specified by this property.

If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by this property, an

OnInvalidLength

(the barcode text is specified in the Barcode

property) or an

OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur.

The

CurrentSize

property can be used to get the factual symbol size.

Note, if the property is set to a value less than the MinSize

property's value, the

MinSize

property will be automatically changed to equal to this property's value. In other words, the MaxSize

property's value is always greater than or equal to the MinSize

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_AztecCode

" article.

A.1.72 MaxSize

(TBarcodeFmx2D_DataMatrix)

Specifies the maximum symbol size for a Data Matrix (ECC 000 - 140)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrix unit }

139

2D Barcode FMX Components User Manual

TDataMatrix_Size = (dmSize_09_09, dmSize_11_11, dmSize_13_13, dmSize_15_15, dmSize_17_17, dmSize_19_19, dmSize_21_21, dmSize_23_23, dmSize_25_25, dmSize_27_27, dmSize_29_29, dmSize_31_31, dmSize_33_33, dmSize_35_35, dmSize_37_37, dmSize_39_39, dmSize_41_41, dmSize_43_43, dmSize_45_45, dmSize_47_47, dmSize_49_49);

property

MaxSize: TDataMatrix_Size;

Description:

The property specifies the maximum symbol size for a Data Matrix (ECC 000 - 140)

barcode symbol. It can be one of values from dmSize_09_09 to dmSize_49_49 . These values denotation the number of rows and columns in every symbol size. For example, the symbol size value dmSize_45_45

denotations the Data Matrix (ECC 000 - 140)

symbol size is 45 rows by 45 columns. These symbol size values are defined in the pfmxDataMatrix unit.

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size

specified by the MinSize

property and the maximum symbol size specified by this property.

If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by this property, an

OnInvalidLength

(the barcode text is specified in the Barcode

property) or an

OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur.

The

CurrentSize

property can be used to get the factual symbol size.

Note, if the property is set to a value less than the MinSize

property's value, the

MinSize

property will be automatically changed to equal to this property's value. In other words, the MaxSize

property's value is always greater than or equal to the MinSize

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_DataMatrix

" article.

A.1.73 MaxSize

(TBarcodeFmx2D_DataMatrixECC200)

Specifies the maximum symbol size for a Data Matrix (ECC 200)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrixEcc200 unit }

TDataMatrixEcc200_Size = (dmSize_10_10, dmSize_12_12, dmSize_14_14, dmSize_16_16, dmSize_18_18, dmSize_20_20, dmSize_22_22, dmSize_24_24, dmSize_26_26, dmSize_32_32, dmSize_36_36, dmSize_40_40, dmSize_44_44, dmSize_48_48, dmSize_52_52, dmSize_64_64, dmSize_72_72, dmSize_80_80, dmSize_88_88, dmSize_96_96, dmSize_104_104, dmSize_120_120, dmSize_132_132, dmSize_144_144, dmSize_8_18, dmSize_8_32, dmSize_12_26, dmSize_12_36, dmSize_16_36, dmSize_16_48);

property

MaxSize: TDataMatrixEcc200_Size;

Description:

The property specifies the maximum symbol size for a Data Matrix (ECC 200)

barcode symbol. It can be one of values from dmSize_10_10 to dmSize_16_48 . These values denotation the number of rows and columns in every symbol size. For example, the symbol size value dmSize_16_36

denotations the Data Matrix (ECC 200)

symbol size is 16 rows by 36 columns. These symbol size values are defined in the pfmxDataMatrixEcc200 unit.

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size

specified by the MinSize

property and the maximum symbol size specified by this property.

If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by this property, an

OnInvalidLength

(the barcode text is specified in the Barcode

property) or an

OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur.

140

2D Barcode FMX Components User Manual

The

CurrentSize

property can be used to get the factual symbol size.

Note, if the property is set to a value less than the MinSize

property's value, the

MinSize

property will be automatically changed to equal to this property's value. In other words, the MaxSize

property's value is always greater than or equal to the MinSize

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_DataMatrixECC200

" article.

A.1.74 MaxSize

(TBarcodeFmx2D_MicroPDF417)

Specifies the maximum symbol size for a MicroPDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_Size = (mpSize_1_11, mpSize_1_14, mpSize_1_17, mpSize_1_20, mpSize_1_24, mpSize_1_28, mpSize_2_8, mpSize_2_11, mpSize_2_14, mpSize_2_17, mpSize_2_20, mpSize_2_23, mpSize_2_26, mpSize_3_6, mpSize_3_8, mpSize_3_10, mpSize_3_12, mpSize_3_15, mpSize_3_20, mpSize_3_26, mpSize_3_32, mpSize_3_38, mpSize_3_44, mpSize_4_4, mpSize_4_6, mpSize_4_8, mpSize_4_10, mpSize_4_12, mpSize_4_15, mpSize_4_20, mpSize_4_26, mpSize_4_32, mpSize_4_38, mpSize_4_44);

property

MaxSize: TMicroPDF417_Size;

Description:

The property specifies the maximum symbol size for a MicroPDF417

barcode symbol. It can be one of values from mpSize_1_11 to mpSize_4_44 . These values denotation the number of columns and rows in every symbol size. For example, the symbol size value mpSize_4_10

denotations the MicroPDF417

symbol size is 10 stacked rows by 4 columns. These symbol size values are defined in the pfmxMicroPDF417 unit.

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size

specified by the MinSize

property and the maximum symbol size specified by this property.

If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by this property, an

OnInvalidLength

(the barcode text is specified in the Barcode

property) or an

OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur.

The

CurrentSize

property can be used to get the factual symbol size.

Note, if the property is set to a value less than the MinSize

property's value, the

MinSize

property will be automatically changed to equal to this property's value. In other words, the MaxSize

property's value is always greater than or equal to the MinSize

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_MicroPDF417

" article.

A.1.75 MaxSliceLen

(TBarcodeFmx2D_MicroQRCode)

Specifies the maximum number of bytes to slice the barcode data, in order to limit the depth of recursion.

Syntax:

141

2D Barcode FMX Components User Manual property

MaxSliceLen: Integer;

Description:

If the property EncodePolicy

is set to epMixingOptimal , this property specifies the maximum number of bytes to slice the barcode data or text, each piece will be encoded in optimal combination of encoding modes using the recursion algorithm. It's useful to limit the depth of recursion, in order to prevent the computer has no response.

If the property is set to 0, the barcode data or text will not be sliced, and it will be encoded in optimal combination of encoding modes at a time, using the recursion algorithm.

If the property

EncodePolicy

isn't set to epMixingOptimal , the property value will be ignored.

A.1.76 MaxSliceLen

(TBarcodeFmx2D_QRCode)

Specifies the maximum number of bytes to slice the barcode data, in order to limit the depth of recursion.

Syntax: property

MaxSliceLen: Integer;

Description:

If the property EncodePolicy

is set to epMixingOptimal , this property specifies the maximum number of bytes to slice the barcode data or text, each piece will be encoded in optimal combination of encoding modes using the recursion algorithm. It's useful to limit the depth of recursion, in order to prevent the computer has no response.

If the property is set to 0, the barcode data or text will not be sliced, and it will be encoded in optimal combination of encoding modes at a time, using the recursion algorithm.

If the property

EncodePolicy

isn't set to epMixingOptimal , the property value will be ignored.

A.1.77 MaxVersion

(TBarcodeFmx2D_CompactMatrix)

Specifies the maximum version for a Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_Version = 1..32;

property

MaxVersion: TCompactMatrix_Version;

Description:

There are 32 vertical sizes of Compact Matrix

symbol, referred to as version 1 to 32, in increasing order of symbol height and data capacity. The property specifies the maximum version for a

Compact Matrix

barcode symbol. It can be one of values from 1 to 32. They are defined in the pfmxCompactMatrix unit.

The maximum version together with the maximum number of segments (specified by the MaxSegments

property) indicates the maximum symbol size for a

Compact Matrix

barcode symbol. And the minimum version (specified by the MinVersion

property) together

with the minimum number of segments (specified by the MinSegments

property) indicates the minimum symbol size for the Compact

142

2D Barcode FMX Components User Manual

Matrix

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

If the barcode text is so long that it cannot be encoded using the maximum symbol size, an OnInvalidLength

(the barcode text is

specified in the Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur.

The

CurrentVersion

property can be used to get the factual version.

Note, if the property is set to a value less than the MinVersion

property's value, the

MinVersion

property will be automatically changed to equal to this property's value. In other words, the MaxVersion

property's value is always greater than or equal to the MinVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_CompactMatrix

" article.

A.1.78 MaxVersion

(TBarcodeFmx2D_GridMatrix)

Specifies the maximum symbol version (symbol size) for a

Grid Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxGridMatrix unit }

TGridMatrix_Version = 1..13;

property

MaxVersion: TGridMatrix_Version;

Description:

There are thirteen sizes of Grid Matrix symbol, referred to as version 1 to 13, in increasing order of size and data capacity. The property

specifies the maximum symbol version (symbol size) for a Grid Matrix

barcode symbol. It can be one of values from 1 to 13. They are defined in the pfmxGridMatrix unit.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum symbol version (symbol size) specified by the

MinVersion

property and the maximum symbol version (symbol size) specified by this property.

If the barcode text is so long that it cannot be encoded using the maximum symbol version (symbol size) specified by this property, an

OnInvalidLength (the barcode text is specified in the

Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the

Data property) event will occur.

The

CurrentVersion

property can be used to get the factual symbol version (symbol size).

Note, if the property is set to a value less than the MinVersion

property's value, the

MinVersion

property will be automatically changed to equal to this property's value. In other words, the MaxVersion

property's value is always greater than or equal to the MinVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_GridMatrix

" article.

A.1.79 MaxVersion

(TBarcodeFmx2D_HanXinCode)

Specifies the maximum symbol version (symbol size) for a

Han Xin Code

barcode symbol.

143

2D Barcode FMX Components User Manual

Syntax: type

{ Defined in the pfmxHanXinCode unit }

THanXinCode_Version = 1..84;

property

MaxVersion: THanXinCode_Version;

Description:

There are eighty-four sizes of Han Xin Code

symbols, referred to as version 1 to 84, in increasing order of size and data capacity. The

property specifies the maximum symbol version (symbol size) for a Han Xin Code

barcode symbol. It can be one of values from 1 to

84. They are defined in the pfmxHanXinCode unit.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum symbol version (symbol size) specified by the

MinVersion

property and the maximum symbol version (symbol size) specified by this property.

If the barcode text is so long that it cannot be encoded using the maximum symbol version (symbol size) specified by this property, an

OnInvalidLength (the barcode text is specified in the

Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the

Data property) event will occur.

The

CurrentVersion

property can be used to get the factual symbol version (symbol size).

Note, if the property is set to a value less than the MinVersion

property's value, the

MinVersion

property will be automatically changed to equal to this property's value. In other words, the MaxVersion

property's value is always greater than or equal to the MinVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_HanXinCode

" article.

A.1.80 MaxVersion

(TBarcodeFmx2D_MicroQRCode)

Specifies the maximum symbol version (symbol size) for a

Micro QR Code barcode symbol.

Syntax: type

{ Defined in the pfmxMicroQRCode unit }

TMicroQRCode_Version = 1..4;

property

MaxVersion: TMicroQRCode_Version;

Description:

The property specifies the maximum symbol version (symbol size) for a Micro QR Code

barcode symbol. It can be one of values from 1 to 4, they are defined in the pfmxMicroQRCode unit.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum symbol version (symbol size) specified by the

MinVersion

property and the maximum symbol version (symbol size) specified by this property.

If the barcode text is so long that it cannot be encoded using the maximum symbol version (symbol size) specified by this property, an

OnInvalidLength (the barcode text is specified in the

Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the

Data property) event will occur.

The

CurrentVersion

property can be used to get the factual symbol version (symbol size).

Note, if the property is set to a value less than the MinVersion

property's value, the

MinVersion

property will be automatically changed to equal to this property's value. In other words, the MaxVersion

property's value is always greater than or equal to the MinVersion

144

2D Barcode FMX Components User Manual

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_MicroQRCode

" article.

A.1.81 MaxVersion

(TBarcodeFmx2D_QRCode)

Specifies the maximum symbol version (symbol size) for a

QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxQRCode unit }

TQRCode_Version = 1..40;

property

MaxVersion: TQRCode_Version;

Description:

The property specifies the maximum symbol version (symbol size) for a

QR Code

barcode symbol. It can be one of values from 1 to 40.

They are defined in the pfmxQRCode unit.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum symbol version (symbol size) specified by the

MinVersion

property and the maximum symbol version (symbol size) specified by this property.

If the barcode text is so long that it cannot be encoded using the maximum symbol version (symbol size) specified by this property, an

OnInvalidLength (the barcode text is specified in the

Barcode

property) or an OnInvalidDataLength

(the barcode text is specified in the

Data property) event will occur.

The

CurrentVersion

property can be used to get the factual symbol version (symbol size).

Note, if the property is set to a value less than the MinVersion

property's value, the

MinVersion

property will be automatically changed to equal to this property's value. In other words, the MaxVersion

property's value is always greater than or equal to the MinVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_QRCode

" article.

A.1.82 MinColumns

(TBarcodeFmx2D_PDF417)

Specifies the minimum number of columns for a PDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxPDF417Custom unit }

TPDF417_Columns = 1 .. 30;

property

MinColumns: TPDF417_Columns;

Description:

The property specifies the minimum number of columns for a PDF417

barcode symbol. It can be one of values from 1 to 30, they are defined in the pfmxPDF417Custom unit.

145

2D Barcode FMX Components User Manual

The minimum number of columns together with the minimum number of stacked rows (specified by the

MinRows

property) indicates the minimum symbol size for a

PDF417

barcode symbol. And the maximum number of columns (specified by the MaxColumns

property) together with the maximum number of stacked rows (specified by the

MaxRows

property) indicates the maximum symbol size

for the PDF417

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

The

CurrentColumns

property can be used to get the factual number of columns.

Note, if the property is set to a value greater than the MaxColumns

property's value, the

MaxColumns

property will be automatically changed to equal to this property's value. In other words, the MinColumns property's value is always less than or equal to the

MaxColumns property's value.

See also the "Symbol size" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.83 MinRows

(TBarcodeFmx2D_Code16K)

Specifies the minimum number of stacked rows for a Code 16K

barcode symbol.

Syntax: type

{ Defined in the pfmxCode16K unit }

TCode16K_Rows = 2..16;

property

MinRows: TCode16K_Rows;

Description:

The property specifies the minimum number of stacked rows for a Code 16K

barcode symbol. It can be one of values from 2 to 16.

They are defined in the pfmxCode16K unit.

The smallest number of stacked rows that accommodates the barcode text will be automatically selected between the minimum number of stacked rows (specified by this property) and the maximum number of stacked rows (that's specified by the

MaxRows

property).

The

CurrentRows property can be used to get the factual number of stacked rows.

Note, if the property is set to a value greater than the MaxRows

property's value, the

MaxRows

property will be automatically changed to equal to this property's value. In other words, the MinRows property's value is always less than or equal to the

MaxRows

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_Code16K

" article.

A.1.84 MinRows

(TBarcodeFmx2D_PDF417)

Specifies the minimum number of stacked rows for a PDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxPDF417Custom unit }

TPDF417_Rows = 3 .. 90;

146

2D Barcode FMX Components User Manual property

MinRows: TPDF417_Rows;

Description:

The property specifies the minimum number of stacked rows for a PDF417

barcode symbol. It can be one of values from 3 to 90. They are defined in the pfmxPDF417Custom unit.

The minimum number of stacked rows together with the minimum number of columns (specified by the MinColumns

property)

indicates the minimum symbol size for a PDF417

barcode symbol. And the maximum number of stacked rows (specified by the

MaxRows

property) together with the maximum number of columns (specified by the

MaxColumns

property) indicates the maximum symbol size for the

PDF417

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

The

CurrentRows property can be used to get the factual number of stacked rows.

Note, if the property is set to a value greater than the MaxRows

property's value, the

MaxRows

property will be automatically changed to equal to this property's value. In other words, the MinRows property's value is always less than or equal to the

MaxRows

property's value.

See also the "Symbol size" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.85 MinSegments

(TBarcodeFmx2D_CompactMatrix)

Specifies the minimum number of segments for a Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_Segments = 1..32;

property

MinSegments: TCompactMatrix_Segments;

Description:

In horizontal orientation, each Compact Matrix

symbol consists of an array of segments with a minimum of 1 segment (maximum 32

segments). The property specifies the minimum number of segments for a Compact Matrix

barcode symbol. It can be one of values from 1 to 32, they are defined in the pfmxCompactMatrix unit.

The minimum number of segments together with the minimum version (specified by the MinVersion

property) indicates the minimum

symbol size for a Compact Matrix

barcode symbol. And the maximum number of segments (specified by the MaxSegments

property)

together with the maximum version (specified by the MaxVersion

property) indicates the maximum symbol size for the

Compact Matrix

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

The

CurrentSegments

property can be used to get the factual number of segments.

Note, if the property is set to a value greater than the MaxSegments property's value, the MaxSegments

property will be automatically changed to equal to this property's value. In other words, the MinSegments property's value is always less than or equal to the

MaxSegments

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_CompactMatrix

" article.

147

2D Barcode FMX Components User Manual

A.1.86 MinSize

(TBarcodeFmx2D_AztecCode)

Specifies the minimum symbol size for an Aztec Code

barcode symbol.

Syntax: type

{ Defined in the pfmxAztecCode unit }

TAztecCode_Size = (azSize_15Compact, azSize_19, azSize_19Compact, azSize_23, azSize_23Compact, azSize_27, azSize_27Compact, azSize_31, azSize_37, azSize_41, azSize_45, azSize_49, azSize_53, azSize_57, azSize_61, azSize_67, azSize_71, azSize_75, azSize_79, azSize_83, azSize_87, azSize_91, azSize_95, azSize_101, azSize_105, azSize_109, azSize_113, azSize_117, azSize_121, azSize_125, azSize_131, azSize_135, azSize_139, azSize_143, azSize_147, azSize_151);

property

MinSize: TAztecCode_Size;

Description:

The property specifies the minimum symbol size for an Aztec Code

barcode symbol. It can be one of values from azSize_15Compact t o azSize_151 . These values denotation the symbol format, number of rows and columns in every symbol size. For example, the symbol size value azSize_19Compact denotations the

Aztec Code

symbol size is 19 rows by 19 columns, in compact format. These symbol size values are defined in the pfmxAztecCode unit.

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size

specified by this property and the maximum symbol size that's specified by the MaxSize

property.

The

CurrentSize

property can be used to get the factual symbol size.

Note, if the property is set to a value greater than the MaxSize property's value, the MaxSize

property will be automatically changed to equal to this property's value. In other words, the MinSize

property's value is always less than or equal to the MaxSize

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_AztecCode

" article.

A.1.87 MinSize

(TBarcodeFmx2D_DataMatrix)

Specifies the minimum symbol size for a Data Matrix (ECC 000 - 140)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrix unit }

TDataMatrix_Size = (dmSize_09_09, dmSize_11_11, dmSize_13_13, dmSize_15_15, dmSize_17_17, dmSize_19_19, dmSize_21_21, dmSize_23_23, dmSize_25_25, dmSize_27_27, dmSize_29_29, dmSize_31_31, dmSize_33_33, dmSize_35_35, dmSize_37_37, dmSize_39_39, dmSize_41_41, dmSize_43_43, dmSize_45_45, dmSize_47_47, dmSize_49_49);

property

MinSize: TDataMatrix_Size;

Description:

The property specifies the minimum symbol size for a Data Matrix (ECC 000 - 140)

barcode symbol. It can be one of values from dmSize_09_09 to dmSize_49_49 . These values denotation the number of rows and columns in every symbol size. For example, the symbol size value dmSize_29_29

denotations the Data Matrix (ECC 000 - 140)

symbol size is 29 rows by 29 columns. These symbol size values are defined in the pfmxDataMatrix unit.

148

2D Barcode FMX Components User Manual

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size

specified by this property and the maximum symbol size that's specified by the MaxSize

property.

The

CurrentSize

property can be used to get the factual symbol size.

Note, if the property is set to a value greater than the MaxSize property's value, the MaxSize

property will be automatically changed to equal to this property's value. In other words, the MinSize

property's value is always less than or equal to the MaxSize

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_DataMatrix

" article.

A.1.88 MinSize

(TBarcodeFmx2D_DataMatrixECC200)

Specifies the minimum symbol size for a Data Matrix (ECC 200)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrixEcc200 unit }

TDataMatrixEcc200_Size = (dmSize_10_10, dmSize_12_12, dmSize_14_14, dmSize_16_16, dmSize_18_18, dmSize_20_20, dmSize_22_22, dmSize_24_24, dmSize_26_26, dmSize_32_32, dmSize_36_36, dmSize_40_40, dmSize_44_44, dmSize_48_48, dmSize_52_52, dmSize_64_64, dmSize_72_72, dmSize_80_80, dmSize_88_88, dmSize_96_96, dmSize_104_104, dmSize_120_120, dmSize_132_132, dmSize_144_144, dmSize_8_18, dmSize_8_32, dmSize_12_26, dmSize_12_36, dmSize_16_36, dmSize_16_48);

property

MinSize: TDataMatrixEcc200_Size;

Description:

The property specifies the minimum symbol size for a

Data Matrix (ECC 200)

barcode symbol. It can be one of values from dmSize_10_10 to dmSize_16_48 . These values denotation the number of rows and columns in every symbol size. For example, the symbol size value dmSize_8_18

denotations the Data Matrix (ECC 200)

symbol size is 8 rows by 18 columns. These symbol size values are defined in the pfmxDataMatrixEcc200 unit.

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size

specified by this property and the maximum symbol size that's specified by the MaxSize

property.

The

CurrentSize

property can be used to get the factual symbol size.

Note, if the property is set to a value greater than the MaxSize

property's value, the MaxSize

property will be automatically changed to equal to this property's value. In other words, the MinSize

property's value is always less than or equal to the MaxSize

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_DataMatrixECC200

" article.

A.1.89 MinSize

(TBarcodeFmx2D_MicroPDF417)

Specifies the minimum symbol size for an MicroPDF417

barcode symbol.

Syntax: type

149

2D Barcode FMX Components User Manual

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_Size = (mpSize_1_11, mpSize_1_14, mpSize_1_17, mpSize_1_20, mpSize_1_24, mpSize_1_28, mpSize_2_8, mpSize_2_11, mpSize_2_14, mpSize_2_17, mpSize_2_20, mpSize_2_23, mpSize_2_26, mpSize_3_6, mpSize_3_8, mpSize_3_10, mpSize_3_12, mpSize_3_15, mpSize_3_20, mpSize_3_26, mpSize_3_32, mpSize_3_38, mpSize_3_44, mpSize_4_4, mpSize_4_6, mpSize_4_8, mpSize_4_10, mpSize_4_12, mpSize_4_15, mpSize_4_20, mpSize_4_26, mpSize_4_32, mpSize_4_38, mpSize_4_44);

property

MinSize: TMicroPDF417_Size;

Description:

The property specifies the minimum symbol size for a MicroPDF417

barcode symbol. It can be one of values from mpSize_1_11 to mpSize_4_44 . These values denotation the number of columns and rows in every symbol size. For example, the symbol size value mpSize_3_12

denotations the MicroPDF417

symbol size is 12 stacked rows by 3 columns. These symbol size values are defined in the pfmxMicroPDF417 unit.

The smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size

specified by this property and the maximum symbol size that's specified by the MaxSize

property.

The

CurrentSize

property can be used to get the factual symbol size.

Note, if the property is set to a value greater than the MaxSize property's value, the MaxSize

property will be automatically changed to equal to this property's value. In other words, the MinSize

property's value is always less than or equal to the MaxSize

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_MicroPDF417

" article.

A.1.90 MinVersion

(TBarcodeFmx2D_CompactMatrix)

Specifies the minimum version for a

Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_Version = 1..32;

property

MinVersion: TCompactMatrix_Version;

Description:

There are 32 vertical sizes of Compact Matrix

symbol, referred to as version 1 to 32, in increasing order of symbol height and data capacity. The property specifies the minimum version for a

Compact Matrix

barcode symbol. It can be one of values from 1 to 32. They are defined in the pfmxCompactMatrix unit.

The minimum version together with the minimum number of segments (specified by the MinSegments

property) indicates the minimum

symbol size for a Compact Matrix

barcode symbol. And the maximum version (specified by the MaxVersion

property) together with the

maximum number of segments (specified by the MaxSegments

property) indicates the maximum symbol size for the Compact Matrix

barcode symbol. Based on the stretch order (specified by the StretchOrder

property), the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

The

CurrentVersion

property can be used to get the factual version.

Note, if the property is set to a value greater than the

MaxVersion property's value, the MaxVersion

property will be automatically changed to equal to this property's value. In other words, the MinVersion property's value is always less than or equal to the

MaxVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_CompactMatrix

" article.

150

2D Barcode FMX Components User Manual

A.1.91 MinVersion

(TBarcodeFmx2D_GridMatrix)

Specifies the minimum symbol version (symbol size) for a

Grid Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxGridMatrix unit }

TGridMatrix_Version = 1..13;

property

MinVersion: TGridMatrix_Version;

Description:

There are thirteen sizes of Grid Matrix symbol, referred to as version 1 to 13, in increasing order of size and data capacity. The property

specifies the minimum symbol version (symbol size) for a Grid Matrix

barcode symbol. It can be one of values from 1 to 13. They are defined in the pfmxGridMatrix unit.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum symbol version (symbol size) specified by this property and the maximum symbol version (symbol size) that's specified by the

MaxVersion

property.

The

CurrentVersion

property can be used to get the factual symbol version (symbol size).

Note, if the property is set to a value greater than the

MaxVersion property's value, the MaxVersion

property will be automatically changed to equal to this property's value. In other words, the MinVersion property's value is always less than or equal to the

MaxVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_GridMatrix

" article.

A.1.92 MinVersion

(TBarcodeFmx2D_HanXinCode)

Specifies the minimum symbol version (symbol size) for a

Han Xin Code barcode symbol.

Syntax: type

{ Defined in the pfmxHanXinCode unit }

THanXinCode_Version = 1..84;

property

MinVersion: THanXinCode_Version;

Description:

There are eighty-four sizes of Han Xin Code

symbols, referred to as version 1 to 84, in increasing order of size and data capacity. The

property specifies the minimum symbol version (symbol size) for a Han Xin Code

barcode symbol. It can be one of values from 1 to 84.

They are defined in the pfmxHanXinCode unit.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum symbol version (symbol size) specified by this property and the maximum symbol version (symbol size) that's specified by the

MaxVersion

property.

The

CurrentVersion

property can be used to get the factual symbol version (symbol size).

151

2D Barcode FMX Components User Manual

Note, if the property is set to a value greater than the

MaxVersion property's value, the MaxVersion

property will be automatically changed to equal to this property's value. In other words, the MinVersion property's value is always less than or equal to the

MaxVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_HanXinCode

" article.

A.1.93 MinVersion

(TBarcodeFmx2D_MicroQRCode)

Specifies the minimum symbol version (symbol size) for a

Micro QR Code

barcode symbol.

Syntax: type

{ Defined in the pfmxMicroQRCode unit }

TMicroQRCode_Version = 1..4;

property

MinVersion: TMicroQRCode_Version;

Description:

The property specifies the minimum symbol version (symbol size) for a Micro QR Code

barcode symbol. It can be one of values from 1 to 4, they are defined in the pfmxMicroQRCode unit.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum symbol version (symbol size) specified by this property and the maximum symbol version (symbol size) that's specified by the

MaxVersion

property.

The

CurrentVersion

property can be used to get the factual symbol version (symbol size).

Note, if the property is set to a value greater than the

MaxVersion property's value, the MaxVersion

property will be automatically changed to equal to this property's value. In other words, the MinVersion property's value is always less than or equal to the

MaxVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_MicroQRCode

" article.

A.1.94 MinVersion

(TBarcodeFmx2D_QRCode)

Specifies the minimum symbol version (symbol size) for a

QR Code barcode symbol.

Syntax: type

{ Defined in the pfmxQRCode unit }

TQRCode_Version = 1..40;

property

MinVersion: TQRCode_Version;

Description:

The property specifies the minimum symbol version (symbol size) for a QR Code

barcode symbol. It can be one of values from 1 to 40.

They are defined in the pfmxQRCode unit.

The smallest symbol version (symbol size) that accommodates the barcode text will be automatically selected between the minimum

152

2D Barcode FMX Components User Manual

symbol version (symbol size) specified by this property and the maximum symbol version (symbol size) that's specified by the

MaxVersion

property.

The

CurrentVersion

property can be used to get the factual symbol version (symbol size).

Note, if the property is set to a value greater than the

MaxVersion property's value, the MaxVersion

property will be automatically changed to equal to this property's value. In other words, the MinVersion property's value is always less than or equal to the

MaxVersion

property's value.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_QRCode

" article.

A.1.95 Mirrored

(TBarcodeFmx2D_AztecCode, TBarcodeFmx2D_DataMatrix, etc.)

Specifies whether the barcode symbol is reversed right to left (horizontal mirror reversal).

Syntax: property

Mirrored: Boolean;

Description:

The property specifies whether the barcode symbol is reversed right to left (horizontal mirror reversal). If barcode symbols are obtained using a reflected optical path, a reversed scan direction or from behind through a clear substrate, you can set the Mirror property to true, so that the barcode symbols are easily autodiscriminated and decode with a standard reader. See diagram:

If the leading, trailing, top, and bottom quiet zones are displayed (the ShowQuietZone

property is set to true), they will not be included

in the barcode symbol, and will not be reversed. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

If the barcode symbol is drawn using non-left-to-right orientation (the Orienation

property isn't equal to boLeftRight , or the angle

parameter isn't equal to zero degree in the DrawTo

or the

Print

methods), the left to right reversal operation will be performed firstly, then the rotation operation. See diagram:

A.1.96 Mode

(TBarcodeFmx2D_MaxiCode)

Specifies which mode of MaxiCode

symbol will be used to generate the

MaxiCode

barcode symbol.

Syntax:

153

2D Barcode FMX Components User Manual type

{ Defined in the pfmxMaxiCode unit }

TMaxiCode_Mode = 2..6;

property

Mode: TMaxiCode_Mode;

Description:

The property specifies which mode of MaxiCode symbol will be used to generate the MaxiCode barcode symbol. It can be one of these

values (defined in the pfmxMaxiCode unit):

2

: Indicates to use the mode 2. It encodes a structured carrier message with a numeric postal code, and an optional secondary message. A numeric postal code, a country code, and a class of service code assigned by the carrier are included in the structured carrier message. The symbol employs enhanced error correction for the structured carrier message and standard error correction for the secondary message.

3

: Indicates to use the mode 3. It encodes a structured carrier message with an alphanumeric postal code, and an optional secondary message. An alphanumeric postal code, a country code, and a class of service code assigned by the carrier are included in the structured carrier message. The symbol employs enhanced error correction for the structured carrier message and standard error correction for the secondary message.

The mode 3 is similar to mode 2, but the postal code field encodes 6 alphanumeric characters.

4

: Indicates to use the mode 4. It encodes an unformatted message. The barcode message is divided into a primary message and a secondary message internally, the symbol employs enhanced error correction for the primary message and standard error correction for the secondary message.

5

: Indicates to use the mode 5. It encodes an unformatted message. The barcode message is divided into a primary message and a secondary message internally, the symbol employs enhanced error correction for both the primary and secondary messages.

The mode 5 is similar to mode 4, but it employs enhanced error correction for secondary messages.

6

: Indicates to use the mode 6. It encodes a message used to program the reader system. The barcode message is divided into a primary message and a secondary message internally, the symbol employs enhanced error correction for the primary message and standard error correction for the secondary message.

You can set the

AutoMode property to true, in order to automatically select the suitable mode depending on the barcode text and the

value of this property. And use the CurrentMode

property to get the factual mode. See also the " AutoMode

" property.

See also the "Modes" sections in the "

TBarcodeFmx2D_MaxiCode

" article.

A.1.97 Module

Specifies the module size in pixels.

Syntax: property

Module: Integer;

Description:

The property specifies the module size in pixels in the horizontal direction.

For the

Matrix

2D barcode symbologies, the module is single cell in the matrix symbol used to encode one bit data.

In

the TBarcodeFmx2D_AztecCode

,

TBarcodeFmx2D_AztecRunes

,

TBarcodeFmx2D_CompactMatrix

,

TBarcodeFmx2D_DataMatrix ,

TBarcodeFmx2D_DataMatrixECC200

,

TBarcodeFmx2D_GridMatrix

,

TBarcodeFmx2D_HanXinCode

,

TBarcodeFmx2D_QRCode

, and TBarcodeFmx2D_MicroQRCode

barcode symbologies, the module is a suqare shape, the property specifies the module width and height in pixels. See diagram:

154

2D Barcode FMX Components User Manual

In the TBarcodeFmx2D_MaxiCode

symbology, the module is a regular hexagonal shape. The property specifies the horizonal width of a module, in pixels, including spacing between modules. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

F o r

Stacked

2D barcode symbology and

Linear

1D barcode symbologies,

including TBarcodeFmx2D_Code16K

,

TBarcodeFmx2D_PDF417 ,

TBarcodeFmx2D_MicroPDF417

,

TBarcodeFmx2D_RSS14

,

TBarcodeFmx2D_RSSLimited

, and

TBarcodeFmx2D_RSSExpanded symbologies, the module is the thinest bar (or space) in the barcode symbol. The property specifies

the module width in pixels. See diagram:

A.1.98 Opacity

Specifies the transparency-level of entire barcode symbol.

Syntax: property

Opacity: Single;

Description:

Specifies the transparency-level of entire barcode symbol, where 1 is not transparant at all, 0.5 is 50% see-through, and 0 is completely transparent.

The property defaults to 1, meaning not transparant at all.

Note, if the Inversed

property is set to false, you can use the alpha channel of the SpaceColor

property value to specify the

transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the BarColor

property value to specify the transparency-level of foreground color (bars or dark modules). If the Inversed

property is set to true, you can use the alpha channel of the

BarColor

property value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the

SpaceColor property value to specify the transparency-level of fore-

ground color (bars or dark modules).

A.1.99 Options

(TBarcodeFmx2D_MicroPDF417)

The Options

property is an advanced feature which allows low level control over data encoding for a MicroPDF417

symbol.

Syntax: type

{ Defined in the pfmxPDF417Com unit }

TPDF417_Option = (poIgnoreShiftBeforeECI, poFirst903TextAlphaLatch, poFirst904TextMixedLatch,

155

2D Barcode FMX Components User Manual

po906TextAlphaLatch, po907TextAlphaLatch, po908TextAlphaLatch, po910TextAlphaLatch, po912TextAlphaLatch, po914TextAlphaLatch, po915TextAlphaLatch, poFirstFNC1MatchAI01, poMicroPDF417Explicit901);

{ Defined in the pfmxPDF417Com unit }

TPDF417_Options =

set of

TPDF417_Option;

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_Options = TPDF417_Options;

property

Options: TMicroPDF417_Options;

Description:

For some reader, the encoding algorithm and meanings of some function codewords don't conform with the

MicroPDF417

specification. The property can be used to change the encoding algorithm and meanings of these fucntion codewords, in order to match the reader.

The following list describes the values that can be included in the Options property (defined in the pfmxPDF417Com unit):

poIgnoreShiftBeforeECI

: An ECI escape sequence may be placed anywhere within Text Compaction mode. Normally, the submode invoked immediately prior to the ECI escape sequence is preserved for the encodation immediately after it. Thus, sub-mode latches and shifts are preserved across an ECI escape sequence; and thus a sub-mode shift immediately before an ECI escape sequence is not ignored. If the value is included in the Options property, the sub-mode shift immediately before an ECI escape sequence is ignored, but a sub-mode latch immediately before an ECI escape sequence is never ignored.

poFirst903TextAlphaLatch

: If the function codeword 903 is placed at beginning of barcode text, it represents a leading FNC1 character in First position mode. Also, it normally implies a mode latch to Mixed sub-mode of Text Compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text Compaction mode.

poFirst904TextMixedLatch

: If the function codeword 904 is placed at beginning of barcode text, it represents a leading FNC1 character in First position mode. Also, it normally implies a mode latch to Numeric Compaction mode, the value indicates that it implies a mode latch to Mixed sub-mode of Text Compaction mode.

po906TextAlphaLatch

: The function codeword 906 represents a leading FNC1 character in First position mode. Also, it normally implies a mode latch to Mixed sub-mode of Text Compaction mode, the value indicates that it implies a mode latch to Alpha submode of Text Compaction mode.

po907TextAlphaLatch

: The function codeword 907 represents a leading FNC1 character in First position mode. Also, it normally implies a mode latch to Numeric Compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text

Compaction mode.

po908TextAlphaLatch

: The function codeword 908 followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) represents a leading FNC1 character in "Second position" mode. Also, it normally implies a mode latch to Mixed sub-mode of Text Compaction mode, the value indicates that it implies a mode latch to

Alpha sub-mode of Text compaction mode.

po910TextAlphaLatch

: The function codeword 910 indicates that the MicroPDF417

symbol's data output shall conform with the

Code128 specification. Also, it normally implies a mode latch to Mixed sub-mode of Text compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text compaction mode.

po912TextAlphaLatch

: Normally, the function codeword 912 represents a leading FNC1 character in First position mode and implies a mode latch to Numeric Compaction mode. Also, it encodes that the data begins with a 6-digit date field (Application

Identifier is 11, 13, 15, or 17), and this date field may be followed by an implied Application Identifier 10 or 21 as well. The value indicates that it only implies a mode latch to Alpha sub-mode of Text compaction mode.

po914TextAlphaLatch

: The function codeword 914 represents a leading FNC1 character in First position mode and indicates that the data begins with an implied Application Identifier is 10. Also, it normally implies a mode latch to Numeric compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text compaction mode.

If the value isn't included in Options property, the function codeword 914 shall be followed by at least 1 numeric character.

po915TextAlphaLatch

: The function codeword 915 represents a leading FNC1 character in First position mode and indicates that the data begins with an implied Application Identifier is 21. Also, it normally implies a mode latch to Numeric compaction mode, the

156

2D Barcode FMX Components User Manual

value indicates that it implies a mode latch to Alpha sub-mode of Text compaction mode.

If the value isn't included in Options property, the function codeword 915 shall be followed by at least 1 numeric character.

poFirstFNC1MatchAI01

: When the poFirstFNC1MatchAI01 is included in the value of Options property, if the " \f " followed by a

SSC-14 number (including Application Identifier 01 and 13-digit data, the checkdigit isn't required) is placed at beginnig of barcode, the function codeword 905 will be selected to encode the FNC1 character in order to reduce the symbol size (the leading

Application Identifier 01 is not encoded in the SSC-14 number). Otherwise, the function codeword 905 will be selected to encode the FNC1 character.

poMicroPDF417Explicit901

: In the specification of MicroPDF417

, the initial compaction mode in effect at the start of each symbol shall always be Byte compaction mode, but some readers use the other compaction mode (e.g. Alpha sub-mode of Text compaction) as the initial compaction mode. The value indicates to explicitly insert a mode latch to Byte compaction mode into beginning of symbol data, in order to work with these reader.

See also the "Character set", "Escape sequences", and "Extended Channel Interpretation (ECI)" sections in the

" TBarcodeFmx2D_MicroPDF417

" article.

A.1.100 Options

(TBarcodeFmx2D_PDF417)

The Options

property is an advanced feature which allows low level control over data encoding for a PDF417

symbol.

Syntax: type

{ Defined in the pfmxPDF417Com unit }

TPDF417_Option = (poIgnoreShiftBeforeECI, poFirst903TextAlphaLatch, poFirst904TextMixedLatch, po906TextAlphaLatch, po907TextAlphaLatch, po908TextAlphaLatch, po910TextAlphaLatch, po912TextAlphaLatch, po914TextAlphaLatch, po915TextAlphaLatch, poFirstFNC1MatchAI01, poMicroPDF417Explicit901);

{ Defined in the pfmxPDF417Com unit }

TPDF417_Options =

set of

TPDF417_Option;

property

Options: TPDF417_Options;

Description:

For some reader, the encoding algorithm and meanings of some function codewords don't conform with the

PDF417

specification. The property can be used to change the encoding algorithm and meanings of these fucntion codewords, in order to match the reader.

The following list describes the values that can be included in the Options property (defined in the pfmxPDF417Com unit):

poIgnoreShiftBeforeECI

: An ECI escape sequence may be placed anywhere within Text Compaction mode. Normally, the submode invoked immediately prior to the ECI escape sequence is preserved for the encodation immediately after it. Thus, sub-mode latches and shifts are preserved across an ECI escape sequence; and thus a sub-mode shift immediately before an ECI escape sequence is not ignored. If the value is included in the Options property, the sub-mode shift immediately before an ECI escape sequence is ignored, but a sub-mode latch immediately before an ECI escape sequence is never ignored.

poFirst903TextAlphaLatch

: If the function codeword 903 is placed at beginning of barcode text, it represents a leading FNC1 character in First position mode. Also, it normally implies a mode latch to Mixed sub-mode of Text Compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text Compaction mode.

poFirst904TextMixedLatch

: If the function codeword 904 is placed at beginning of barcode text, it represents a leading FNC1 character in First position mode. Also, it normally implies a mode latch to Numeric Compaction mode, the value indicates that it implies a mode latch to Mixed sub-mode of Text Compaction mode.

po906TextAlphaLatch

: The function codeword 906 represents a leading FNC1 character in First position mode. Also, it normally

157

2D Barcode FMX Components User Manual

implies a mode latch to Mixed sub-mode of Text Compaction mode, the value indicates that it implies a mode latch to Alpha submode of Text Compaction mode.

po907TextAlphaLatch

: The function codeword 907 represents a leading FNC1 character in First position mode. Also, it normally implies a mode latch to Numeric Compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text

Compaction mode.

po908TextAlphaLatch

: The function codeword 908 followed by an application indicator (single Latin alphabetic character from the set "a" to "z" and "A" to "Z", or a two-digit number) represents a leading FNC1 character in "Second position" mode. Also, it normally implies a mode latch to Mixed sub-mode of Text Compaction mode, the value indicates that it implies a mode latch to

Alpha sub-mode of Text compaction mode.

po910TextAlphaLatch

: The function codeword 910 indicates that the PDF417

symbol's data output shall conform with the

Code128 specification. Also, it normally implies a mode latch to Mixed sub-mode of Text compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text compaction mode.

po912TextAlphaLatch

: Normally, the function codeword 912 represents a leading FNC1 character in First position mode and implies a mode latch to Numeric Compaction mode. Also, it encodes that the data begins with a 6-digit date field (Application

Identifier is 11, 13, 15, or 17), and this date field may be followed by an implied Application Identifier 10 or 21 as well. The value indicates that it only implies a mode latch to Alpha sub-mode of Text compaction mode.

po914TextAlphaLatch

: The function codeword 914 represents a leading FNC1 character in First position mode and indicates that the data begins with an implied Application Identifier is 10. Also, it normally implies a mode latch to Numeric compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text compaction mode.

If the value isn't included in Options property, the function codeword 914 shall be followed by at least 1 numeric character.

po915TextAlphaLatch

: The function codeword 915 represents a leading FNC1 character in First position mode and indicates that the data begins with an implied Application Identifier is 21. Also, it normally implies a mode latch to Numeric compaction mode, the value indicates that it implies a mode latch to Alpha sub-mode of Text compaction mode.

If the value isn't included in Options property, the function codeword 915 shall be followed by at least 1 numeric character.

poFirstFNC1MatchAI01

: When the poFirstFNC1MatchAI01 is included in the value of Options property, if the " \f " followed by a

SSC-14 number (including Application Identifier 01 and 13-digit data, the checkdigit isn't required) is placed at beginnig of barcode, the function codeword 905 will be selected to encode the FNC1 character in order to reduce the symbol size (the leading

Application Identifier 01 is not encoded in the SSC-14 number). Otherwise, the function codeword 905 will be selected to encode the FNC1 character.

poMicroPDF417Explicit901

: The value isn't used in the TBarcodeFmx2D_PDF417

component.

See also the "Character set", "Escape sequences", and "Extended Channel Interpretation (ECI)" sections in the

" TBarcodeFmx2D_PDF417 " article.

A.1.101 Orientation

Controls the orientation of the barcode symbol.

Syntax: type

{ Defined in the pfmxBarcode2D unit }

TBarcodeOrientation = (boLeftRight, boRightLeft, boTopBottom, boBottomTop);

property

Orientation: TBarcodeOrientation;

Description:

Specifies the direction of the barcode symbol. The barcode symbol and its quiet zones (if they are displayed, please read the

158

2D Barcode FMX Components User Manual

ShowQuietZone

property about whether or not the quiet zones will be displayed) will be rotated based on the property value. You can

use the LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and

BottomQuietZone

properties to specify the size of these quiet zones in modules.

This property can be one of these values (defined in the pfmxBarcode2D unit):

boLeftRight

: Left to right horizontal direction (rotates the barcode symbol 0 degrees counter-clockwise). See diagram (the

SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

boRightLeft

: Right to left horizontal direction (rotates the barcode symbol 180 degrees counter-clockwise). See diagram (the

SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

boTopBottom

: Top to bottom vertical direction (rotates the barcode symbol 270 degrees counter-clockwise). See diagram (the

SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

boBottomTop

: Bottom to top vertical direction (rotates the barcode symbol 90 degrees counter-clockwise). See diagram (the

SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

A.1.102 Placement

(TBarcodeFmx2D_CompactMatrix)

Specifies how to place symbol characters when encoding the barcode text into a Compact Matrix

symbol.

Syntax: type

TCompactMatrix_Placement = (pmSequence, pmInterlacement);

property

Placement: TCompactMatrix_Placement;

Description:

Compact Matrix symbology has two symbol charcacters placement methods as sequence and interlacement. The property specifies

which placement method will be used to generate the

Compact Matrix

symbol. It can be one of values pmSequence and pmInterlacement , corresponding to the symbol charcacters placement methods sequence and interlacement.

159

2D Barcode FMX Components User Manual

A.1.103 ReviseVersion5

(TBarcodeFmx2D_HanXinCode)

Specifies whether to revise the position of alignment pattern for a Han Xin Code

version 5 symbol.

Syntax: property

ReviseVersion5: Boolean;

Description:

The property specifies whether to revise the position of alignment pattern for a Han Xin Code

version 5 symbol. By default, it's set to false, if the symbol can be read by your reader, please don't change it.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_HanXinCode

" article.

A.1.104 RowHeight

(TBarcodeFmx2D_Code16K)

Specifies the height of each stacked row for a

Code 16K

stacked barcode symbol, in modules.

Syntax: property

RowHeight: Integer;

Description:

The property specifies the height of each stacked row for a Code 16K

barcode symbol, in modules. It should be set to an integer greater than or equal to 8, and the height of separator bar isn't included. If the property is set to a value less than 8, the operation will be ignored.

See diagram:

A.1.105 RowHeight

(TBarcodeFmx2D_MicroPDF417)

Specifies the height of each stacked row for a

MicroPDF417 stacked barcode symbol, in modules.

Syntax: type

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_RowHeight = 1 .. 99;

property

RowHeight: TMicroPDF417_RowHeight;

Description:

The property specifies the height of each stacked row for a MicroPDF417

barcode symbol, in modules. It should be set to an integer between 1 and 99 (including the boundaries, defined in the pfmxMicroPDF417 unit). In general, it shall be a minimum of 2 modules.

160

2D Barcode FMX Components User Manual

See diagram:

A.1.106 RowHeight

(TBarcodeFmx2D_PDF417)

Specifies the height of each stacked row for a

PDF417

stacked barcode symbol, in modules.

Syntax: type

{ Defined in the pfmxPDF417Custom unit }

TPDF417_RowHeight = 1 .. 99;

property

RowHeight: TPDF417_RowHeight;

Description:

The property specifies the height of each stacked row for a

PDF417

barcode symbol, in modules.

The property should be set to an integer between 1 and 99 (including the boundaries, defined in the pfmxPDF417Custom unit). In general, it shall be a minimum of 3 modules.

See diagram:

A.1.107 RowHeight

(TBarcodeFmx2D_RSSExpanded)

Specifies the height of each stacked row for an RSS Expanded

barcode symbol, in modules.

Syntax: property

RowHeight: Integer;

Description:

For the RSS Expanded

(Standard) barcode symbol (the Style

property is set to rsStandard ), the property specifies the height of the

RSS Expanded

(Standard) barcode symbol, in modules. See diagram:

For the RSS Expanded

Stacked barcode symbol (the Style

property is set to rsStacked ), the property specifies the height of each

stacked row for the RSS Expanded

Stacked barcode symbol, in modules. See diagram:

161

2D Barcode FMX Components User Manual

162

The property should be set to an integer greater than or equal to 34.

A.1.108 RowSymbols

(TBarcodeFmx2D_RSSExpanded)

Specifies the number of symbol segments in each row for an

RSS Expanded

Stacked symbol.

Syntax: property

RowSymbols: Integer;

Description:

The property specifies the number of symbol segments in each row for an RSS Expanded

Stacked symbol (the Style

property is set to rsStacked ). It's an integer between 2 and 20 (including the boundaries, only even values are valid), the barcode symbol will be stacked in two to eleven rows based on the total numbers of symbol segments and the number of symbol segments in each row.

If the RSS Expanded

Stacked symbol is used together with a 4-column CC-A or a 4-column CC-B barcode symbol to create the

EAN.UCC composite symbol, the RSS Expanded

Stacked symbol shall contain at least four symbol characters within its top row. In

other words, the value of RowSymbols

property should be greater than or equal to 4.

See also the "Symbol size" section in the "

TBarcodeFmx2D_RSSExpanded

" article.

A.1.109 SeparatorBarHeight

(TBarcodeFmx2D_Code16K)

Specifies the height of separator bar for Code 16K

barcode symbology, in modules.

Syntax: property

SeparatorRowHeight: Integer;

Description:

The property specifies the height of separator bar for Code 16K barcode symbology, in modules. It's an integer between 1 and 4

(including the boundaries).

The separator bar is horizontal bar separating two rows of a Code 16K

barcode symbol, or abutting the top or bottom of first or last row respectively.

See diagram:

2D Barcode FMX Components User Manual

A.1.110 SeparatorRowHeight

(TBarcodeFmx2D_RSS14, TBarcodeFmx2D_RSSExpanded)

Specifies the height of separator pattern row between symbol rows for RSS-14

(Stacked and Stacked Omnidirectional) and RSS

Expanded (Stacked) symbols, in modules.

Also, it sepecifies the height of contiguous separator pattern row between the linear and 2D symbols of an EAN.UCC Composite

symbol which use the RSS symbol (including any style of RSS-14

,

RSS Limited

, or any style of RSS Expanded

symbol) as its linear symbol, in modules.

Syntax: property

SeparatorRowHeight: Integer;

Description:

For the RSS-14

barcode symbols, if the Style property is set to the

rsStacked (Stacked style) or rsStackedOmnidirectional (Stacked

Omnidirectional style), the property specifies the height of separator pattern row between top row and bottom row, in modules. See diagram:

For the RSS Expanded

barcode symbols, if the

Style

property is set to rsStacked (Stacked style), the property specifies the height of separator pattern row between symbol rows, in modules. See diagram:

If an RSS barcode symbol (including any style of RSS-14

,

RSS Limited

, or any style of RSS Expanded

symbol) is used together with

an adjacent 2D symbol to create the EAN.UCC Composite symbol (its Link2D property is set to true), and the contiguous separator

pattern is displayed (its Show2DSeparator

property is set to true), the property specifies the height of contiguous separator pattern too, in modules.

See diagram:

See also the "Composite symbol" section in the

" TBarcodeFmx2D_RSS14

", "

TBarcodeFmx2D_RSSLimited

", and

" TBarcodeFmx2D_RSSExpanded " articles.

A.1.111 SeparatorRowHeight

(TBarcodeFmx2D_RSSLimited)

Specify the height of contiguous separator pattern row between the linear and 2D symbols of an EAN.UCC Composite symbol which

use the RSS Limited

symbol as its linear symbol, in modules.

163

2D Barcode FMX Components User Manual

Syntax: property

SeparatorRowHeight: Integer;

Description:

If an RSS Limited

barcode symbol is used together with an adjacent 2D symbol to create the EAN.UCC Composite symbol (its Link2D

property is set to true), and the contiguous separator pattern is respresented (its

Show2DSeparator

property is set to true), the property specifies the height of contiguous separator pattern, in modules.

See diagram:

See also the "Composite symbol" section in the " TBarcodeFmx2D_RSSLimited

" article.

A.1.112 Shape

(TBarcodeFmx2D_DataMatrixEcc200)

Specifies which shape of

Data Matrix (ECC 200) symbol will be selected to generate the Data Matrix (ECC 200)

barcode symbol.

Syntax: type

{ Defined in the pfmxDataMatrixEcc200 unit }

TDataMatrixEcc200_Shape = (dsSquare, dsRectangle);

property

Shape: TDataMatrixEcc200_Shape;

Description:

There are two shapes of Data Matrix (ECC 200) symbols, square and rectangle. The property specifies which shape of Data Matrix

(ECC 200) symbol will be selected to generate the barcode symbol.

The property can be one of these values (defined in the pfmxDataMatrixEcc200 unit):

dsSquare

: Indicates to generate the square symbols. In this case, if the MinSize

property value isn't between dmSize_10_10 and dmSize_144_144 then it's default to dmSize_10_10 , and if the

MaxSize property value isn't between

dmSize_10_10 and dmSize_144_144 then it's default to dmSize_144_144 .

dsRectangle

: Indicates to generate the rectangle symbols. In this case, if the MinSize

property value isn't between dmSize_8_18 and dmSize_16_48 then it's default to dmSize_8_18 , and if the

MaxSize

property value isn't between dmSize_8_18 and dmSize_16_48 then it's default to dmSize_16_48 .

See also the "Shapes" section in the " TBarcodeFmx2D_DataMatrixECC2OO

" article.

A.1.113 Show2DSeparator

Specifies whether to represent a 2D contiguous separator pattern on top of the RSS-14

, RSS Limited

, or

RSS Expanded

symbols.

Syntax: property

Show2DSeparator: Boolean;

Description:

164

2D Barcode FMX Components User Manual

An RSS barcode symbol (including RSS-14

,

RSS Limited

, and RSS Expanded

) can be used together with a CC-A or a CC-B 2D symbol to create the EAN.UCC composite symbol. A contiguous separator pattern is required between the RSS and the 2D symbols in an EAN.UCC composite symbol. The property specifies whether to draw the contiguous separator pattern on top of the RSS symbol, in order to create EAN.UCC composite symbol using the RSS symbol. See digiam (the color of separator patterns are changed to red in order to accentuate them):

The height of contiguous separator pattern is specified by the SeparatorRowHeight

(for RSS-14

and

RSS Expanded

components) and

SeparatorRowHeight

(for the RSS Limited

component) property, in modules.

Note, in order to draw the contiguous separator pattern, both the Show2DSeparator and the

Link2D

properties must be set to true.

See also the "Composite symbol" section in the

" TBarcodeFmx2D_RSS14

", "

TBarcodeFmx2D_RSSLimited

", and

" TBarcodeFmx2D_RSSExpanded " articles.

A.1.114 ShowQuietZone

Specifies whether to draw the

leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and

bottom quiet zone

.

Syntax: property

ShowQuietZone: Boolean;

Description:

The property specifies whether to draw the leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and bottom quiet zone

. If the property value is set to true, these quiet zones are drawn. Otherwise, they don't be drawn. And they are drawn using the color

specified by the SpaceColor

property if the Inversed

property is set to false. Otherwise, they are drawn using the color specified by the

BarColor

property. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

You can use the

LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties to specify the size of these quiet zones in modules.

For

the TBarcodeFmx2D_Code16K

barcode components, the leading and trailing quiet zones (their size is specified by

LeadingQuietZone and

TrailingQuietZone

properties) will be drawn always, even if the ShowQuietZone property value is set to false.

See diagram (the SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

165

2D Barcode FMX Components User Manual

A.1.115 SpaceColor

Specifies the color for all spaces or light modules in the barcode symbol, By default, it's claWhite .

Syntax: property

SpaceColor: TAlphaColor;

Description:

For the

Matrix

2D barcode symbologies,

including TBarcodeFmx2D_AztecCode

,

TBarcodeFmx2D_AztecRunes

,

TBarcodeFmx2D_DataMatrix

,

TBarcodeFmx2D_DataMatrixECC200

,

TBarcodeFmx2D_HanXinCode

,

TBarcodeFmx2D_GridMatrix

,

TBarcodeFmx2D_CompactMatrix

,

TBarcodeFmx2D_QRCode

,

TBarcodeFmx2D_MaxiCode

, and

TBarcodeFmx2D_MicroQRCode

, the

property specifies the color of every light module (background color) in matrix symbol if the Inversed

property is set to false. Otherwise, it specifies the color of every dark module. The module is single cell in the matrix symbol used to encode one bit data, nominally a

suqare shape, in MaxiCode

symbology, it's a regular hexagonal shape.

F o r

Stacked

2D barcode symbologies and

Linear

1D barcode symbologies,

including TBarcodeFmx2D_Code16K

,

TBarcodeFmx2D_PDF417 ,

TBarcodeFmx2D_MicroPDF417

,

TBarcodeFmx2D_RSS14

,

TBarcodeFmx2D_RSSLimited

, and

TBarcodeFmx2D_RSSExpanded , the property specifies the color for all spaces (background color) in the barcode symbol if the

Inversed

property is set to false. Otherwise, it specifies the color for all bars.

Also, when the leading quiet zone

, trailing quiet zone

,

top quiet zone

, and bottom quiet zone

are drawn (the ShowQuietZone

property is set to true), the color specified by this SpaceColor

property will be used to draw them if the Inversed

property is set to false.

Otherwise, the color specified by the BarColor

property will be used.

A.1.116 StartWidth

(TBarcodeFmx2D_CompactMatrix)

Specifies the width of start pattern for a

Compact Matrix

barcode symbol, in modules.

Syntax: property

StartWidth: Integer;

Description:

The property specifies the width of start pattern for a Compact Matrix

barcode symbol, in modules. It should be set to an integer greater than or equal to 2. If the property is set to a value less than 2, an exception will be raised.

See diagram:

A.1.117 StopWidth

(TBarcodeFmx2D_CompactMatrix)

166

2D Barcode FMX Components User Manual

Specifies the width of stop pattern for a Compact Matrix

barcode symbol, in modules.

Syntax: property

StopWidth: Integer;

Description:

The property specifies the width of stop pattern for a Compact Matrix

barcode symbol, in modules. It should be set to an integer greater than or equal to 2. If the property is set to a value less than 2, an exception will be raised.

See diagram:

A.1.118 Stretch

Specifies whether to reduce/stretch the barcode symbol to specified size.

Syntax: property

Stretch: Boolean;

Description:

The property specifies whether to reduce/stretch the barcode symbol to fit the size specified by BarcodeWidth

and BarcodeHeight

properties. The barcode symbol together with its quiet zones (if they are displayed) will be reduced/stretched if the property is set to

true. You can use the LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and

BottomQuietZone

properties to specify the size of

these quiet zones in modules. And use the ShowQuietZone

property to specify whether to display these quiet zones.

If the property is set to false, the barcode symbol will not be reduced/stretched. The values of BarcodeWidth

and BarcodeHeight

properties will be ignored.

The barcode symbol width and height will be calculated based on the Module

property value.

You can get the width and height by using the Size

method.

If the property is set to true, the barcode symbol will be reduced/stretched to fit the size specified by BarcodeWidth

and

BarcodeHeight

properties.

The BarcodeWidth

property specifies the width of barcode symbol. If the property value is less than or equal to zero, it specifies

the right margin of the barcode symbol (the Orientation

property is set to boLeftRight or boRightLeft ), or the bottom margin of the

barcode symbol (the Orientation

property is set to boTopBottom or boBottomTop

). See also the BarcodeWidth

property. See diagram:

The BarcodeHeight

property specifies the height of barcode symbol. If the property value is less than or equal to zero, it specifies the bottom margin of the barcode symbol (the

Orientation

property is set to boLeftRight or boRightLeft ), or the right margin of the

167

2D Barcode FMX Components User Manual

barcode symbol (the Orientation

property is set to boTopBottom or boBottomTop

). See also the BarcodeHeight

property. See diagram:

A.1.119 StretchOrder

(TBarcodeFmx2D_CompactMatrix)

Specifies the priority order of selecing appropriate symbol size for a Compact Matrix

barcode symbol.

Syntax: type

{ Defined in the pfmxCompactMatrix unit }

TCompactMatrix_StretchOrder = (soVersionSegment, soSegmentVersion, soFixAspect, soFixAspectWithQuietZones);

property

StretchOrder: TCompactMatrix_StretchOrder;

Description:

There are 32 vertical sizes of Compact Matrix symbol, referred to as version 1 to 32, in increasing order of symbol height and data capacity. In horizontal orientation, each

Compact Matrix symbol consists of an array of segments with a minimum of 1 segment

(maximum 32 segments).

The minimum version (specified by the MinVersion

property) and the minimum number of segments (specified by the

MinSegments

property) indicates the minimum symbol size for a

Compact Matrix

barcode symbol. The maximum version (specified by the

MaxVersion

property) and the maximum number of segments (specified by the

MaxSegments

property) indicates the maximum symbol

size for the Compact Matrix

barcode symbol. The property specifies a priority order in order to automatically select the symbol size.

According to the priority order, the first symbol size (version and number of segments) that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

The property can be one of these values (defined in the pfmxCompactMatrix unit):

soVersionSegment

: If the Compact Matrix

symbol that use minimum symbol size (specified by the

MinVersion

and

MinSegments

properties) cannot accommodate the barcode text, the symbol version will be increased firstly until it reachs the maximum value

(specified by the MaxVersion

property) or the barcode text is accommodated by the symbol. If the version has reached the

maximum value (specified by the MaxVersion

property) but the barcode text cannot yet be accommodated, the number of

segments will be increased and the version will be reset to minimum value (specified by the MinVersion

property). Repeat these until the barcode text is accommodated by the symbol, or not only does the version reach maximum value (specified by the

MaxVersion

property), but also the number of segments reachs maximum number of segments (specified by the MaxSegments

property), in this case (the barcode text cannot always be accommodated), an OnInvalidLength

(the barcode text is specified in the

Barcode

property) or OnInvalidDataLength

(the barcode text is specified in the

Data property) event will occur.

soSegmentVersion

: If the Compact Matrix

symbol that use minimum symbol size (specified by the

MinVersion

and

MinSegments

properties) cannot accommodate the barcode text, the number of segments will be increased firstly until it reachs the maximum number of segments (specified by the

MaxSegments

property) or the barcode text is accommodated by the symbol. If the number of segments has reached the maximum number of segments (specified by the

MaxSegments

property) but the barcode text

168

2D Barcode FMX Components User Manual

cannot yet be accommodated, the version will be increased and the number of segments will be reset to minimum number of

segments (specified by the MinSegments

property). Repeat these until the barcode text is accommodated by the symbol, or not

only does the number of segments reach maximum number of segments (specified by the MaxSegments

property), but also the version reachs maximum value (specified by the

MaxVersion

property), in this case (the barcode text cannot always be

accommodated), an OnInvalidLength

(the barcode text is specified in the

Barcode

property) or

OnInvalidDataLength

(the barcode

text is specified in the Data

property) event will occur.

soFixAspect

: An overall aspect ratio is specified by the minimum version (specified by the MinVersion

property) and minumum number of segments (specified by the

MinSegments

property), the ratio is height to width of the symbol excluding quiet zones.

Between the minimum symbol size (specified by the MinVersion

and MinSegments

properties) and the maximum symbol size

(specified by the

MaxVersion

and

MaxSegments

properties), only symbol sizes that they approximately match the aspect ratio will be used. According to the data capacity, in increasing order of recovery capacity, the smallest symbol size that accommodates the barcode text will be automatically selected. If the barcode text cannot be accommodated by the maximum symbol size (specified

by the MaxVersion

and MaxSegments

properties), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or

OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur.

soFixAspectWithQuietZones

: An overall aspect ratio is specified by the minimum version (specified by the

MinVersion

property)

and minumum number of segments (specified by the MinSegments

property), the ratio is height to width of the symbol including

quiet zones. Between the minimum symbol size (specified by the MinVersion

and MinSegments

properties) and the maximum symbol size (specified by the

MaxVersion

and MaxSegments

properties), only symbol sizes that they approximately match the aspect ratio will be used. According to the data capacity, in increasing order of recovery capacity, the smallest symbol size that accommodates the barcode text will be automatically selected. If the barcode text cannot be accommodated by the maximum

symbol size (specified by the MaxVersion

and

MaxSegments

properties), an OnInvalidLength

(the barcode text is specified in the

Barcode

property) or OnInvalidDataLength

(the barcode text is specified in the

Data property) event will occur.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_CompactMatrix

" article.

A.1.120 StretchOrder

(TBarcodeFmx2D_MicroPDF417)

Specifies the priority order of selecing appropriate symbol size for a MicroPDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_StretchOrder = (soRowColumn, soColumnRow, soRowPrior, soColumnPrior, soGlobal_1, soGlobal_2, soGlobal_3, soGlobal_4);

property

StretchOrder: TMicroPDF417_StretchOrder;

Description:

The property specifies a priority order in order to automatically select the symbol size for a MicroPDF417 barcode symbol. According to

the priority order, the first symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size (specified by the

MinSize

property) and the maximum symbol size (specified by the

MaxSize

property).

The property can be one of these values (defined in the pfmxMicroPDF417 unit):

soRowColumn

: If the MicroPDF417

symbol that use minimum symbol size cannot accommodate the barcode text, the number of

rows will be increased firstly until it reachs the maximum number of rows (specified by the MaxSize

property) or the barcode text is

accommodated by the symbol. If the number of rows has reached the maximum number of rows (specified by the MaxSize

property) but the barcode text cannot yet be accommodated, the number of columns will be increased and the number of rows will

be reset to minimum number of rows (specified by the MinSize

property). Repeat these until the barcode text is accommodated by

the symbol, or the symbol size reachs maximum symbol size (specified by the MaxSize

property), in this case (tha barcode text

cannot always be accommodated), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or

OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur. See diagram:

169

2D Barcode FMX Components User Manual soColumnRow

: If the MicroPDF417

symbol that use minimum symbol size cannot accommodate the barcode text, the number of

columns will be increased firstly until it reachs the maximum number of columns (specified by the MaxSize

property) or the barcode text is accommodated by the symbol. If the number of columns has reached the maximum number of columns (specified by the

MaxSize

property) but the barcode text cannot yet be accommodated, the number of rows will be increased and the number

of columns will be reset to minimum number of columns (specified by the MinSize

property). Repeat these until the barcode text is

accommodated by the symbol, or the symbol size reachs maximum symbol size (specified by the MaxSize

property), in this case

(tha barcode text cannot always be accommodated), an

OnInvalidLength

(the barcode text is specified in the Barcode

property) or

OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur. See diagram:

soRowPrior

: If the MicroPDF417

symbol that use minimum symbol size cannot accommodate the barcode text, the number of rows will be increased firstly until it reachs the maximum number of rows defined by the specification or the barcode text is accommodated by the symbol. If the number of rows has reached the maximum number of rows defined by the specification but the barcode text cannot yet be accommodated, the number of columns will be increased and the number of rows will be reset to minimum number of rows defined by the specification. Repeat these until the barcode text is accommodated by the symbol, or the symbol size reachs maximum symbol size (specified by the

MaxSize

property), in this case (tha barcode text cannot always be

accommodated), an OnInvalidLength

(the barcode text is specified in the

Barcode

property) or

OnInvalidDataLength

(the barcode

text is specified in the Data

property) event will occur. See diagram:

170

soColumnPrior

: If the MicroPDF417 symbol that use minimum symbol size cannot accommodate the barcode text, the number of

columns will be increased firstly until it reachs the maximum number of columns defined by the specification or the barcode text is accommodated by the symbol. If the number of columns has reached the maximum number of columns defined by the specification but the barcode text cannot yet be accommodated, the number of rows will be increased and the number of columns will be reset to minimum number of columns defined by the specification. Repeat these until the barcode text is accommodated by

the symbol, or the symbol size reachs maximum symbol size (specified by the MaxSize

property), in this case (tha barcode text

cannot always be accommodated), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or

OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur. See diagram:

2D Barcode FMX Components User Manual soGlobal_1

: All available symbol sizes will be sorted in ascending order of data capacity. If the data capacitoies of any two or three symbol sizes are equivalent, only smaller one in number of rows will be sorted. According to the order, the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size (specified by the

MinSize

property) and the maximum symbol size (specified by the MaxSize

property). The order is listed below: mpSize_1_11, mpSize_3_6, mpSize_1_14,

mpSize_2_8

,

mpSize_1_17

,

mpSize_1_20

, mpSize_2_11, mpSize_3_10, mp Size_1_24,

mpSize_3_12

, mpSize_2_14, mpSize_1_28, mpSize_2_17, mpSize_2_20, mpSize_4_12, mpSize_2_23, mpSize_3_20, mpSize_2_26, mpSize_4_15, mpSize_3_26, mpSize_4_20, mpSize_3_32, mpSize_3_38, mpSize_4_26, mpSize_3_44, mpSize_4_32, mpSize_4_38, mpSize_4_44.

If tha barcode text cannot be accommodated in the maximum symbol size (specified by the MaxSize

property), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur.

soGlobal_2

: All available symbol sizes will be sorted in ascending order of data capacity. If the data capacitoies of any two or three symbol sizes are equivalent, only smaller one in number of columns will be sorted. According to the order, the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size (specified by the

MinSize

property) and the maximum symbol size (specified by the MaxSize

property). The order is listed below: mpSize_1_11, mpSize_3_6, mpSize_1_14,

mpSize_4_4

,

mpSize_3_8

,

mpSize_4_6

, mpSize_2_11, mpSize_3_10, mpSize_1_24,

mpSize_4_8

, mpSize_2_14, mpSize_1_28, mpSize_4_10, mpSize_2_20, mpSize_4_12, mpSize_2_23, mpSize_3_20, mpSize_2_26, mpSize_4_15, mpSize_3_26, mpSize_4_20, mpSize_3_32, mpSize_3_38, mpSize_4_26, mpSize_3_44, mpSize_4_32, mpSize_4_38, mpSize_4_44.

If tha barcode text cannot be accommodated in the maximum symbol size (specified by the MaxSize

property), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur.

soGlobal_3

: All available symbol sizes will be sorted in ascending order of data capacity. If the data capacitoies of any two symbol sizes are equivalent, only smaller one in number of rows will be sorted. If the data capacitoies of any three symbol sizes are equivalent, only middle one in number of rows and columns will be sorted. According to the order, the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size (specified by the

MinSize

property) and the maximum symbol size (specified by the MaxSize

property). The order is listed below: mpSize_1_11, mpSize_3_6, mpSize_1_14,

mpSize_2_8

,

mpSize_1_17

,

mpSize_1_20

, mpSize_2_11, mpSize_3_10, mp Size_1_24,

mpSize_3_12

, mpSize_2_14, mpSize_1_28, mpSize_3_15, mpSize_2_20, mpSize_4_12, mpSize_2_23, mpSize_3_20, mpSize_2_26, mpSize_4_15, mpSize_3_26, mpSize_4_20, mpSize_3_32, mpSize_3_38, mpSize_4_26, mpSize_3_44, mpSize_4_32, mpSize_4_38, mpSize_4_44.

If tha barcode text cannot be accommodated in the maximum symbol size (specified by the MaxSize

property), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur.

soGlobal_4

: All available symbol sizes will be sorted in ascending order of data capacity. If the data capacitoies of any two symbol sizes are equivalent, only smaller one in number of columns will be sorted. If the data capacitoies of any three symbol sizes are equivalent, only middle one in number of rows and columns will be sorted. According to the order, the smallest symbol size that accommodates the barcode text will be automatically selected between the minimum symbol size (specified by the

MinSize

property) and the maximum symbol size (specified by the MaxSize

property). The order is listed below: mpSize_1_11, mpSize_3_6, mpSize_1_14,

mpSize_4_4

,

mpSize_3_8

,

mpSize_4_6

, mpSize_2_11, mpSize_3_10, mpSize_1_24,

mpSize_4_8

, mpSize_2_14, mpSize_1_28, mpSize_3_15, mpSize_2_20, mpSize_4_12, mpSize_2_23, mpSize_3_20,

171

2D Barcode FMX Components User Manual

mpSize_2_26, mpSize_4_15, mpSize_3_26, mpSize_4_20, mpSize_3_32, mpSize_3_38, mpSize_4_26, mpSize_3_44, mpSize_4_32, mpSize_4_38, mpSize_4_44.

If tha barcode text cannot be accommodated in the maximum symbol size (specified by the MaxSize

property), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur.

See also the "Symbol sizes" section in the " TBarcodeFmx2D_MicroPDF417

" article.

A.1.121 StretchOrder

(TBarcodeFmx2D_PDF417)

Specifies the priority order of selecing appropriate symbol size for a PDF417

barcode symbol.

Syntax: type

{ Defined in the pfmxPDF417 unit }

TPDF417_StretchOrder = (soRowColumn, soColumnRow, soFixAspect, soFixAspectWithQuietZones);

property

StretchOrder: TPDF417_StretchOrder;

Description:

The minimum number of rows (specified by the MinRows

property) and the minimum number of columns (specified by the

MinColumns

property) indicates the minimum symbol size for a

PDF417

barcode symbol. The maximum number of rows (specified by

the MaxRows

property) and the maximum number of columns (specified by the

MaxColumns

property) indicates the maximum symbol

size for the PDF417

barcode symbol. The property specifies a priority order in order to automatically select the symbol size. According to the priority order, the first symbol size (number of rows and columns) that accommodates the barcode text will be automatically selected between the minimum symbol size and the maximum symbol size.

The property can be one of these values (defined in the pfmxPDF417 unit):

soRowColumn

: If the PDF417

symbol that use minimum symbol size (specified by the MinColumns

and MinRows

properties) cannot accommodate the barcode text, the number of stacked rows will be increased firstly until it reachs the maximum number of

stacked rows (specified by the MaxRows

property) or the barcode text is accommodated by the symbol. If the number of stacked

rows has reached the maximum number of stacked rows (specified by the MaxRows

property) but the barcode text cannot yet be accommodated, the number of columns will be increased and the number of stacked rows will be reset to minimum number of

stacked rows (specified by the MinRows

property). Repeat these until the barcode text is accommodated by the symbol, or not

only does the number of rows reach maximum number of stacked rows (specified by the MaxRows

property), but also the number

of columns reachs maximum number of columns (specified by the MaxColumns

property), in this case (the barcode text cannot

always be accommodated), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or

OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur. See diagram:

172

soColumnRow

: If the PDF417

symbol that use minimum symbol size (specified by the MinColumns

and MinRows

properties) cannot accommodate the barcode text, the number of columns will be increased firstly until it reachs the maximum number of

columns (specified by the MaxColumns

property) or the barcode text is accommodated by the symbol. If the number of columns

has reached the maximum number of columns (specified by the MaxColumns

property) but the barcode text cannot yet be accommodated, the number of stacked rows will be increased and the number of columns will be reset to minimum number of

columns (specified by the MinColumns

property). Repeat these until the barcode text is accommodated by the symbol, or not only

2D Barcode FMX Components User Manual

does the number of columns reach maximum number of columns (specified by the

MaxColumns

property), but also the number of

stacked rows reachs maximum number of stacked rows (specified by the MaxRows

property), in this case (the barcode text cannot

always be accommodated), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or

OnInvalidDataLength

(the barcode text is specified in the

Data

property) event will occur. See diagram:

soFixAspect

: An overall aspect ratio is specified by the minimum number of stacked rows (specified by the

MinRows

property)

and minumum number of columns (specified by the MinColumns

property), the ratio is height to width of the symbol excluding

quiet zones. Between the minimum symbol size (specified by the MinColumns

and MinRows

properties) and the maximum symbol

size (specified by the MaxColumns

and

MaxRows

properties), only symbol sizes that they approximately match the aspect ratio will be used. According to the data capacity, in increasing order of recovery capacity, the smallest symbol size that accommodates the barcode text will be automatically selected. If the barcode text cannot be accommodated by the maximum symbol size (specified

by the MaxColumns

and MaxRows

properties), an OnInvalidLength

(the barcode text is specified in the Barcode

property) or

OnInvalidDataLength

(the barcode text is specified in the Data property) event will occur.

soFixAspectWithQuietZones

: An overall aspect ratio is specified by the minimum number of stacked rows (specified by the

MinRows

property) and minumum number of columns (specified by the

MinColumns

property), the ratio is height to width of the

symbol including quiet zones. Between the minimum symbol size (specified by the MinColumns

and

MinRows

properties) and the maximum symbol size (specified by the

MaxColumns

and MaxRows

properties), only symbol sizes that they approximately match the aspect ratio will be used. According to the data capacity, in increasing order of recovery capacity, the smallest symbol size that accommodates the barcode text will be automatically selected. If the barcode text cannot be accommodated by the maximum symbol size (specified by the

MaxColumns

and MaxRows

properties), an OnInvalidLength

(the barcode text is specified in the

Barcode

property) or OnInvalidDataLength

(the barcode text is specified in the

Data property) event will occur.

See also the "Symbol size" section in the "

TBarcodeFmx2D_PDF417

" article.

A.1.122 Style

(TBarcodeFmx2D_RSS14)

Specifies which style (version) of RSS-14

symbols will be used.

Syntax: type

{ Defined in the pfmxRss14 unit }

TRSS14_Style = (rsStandard, rsTruncated, rsStacked, rsStackedOmnidirectional);

property

Style: TRSS14_Style;

Description:

There are four styles (versions) of RSS-14

symbols, referred to as RSS-14 (Standard), RSS-14 Truncated, RSS-14 Stacked, and RSS-

14 Stacked Omnidirectional respectively. The property specifies which style (version) will be used.

The property can be one of these values (defined in the pfmxRss14 unit):

rsStandard

: Indicates to generate the standard style RSS-14 symbol. It encodes the full 14-digit EAN.UCC item identification

(Global Trade Item Numbers, GTINs) in a symbol that can be omnidirectionally scanned by suitably configured point-of-sale laser scanners.

173

2D Barcode FMX Components User Manual rsTruncated

: Indicates to generate the RSS-14 Truncated barcode symbol. It is structured and encoded in the same way as the

standard RSS-14 format, except its height is reduced to a 13 modules minimum. It may be used for small items, instead of RSS

Limited . It may also be used when the four-column 2D component is desired in order to minimize the height of an EAN.UCC

Composite symbol.

RSS-14 Truncated is designed to be read by scanners such as wands, handheld lasers, and linear and 2D imagers. It cannot be read efficiently by omnidirectional flat-bed and presentation scanners.

rsStacked

: Indicates to generate the RSS-14 Stacked barcode symbol. It is an RSS-14 Truncated two-row format. It may be used for small items instead of

RSS Limited when the available space is too narrow for RSS Limited

. Moreover, the narrower width of

RSS-14 Stacked might allow for a larger module width and potentially higher print quality. However, RSS Limited

or RSS-14

Truncated should be used in preference to the stacked format whenever space permits without reducing module width, as they are easier to scan with a wand or linear scanner.

RSS-14 Stacked is designed to be read by scanners such as wands, handheld lasers, and linear and 2D imagers. It cannot be read efficiently by omnidirectional flat-bed and presentation scanners.

rsStackedOmnidirectional

: Indicates to generate the RSS-14 Stacked Omnidirectional barcode symbol. It is a full height RSS-14 two-row format. It can be used instead of RSS-14 for omnidirectional scanning applications where the different aspect ratio is needed.

See also the "Styles" section in the " TBarcodeFmx2D_RSS14

" article.

A.1.123 Style

(TBarcodeFmx2D_RSSExpanded)

Specifies which style (version) of RSS Expanded

symbols will be used.

Syntax: type

{ Defined in the pfmxRssExpanded unit }

TRSSExpanded_Style = (rsStandard, rsStacked);

property

Style: TRSSExpanded_Style;

Description:

There are two styles (versions) of RSS Expanded

symbols, referred to as RSS Expanded (Standard) and RSS Expanded Stacked respectively. The property specifies which style (version) of

RSS Expanded symbol will be used.

The property can be one of these values (defined in the pfmxRssExpanded unit):

rsStandard

: Indicates to generate the standard style RSS Expanded symbol. It is a single row, variable length linear symbology. It can identify small items and carry more information than the current EAN/UPC barcode.

174

2D Barcode FMX Components User Manual rsStacked

: Indicates to generate the RSS Expanded Stacked symbol. It is an RSS Expanded multi-row format. It may be used when the symbol area or print mechanism is not wide enough to accommodate the full single row symbol.

See also the "Styles" section in the " TBarcodeFmx2D_RSSExpanded

" article.

A.1.124 SymbolMode

(TBarcodeFmx2D_AztecCode)

Specifies which symbol format and size will be automatically selected to generate an Azec Code

symbol.

Syntax: type

{ Defined in the pfmxAztecCode unit }

TAztecCode_SymbolMode = (smNormal, smCompact, smFullRange, smProgram, smAll);

property

SymbolMode: TAztecCode_SymbolMode;

Description:

The property specifies which Aztec Code symbol formats and sizes will be automatically selected between minimum and maximum

symbol sizes specified by corresponding MinSize

and MaxSize

properties, depending on the length of barcode text.

The property can be one of these values (defined in the pfmxAztecCode unit):

smNormal

: Only the symbol sizes that they are useful for data encoding operation, including all compact symbol sizes

( azSize_15Compact , azSize_19Compact , azSize_23Compact , and azSize_27Compact ), and full range symbol sizes from azSize_31 to azSize_151 .

smCompact

: Only the symbol sizes in compact format, including the azSize_15Compact , azSize_19Compact , azSize_23Compact , and azSize_27Compact .

smFullRange

: Only the symbol sizes in full range format, including the azSize_19 , azSize_23 , azSize_27 , and azSize_31 to azSize_151 .

smProgram

: Only the symbol sizes that they are useful for reader initialization, including azSize_15Compact , azSize_19 , azSize_23 , azSize_27 , and full range symbol sizes from azSize_31 to azSize_109 . Note, in order to create a reader initialization symbol, a " \p " escape sequence shoule be placed into the barcode text, and the

AllowEscape

property should be set to true.

smAll

: All symbol sizes, including compact and full range formats.

See also the "Formats" and "Symbol sizes" sections in the " TBarcodeFmx2D_AztecCode

" article.

A.1.125 TopMargin

Specifies the top margin of the barcode symbol in pixels.

Syntax: property

TopMargin: Integer;

Description:

175

2D Barcode FMX Components User Manual

Specifies the margin between the topmost of the barcode symbol and the top side of the TImage

control that is specified by the Image

property, in pixels.

If the quiet zones are displayed (please read the ShowQuietZone property about whether or not the quiet zones will be displayed),

they are included in the barcode symbol. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

It is set using the following formula:

The Orientation

property is set to boLeftRight :

It is the margin between the top of the barcode symbol and the top side of the TImage control.

See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

The Orientation

property is set to boRightLeft :

It is the margin between the bottom of the barcode symbol and the top side of the TImage control.

See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

The Orientation

property is set to boTopBottom :

It is the margin between the beginning of the barcode symbol and the top side of the TImage control.

See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

The Orientation

property is set to boBottomTop :

It is the margin between the end of the barcode symbol and the top side of the TImage control.

See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

Note:

For the TBarcodeFmx2D_Code16K

barcode components, the

leading quiet zone

and the trailing quiet zone

are included always, even

176

2D Barcode FMX Components User Manual

if the ShowQuietZone

is set to false. See diagram (the SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

A.1.126 TopQuietZone

Specifies the vertical height of the top quiet zone in modules.

Syntax: property

TopQuietZone: Integer;

Description:

Specifies the vertical height of the top quiet zone in modules. The quiet zone is drawn using the color specified by the SpaceColor

property if the

Inversed

property is set to false. Otherwise, it's drawn using the color specified by the BarColor

property. See diagram

(the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

This property is useful only when the ShowQuietZone

property value is set to true.

A.1.127 TotalHeight

(TBarcodeFmx2D_RSS14, TBarcodeFmx2D_RSSLimited)

Specifies the total height for an RSS-14

or an RSS Limited

symbol, in modules.

Syntax: property

TotalHeight: Integer;

Description:

The property specifies the total height for an

RSS-14

or an RSS Limited

symbol, in modules.

For all styles of RSS-14

symbol, and RSS Limited

symbol, if both the Link2D

and Show2DSeparator

properties are set to Ture, a contiguous separator pattern is drawn and its minimum height is 1 module (the pattern height can be specified by the

SeparatorRowHeight

property). The height of contiguous separator pattern is included in the value of TotalHeight property.

For the RSS-14 Stacked and RSS-14

Stacked Omnidirectional symbols, the height of separator pattern between symbol rows

(specified by the

SeparatorRowHeight

property) is included.

The property is set using the following formula:

For the RSS-14

symbols:

177

2D Barcode FMX Components User Manual

RSS-14 (Standard)

: Appropriate TotalHeight value should be set in order to ensure that the height of symbol row is greater than or equal to 33 modules. In other words, if the contiguous separator pattern isn't displayed, minimum value of the property is 33 modules. Otherwise, it's 33 modules plus height of the contiguous separator pattern (specified by the

SeparatorRowHeight

property). See diagram:

RSS-14 Truncated

: Appropriate TotalHeight value should be set in order to ensure that the height of symbol row is greater than or equal to 13 modules. In other words, if the contiguous separator pattern isn't displayed, minimum value of the property is 13 modules. Otherwise, it's 13 modules plus height of the contiguous separator pattern (specified by the

SeparatorRowHeight

property). See diagram:

RSS-14 Stacked

: Appropriate TotalHeight value should be set in order to ensure that the sum of each symbol row's height is greater than or equal to 12 modules. In other words, if the contiguous separator pattern isn't displayed, minimum value of the

property is 12 modules plus the height of separator pattern between two rows (specified by the SeparatorRowHeight

property).

Otherwise, it's 12 modules plus the height of separator pattern between two rows (specified by the SeparatorRowHeight property), and plus height of the contiguous separator pattern (specified by the SeparatorRowHeight

property too). See diagram:

RSS-14 Stacked Omnidirectional

: Appropriate TotalHeight value should be set in order to ensure that the sum of each symbol row's is greater than or equal to 66 modules. In other words, if the contiguous separator pattern isn't displayed, minimum value of the property is 66 modules plus 3 times height of separator pattern between two rows (specified by the

SeparatorRowHeight

property). Otherwise, it's 66 modules plus the 3 times height of separator pattern between two rows

(specified by the SeparatorRowHeight

property), and plus height of the contiguous separator pattern (specified by the

SeparatorRowHeight

property too). See diagram:

For the RSS Limited

symbols, appropriate TotalHeight value should be set in order to ensure that the height of symbol row is greater than or equal to 10 modules. In other words, if the contiguous separator pattern isn't displayed, minimum value of the property is 10 modules. Otherwise, it's 10 modules plus height of the contiguous separator pattern (specified by the

SeparatorRowHeight

property). See diagram:

See also the "Symbol size" and "Composite symbol" sections in the " TBarcodeFmx2D_RSS14

" and "

TBarcodeFmx2D_RSSLimited

" articles.

A.1.128 TrailingQuietZone

Specifies the horizontal width of the trailing quiet zone in modules.

Syntax: property

TrailingQuietZone: Integer;

Description:

Specifies the horizontal width of the trailing quiet zone in modules. The quiet zone is drawn using the color specified by the

SpaceColor

property if the

Inversed

property is set to false. Otherwise, it's drawn using the color specified by the BarColor

property.

178

2D Barcode FMX Components User Manual

See diagram (the SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

This property is useful only when the ShowQuietZone

property value is set to true or the barcode symbology is a

TBarcodeFmx2D_Code16K

symbol.

For the TBarcodeFmx2D_Code16K

barcode component, the trailing quiet zone is drawn always, even if the

ShowQuietZone

property

value is set to false. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

A.1.129 UseECIDescriptor

(TBarcodeFmx2D_MicorPDF417)

Specifies whether to use the optional ECI Descriptor in a MicroPDF417

barcode symbol, in order to efficiently encode a single

Transformation ECI sequence at the start of barcode text.

Syntax: property

UseECIDescriptor: Boolean;

Description:

Because MicroPDF417

is intended for applications where symbol size is critical, it is expected that

MicroPDF417

will frequently be

used in conjunction with a Transformation ECI appropriate for the data requirements of the application. MicroPDF417

supports efficient encoding of a single Transformation ECI sequence at the start of each data stream by using an optional ECI Descriptor that can be encoded at the start of the first symbol of each MicroPDF417-encoded data stream. The property specifies whether to use the ECI

Descriptor in a MicroPDF417

symbol.

This Transformation ECI co-exists with the Interpretative ECI (whether default or explicitly encoded) currently in effect, since

Interpretative ECIs and Transformation ECIs have independent scopes.

Please use the escape sequence \e[<ECI_Number>] to place a Transformation ECI at the beginning of the barcode text (at the start of the symbol or at the start of the first symbol of a structured append series). If the property is set to true, the Transformation ECI sequence will be ecncoded as an ECI Descriptor. Otherwist, it will be encoded using the standard ECI encoding method.

See also the "Extended Channel Interpretation (ECI)" section in the "

TBarcodeFmx2D_MicroPDF417

" article.

A.2 TSaveFmx2D

A.2.1 Barcode2D

(TSaveFmx2D)

Links a TBarcodeFmx2D

component to a TSaveFmx2D

component in order to save the barcode symbol to a picture file.

179

2D Barcode FMX Components User Manual

Syntax: property

Barcode2D: TBarcodeFmx2D;

Description:

Use the Barcode2D property to specify a

TBarcodeFmx2D

component such as the

TBarcodeFmx2D_QRCode

, the

TBarcodeFmx2D_PDF417 , and the

TBarcodeFmx2D_RSS14

. Then execute the Save

method will save the barcode symbol specified by the 2D barcode component to a picture file.

The

TBarcodeFmx2D_MaxiCode

component is not supported now.

A.2.2 ColorDepth

(TSaveFmx2D_Bmp)

Specifies the color depth of a Bitmap image (BMP) file for

TSaveFmx2D_Bmp

component.

Syntax: type

{ Defined in the pfmxSave2D_Bmp unit }

TBmpColorDepth = (bcdColors_01b, bcdColors_04b, bcdColors_08b, bcdColors_12b, bcdColors_15b, bcdColors_16b, bcdColors_24b, bcdColors_32b);

property

Format: TBmpColorDepth;

Description:

Color depth, also known as bit depth, pixel format, is either the number of bits used to indicate the color of a single pixel. In a Bitmap image (BMP) file, the pixels can be defined by a varying number of bits. The property specifies which pixel format will be used to save a barcode symbol to a Bitmap image (BMP) file. It can be one of these value (defined in the pfmxSave2D_Bmp unit):

bcdColors_01b

: Uses the 1-bit per pixel (1bpp) format. It supports 2 distinct colors (for example: black and white) and stores 8 pixels per 1 byte. Each pixel is an 1-bit index into a table of up to 2 colors.

bcdColors_02b

: Uses the 2-bit per pixel (2bpp) format. It supports 4 distinct colors and stores 4 pixels per 1 byte. Each pixel value is a 2-bit index into a table of up to 4 colors.

bcdColors_04b

: Uses the 4-bit per pixel (4bpp) format. It supports 16 distinct colors and stores 2 pixels per 1 byte. Each pixel value is a 4-bit index into a table of up to 16 colors.

bcdColors_08b

: Uses the 8-bit per pixel (8bpp) format. It supports 256 distinct colors and stores 1 pixel per 1 byte. Each byte is an index into a table of up to 256 colors.

bcdColors_12b

: Uses the 12-bit per pixel (12bpp) format. It supports 4096 distinct colors and stores 1 pixel per 2 byte. Each pixel value define the red, green and blue samples of the pixel, uses 4 bits for each color primary with 4 bits left over.

bcdColors_15b

: Uses the 15-bit per pixel (15bpp) format. It supports 32768 distinct colors and stores 1 pixel per 2 byte. Each pixel value define the red, green and blue samples of the pixel, uses 5 bits for each color primary with one bit left over.

bcdColors_16b

: Uses the 16-bit per pixel (16bpp) format. It supports 65536 distinct colors and stores 1 pixel per 2 byte. Each pixel value define the red, green and blue samples of the pixel, uses 5 bits for red and blue colors, 6 bits for green color.

bcdColors_24b

: Uses the 24-bit per pixel (24bpp) format. It supports 16777216 distinct colors and stores 1 pixel value per 3 bytes.

Each pixel value defines the red, green and blue samples of the pixel.

bcdColors_32b

: Uses the 32-bit per pixel (32bpp) format. It supports 4294967296 distinct colors and stores 1 pixel per 4 byte.

Each pixel value define the Alpha, Red, Green and Blue samples of the pixel.

180

2D Barcode FMX Components User Manual

A.2.3 ColorDepth

(TSaveFmx2D_Gif)

Specifies the color depth of a Graphics Interchange Format (GIF) file for the

TSaveFmx2D_Gif

component.

Syntax: type

{ Defined in the pfmxSave2D_Gif unit }

TGifColorDepth = (gcdColors_1b, gcdColors_2b, gcdColors_3b, gcdColors_4b, gcdColors_5b, gcdColors_6b, gcdColors_7b, gcdColors_8b);

property

ColorDepth: TGifColorDepth;

Description:

Color depth, also known as bit depth, pixel format, is either the number of bits used to indicate the color of a single pixel. In a Graphics

Interchange Format (GIF) file, the pixels can be defined by a varying number of bits. The property specifies which color depth will be used to save a barcode symbol to a Graphics Interchange Format (GIF) file. It can be one of these value (defined in the pfmxSave2D_Gif unit):

gcdColors_1b

: Uses the 1-bit per pixel (1bpp) format. It supports 2 distinct colors (for example: black and white). Each pixel is an

1-bit index into a table of up to 2 colors.

gcdColors_2b

: Uses the 2-bit per pixel (2bpp) format. It supports 4 distinct colors. Each pixel value is a 2-bit index into a table of up to 4 colors.

gcdColors_3b

: Uses the 3-bit per pixel (3bpp) format. It supports 8 distinct colors. Each pixel value is a 3-bit index into a table of up to 8 colors.

gcdColors_4b

: Uses the 4-bit per pixel (4bpp) format. It supports 16 distinct colors. Each pixel value is a 4-bit index into a table of up to 16 colors.

gcdColors_5b

: Uses the 5-bit per pixel (5bpp) format. It supports 32 distinct colors. Each pixel value is a 5-bit index into a table of up to 32 colors.

gcdColors_6b

: Uses the 6-bit per pixel (6bpp) format. It supports 64 distinct colors. Each pixel value is a 6-bit index into a table of up to 64 colors.

gcdColors_7b

: Uses the 7-bit per pixel (7bpp) format. It supports 128 distinct colors. Each pixel value is a 7-bit index into a table of up to 128 colors.

gcdColors_8b

: Uses the 8-bit per pixel (8bpp) format. It supports 256 distinct colors. Each pixel value is a 8-bit index into a table of up to 256 colors.

A.2.4 ColorDepth

(TSaveFmx2D_Png)

Specifies the color depth of a Portable Network Graphics (PNG) format file for TSaveFmx2D_Png

component.

Syntax: type

{ Defined in the pfmxSave2D_Png unit }

TPngColorDepth = (pcdIndex_1, pcdIndex_2, pcdIndex_4, pcdIndex_8, pcdRGB_8, pcdRGBA_8);

property

ColorType: TPngColorType;

Description:

Color depth, also known as bit depth, pixel format, is either the number of bits used to indicate the color of a single pixel. In a Portable

181

2D Barcode FMX Components User Manual

Network Graphics (PNG) file, the pixels can be defined by a varying number of bits. The property specifies which color depth will be used to save a barcode symbol to a Portable Network Graphics (PNG) file. It can be one of these value (defined in the pfmxSave2D_Png unit):

pcdIndex_1

: Uses the 1-bit per pixel (1bpp) format. It supports 2 distinct colors (for example: black and white) and stores 8 pixels per 1 byte. Each pixel is an 1-bit index into a table of up to 2 colors.

pcdIndex_2

: Uses the 2-bit per pixel (2bpp) format. It supports 4 distinct colors and stores 4 pixels per 1 byte. Each pixel value is a 2-bit index into a table of up to 4 colors.

pcdIndex_4

: Uses the 4-bit per pixel (4bpp) format. It supports 16 distinct colors and stores 2 pixels per 1 byte. Each pixel value is a 4-bit index into a table of up to 16 colors.

pcdIndex_8

: Uses the 8-bit per pixel (8bpp) format. It supports 256 distinct colors and stores 1 pixel per 1 byte. Each byte is an index into a table of up to 256 colors.

pcdRGB_8

: Uses the 24-bit per pixel (24bpp) format. It supports 16777216 distinct colors and stores 1 pixel value per 3 bytes.

Each pixel value defines the red, green and blue samples of the pixel.

pcdRGBA_8

: Uses the 32-bit per pixel (32bpp) format. It supports 4294967296 distinct colors and stores 1 pixel per 4 byte. Each pixel value define the Alpha, Red, Green and Blue samples of the pixel.

A.2.5 CompressionLevel

(TSaveFmx2D_Png)

Specifies the compression level of a Portable Network Graphics (PNG) file for the TSaveFmx2D_Png

component.

Syntax: type

{ Defined in the pfmxSave2D_Png unit }

TPngCompressionLevel = (pclFastest, pclDefault, pclMaximum);

property

CompressionLevel: TPngCompressionLevel;

Description:

The Portable Network Graphics (PNG) uses a non-patented lossless data compression method known as DEFLATE. The property specifies what level of compression should be used to save a barcode symbol to a Portable Network Graphics (PNG) file. It can be one of these value (defined in the pfmxSave2D_Png unit):

pclFastest

: Uses the fastest compression. The compression operation should complete as quickly as possible, even if the resulting file is not optimally compressed.

pclDefault

: Uses the default compression level. It represents a balance between the compression ratio and compression speed.

pclMaximum

: Uses the maximum compression. The compression operation should be optimally compressed, even if the operation takes a longer time to complete.

A.2.6 DeviceHeightInMM

(TSaveFmx2D_Emf)

Specifies the vertical height of the reference device for an Enhanced Metafile Format (EMF) file was generated by the

TSaveFmx2D_Emf component, in millimetres.

Syntax:

182

2D Barcode FMX Components User Manual property

DeviceHeightInMM: DWord;

Description:

The property specifies the vertical height of the reference device, in millimetres, when use the TSaveFmx2D_Emf

component to save a barcode symbol to an Enhanced Metafile Format (EMF) file.

Note, the property cannot be set to zero, if you set it to zero, an ESave2DError exception occurs.

A.2.7 DeviceHeightInPixel

(TSaveFmx2D_Emf)

Specifies the vertical height of the reference device for an Enhanced Metafile Format (EMF) file was generated by the

TSaveFmx2D_Emf component, in pixels.

Syntax: property

DeviceHeightInPixel: DWord;

Description:

The property specifies the vertical height of the reference device, in pixels, when use the TSaveFmx2D_Emf

component to save a barcode symbol to an Enhanced Metafile Format (EMF) file.

Note, the property cannot be set to zero, if you set it to zero, an ESave2DError exception occurs.

A.2.8 DeviceHeightInUM

(TSaveFmx2D_Emf)

Specifies the vertical height of the reference device for an Enhanced Metafile Format (EMF) file was generated by the

TSaveFmx2D_Emf component, in micrometres.

Syntax: property

DeviceHeightInUM: DWord;

Description:

The property specifies the vertical height of the reference device, in micrometres, when use the TSaveFmx2D_Emf

component to save a barcode symbol to an Enhanced Metafile Format (EMF) file.

T h e DeviceHeightInUM

and the DeviceWidthInUm

properties add the ability to measure device surfaces in micrometers, which enhances the resolution and scalability of Enhanced Metafile Format (EMF) files. If one of them is set to zero, they will be ignored.

A.2.9 DeviceWidthInMM

(TSaveFmx2D_Emf)

Specifies the horizontal width of the reference device for an Enhanced Metafile Format (EMF) file was generated by the

TSaveFmx2D_Emf component, in millimetres.

183

2D Barcode FMX Components User Manual

Syntax: property

DeviceWidthInMM: DWord;

Description:

The property specifies the horizontal width of the reference device, in millimetres, when use the TSaveFmx2D_Emf

component to save a barcode symbol to an Enhanced Metafile Format (EMF) file.

Note, the property cannot be set to zero, if you set it to zero, an ESave2DError exception occurs.

A.2.10 DeviceWidthInPixel

(TSaveFmx2D_Emf)

Specifies the horizontal width of the reference device for an Enhanced Metafile Format (EMF) file was generated by the

TSaveFmx2D_Emf component, in pixels.

Syntax: property

DeviceWidthInPixel: DWord;

Description:

The property specifies the horizontal width of the reference device, in pixels, when use the TSaveFmx2D_Emf

component to save a barcode symbol to an Enhanced Metafile Format (EMF) file.

Note, the property cannot be set to zero, if you set it to zero, an ESave2DError exception occurs.

A.2.11 DeviceWidthInUM

(TSaveFmx2D_Emf)

Specifies the horizontal width of the reference device for an Enhanced Metafile Format (EMF) file was generated by the

TSaveFmx2D_Emf component, in micrometres.

Syntax: property

DeviceWidthInUM: DWord;

Description:

The property specifies the horizontal width of the reference device, in micrometres, when use the TSaveFmx2D_Emf

component to save a barcode symbol to an Enhanced Metafile Format (EMF) file.

T h e DeviceWidthInUm

and the DeviceHeightInUm

properties add the ability to measure device surfaces in micrometers, which enhances the resolution and scalability of Enhanced Metafile Format (EMF) files. If one of them is set to zero, they will be ignored.

A.2.12 EmbedBarcodeText

(TSaveFmx2D_Emf, TSaveFmx2D_Eps, TSaveFmx2D_Gif, etc.)

Specifies whether to embed the barcode text to a picture file.

184

2D Barcode FMX Components User Manual

Syntax: property

EmbedBarcodeText: Boolean;

Description:

The property specifies whether to embed the barcode text to a picture file. Only the Portable Network Graphics (PNG), Graphics

Interchange Format (GIF) version 89a, Scalable Vector Graphics (SVG), Encapsulated PostScript (EPS), and Enhanced Metafile

(EMF) formats support to embed the barcode text.

Note, the Graphics Interchange Format (GIF) version 87a doesn't support to embed the other data into the picture file, so for the

TSaveFmx2D_Gif

component, if the

Version property is set to

gv87a , the value of this property will be ignored.

Note, only the encoded barcode text will be embed to the picture file.

A.2.13 EmbedBarcodeText

(TSaveFmx2D_Png)

Specifies whether to embed the barcode text to a Portable Network Graphics (PNG) picture file for TSaveFmx2D_Png

component.

Syntax: type

{ Defined in the pfmxSave2D_Png unit }

TPngEmbedBarcodeText = (pebNone, pebText, pebCompressedText);

property

EmbedBarcodeText: TPngEmbedBarcodeText;

Description:

The property specifies whether to embed the barcode text to a Portable Network Graphics (PNG) picture file.

This property can be one of these values (defined in the pfmxSave2D_Png unit):

pebNone

: Don't embed the barcode text to the picture file.

pebText

: Embed the barcode text to the picture file directly.

pebCompressedText

: Compress the barcode text then embed it to the picture file.

Note, only the encoded barcode text will be embed to the picture file.

A.2.14 Interlaced

(TSaveFmx2D_Png, TSaveFmx2D_Gif)

Specifies whether to generate the interlaced picture file when use the

TSaveFmx2D_Gif

or TSaveFmx2D_Png

component to save a barcode symbol.

Syntax: property

Interlaced: Boolean;

Description:

The Graphics Interchange Format (GIF) and Portable Network Graphics (PNG) allow the images is interlaced; i.e., that the order of the raster lines in its data block is not sequential. This allows a partial display of the image that can be recognized before the full image is painted. The property specifies whether to generate the interlaced images file.

185

2D Barcode FMX Components User Manual

A.2.15 LogicUnitsPerInch

(TSaveFmx2D_Wmf)

Specifies the number of logical units per inch when use the TSaveFmx2D_Wmf

component to save a barcode symbol in placeable

Windows Metafile Format (WMF).

Syntax: property

LogicUnitsPerInch: Word;

Description:

Specifies the number of logical units per inch for a placeable Windows Metafile Format (WMF) file, in order to represent the image.

This value can be used to scale a placeable image.

By convention, an image is considered to be recorded at 1440 logical units (twips) per inch. Thus, a value of 720 specifies that the image SHOULD be rendered at twice its normal size, and a value of 2880 specifies that the image SHOULD be rendered at half its normal size.

Note, this property must be set if this Placeable property is set to true. If this Placeable

property is set to false, the value of this property will be ignored.

A.2.16 Placeable

(TSaveFmx2D_Wmf)

Specifies whether to generate a placeable Windows Metafile Format (WMF) file when use the TSaveFmx2D_Wmf

component to save a barcode symbol.

Syntax: property

Placeable: Boolean;

Description:

Original Windows Metafile Format (WMF) were device-specific; that is, the graphical images they contained would only be rendered correctly if played back on the output device for which they were recorded. To overcome this limitation, "placeable" Windows Metafile

Format (WMF) were developed. The property specifies whether to generate a placeable Windows Metafile Format (WMF) file.

Note, the property LogicUnitsPerInch

must be set if this property is set to true. If this property is set to false, the value of

LogicUnitsPerInch

property will be ignored.

A.4.17 Quality

(TSaveFmx2D_Jpg)

Indicates the trade-off ratio between the image quality and the file size when use the TSaveFmx2D_Jpg

component to save a barcode symbol.

Syntax:

186

2D Barcode FMX Components User Manual type

{ Defined in the pfmxSave2DJpg unit }

TJPEGQuality = 0..100;

property

Quality: TJPEGQuality

default

100;

Description:

Use the Quality property to set the compression quality of the JPEG image when saving barcode symbol to a jpeg image. Higher compression results in a poorer picture quality, but a smaller file size. The higher the property value (up to a maximum of 100), the better the image quality, but the larger the file size. The lower the property value (to a minimum of 1), the smaller the resulting file size, but at the expense of picture quality.

A.2.18 Version

(TSaveFmx2D_Gif)

Specifies the version of a Graphics Interchange Format (GIF) file for the TSaveFmx2D_Gif

component.

Syntax: type

{ Defined in the pfmxSave2D_Gif unit }

TGifVersion = (gv87a, gv89a);

property

Version: TGifVersion;

Description:

There are two versions of the Graphics Interchange Format (GIF): versions 87a and 89a. The property specifies which version will be used to save a barcode symbol to a Graphics Interchange Format (GIF) file. It can be one of these values (defined in the pfmxSave2D_Gif unit):

gv87a

: Uses the version 87a, the original version of the Graphics Interchange Format (GIF). It doesn't support to embed the other

data into the picture file, so the value of EmbedBarcodeText

property will be ignored if you use the version.

gv89a

: Uses the version 89a, the enhanced version of the Graphics Interchange Format (GIF). If you use the version, you can set

the EmbedBarcodeText

property to true to embed the encoded barcode text into the Graphics Interchange Format (GIF) picture file.

A.2.19 XPPM

(TSaveFmx2D_Bmp)

Specifies the horizontal resolution of a Bitmap image (BMP) file for a

TSaveFmx2D_Bmp

component, in pixels per meter.

Syntax: property

XPPM: Integer;

Description:

The property specifies the horizontal resolution of the bitmap in pixels per meter. The value is used to help a bitmap image (BMP) file reader choose a proper horizontal resolution when printing or displaying the Bitmap image (BMP) file.

187

2D Barcode FMX Components User Manual

A.2.20 YPPM

(TSaveFmx2D_Bmp)

Specifies the vertical resolution of a Bitmap image (BMP) file for a TSaveFmx2D_Bmp

component, in pixels per meter.

Syntax: property

YPPM: Integer;

Description:

The property specifies the vertical resolution of the bitmap in pixels per meter. The value is used to help a bitmap image (BMP) file reader choose a proper vertical resolution when printing or displaying the Bitmap image (BMP) file.

188

2D Barcode FMX Components User Manual

A.3 TCopyFmx2D

A.3.1 Barcode2D

(TCopyFmx2D)

Links a TBarcodeFmx2D

component to a TCopyFmx2D

component in order to copy the barcode symbol to the system clipboard.

Syntax: property

Barcode2D: TBarcodeFmx2D;

Description:

Use the Barcode2D property to specify a

TBarcodeFmx2D

component such as the

TBarcodeFmx2D_QRCode

, the

TBarcodeFmx2D_PDF417

, and the TBarcodeFmx2D_RSS14

. Then execute the Copy

method will copy the barcode symbol specified by the 2D barcode component to the system clipboard.

The

TBarcodeFmx2D_MaxiCode

component is not supported now.

Annex B. Methods

B.1 TBarcodeFmx2D

B.1.1 Assign

Copies a barcode component from another barcode component.

Syntax: procedure

Assign(Source: TPresistent);

override

;

Description:

If the Source parameter is an object created from a subclass of

TBarcodeFmx2D

component class, and the class is same to current barcode component class, Assign copies all property values and event handles except the

Locked

and the Image

properties from the source barcode component to current one. If Source is any other type of object, an EBarcodeFmx2DError exception occurs.

Parameters:

Source

: TPersistent; Specifies the source object.

B.1.2 Clear

189

2D Barcode FMX Components User Manual

Erases current barcode symbol in the TImage control that's specified by the

Image

property.

Syntax: function

Clear(UseSpaceColor: Boolean = false): Boolean;

virtual

;

Description:

The method erases the barcode symbol without erasing the background around it from the TImage control that's specified by the

Image

property.

If the quiet zones are displayed (the ShowQuietZone

property is set to true), they are included in the barcode symbol and will be

erased too. For the TBarcodeFmx2D_Code16K

barcode components, the leading quiet zone

and trailing quiet zone

are included

always, even if the ShowQuietZone

property is set to false.

Parameters:

UseSpaceColor

: Boolean; Specifies whether the space color that's specified by the SpaceColor property is used to erase the

barcode symbol. If it's set to false, the current brush color of the TImage control will be used. If the parameter isn't provided, it's default to false.

Return:

If the method succeeds, the return value is true.

If you use the Barcode property to specify the barcode text, when the length of Barcode

property value is invalid, or there is any

invalid character in the Barcode

property value, the return value is false. Corresponding to the OnInvalidLength

event or the

OnInvalidChar event will occur.

If you use the Data

property to specify the barcode text, when the length of

Data

property value is invalid, or there is any invalid

byte value in the Data

property value, the return value is false. Corresponding to the OnInvalidDataLength

event or the

OnInvalidDataChar

event will occur.

B.1.3 Create

Creates and initializes a barcode component.

Syntax: constructor

Create(Owner: TComponent);

override

;

Description:

Call the Create method to instantiate a barcode object at runtime. Barcode components added at design time are created automatically.

Parameters:

Owner

: TComponent; It is the component that is responsible for freeing the barcode component instance. Typically, this is the form. It becomes the value of the Owner property.

B.1.4 Destroy

Disposes of the instance of the barcode object.

190

2D Barcode FMX Components User Manual

Syntax: destructor

Destroy;

override

;

Description:

Destroy is the destructor for a barcode object.

Do not call the destructor directly in an application. Instead, call Free . The Free verifies that the barcode object is not nil before it calls

Destroy .

B.1.5 Draw

Redraws current barcode symbol in the TImage control that's specified by the

Image

property.

Syntax: function

Draw(ReEncode: Boolean = False): Boolean;

virtual

;

Description:

The method redraws the barcode symbol to the TImage control that's specified by the

Image

property. The barcode symbol is specified in the properties of this barcode component.

Parameter:

ReEncode

: Boolean; Normally, the barcode text will not be encoded again when call the method, the previous encoded data will be used to draw the barcode symbol. If the parameter is set to true, the barcode text will be encoded again before draw the barcode symbol. It defaults to false if the parameter is not provided.

If you changed the OnEncode

event handle, please call the method and set the parameter to true (please call the

Clear

method firstly).

Return:

If the method succeeds, the return value is true.

If you use the Barcode property to specify the barcode text, when the length of Barcode

property value is invalid, or there is any

invalid character in the Barcode

property value, the return value is false. Corresponding to the OnInvalidLength

event or the

OnInvalidChar event will occur.

If you use the Data

property to specify the barcode text, when the length of

Data

property value is invalid, or there is any invalid

byte value in the Data

property value, the return value is false. Corresponding to the OnInvalidDataLength

event or the

OnInvalidDataChar

event will occur.

B.1.6 DrawTo

Draws a barcode symbol on the specified canvas. There are several different overloading methods, Syntax 1

, Syntax 2

, and Syntax 3

:

Syntax 1

: Draws the barcode symbol that is specified by the properties of this barcode component.

Syntax 2

: Draws the barcode symbol that is specified by the parameters of this method. The barcode text is specified in the

Barcode parameter. It is of type string.

The Barcode parameter is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence

(the BOM isn't included), then be encoded into the barcode symbol. If you want to use other encoding scheme (for example the

191

2D Barcode FMX Components User Manual

ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the DrawTo (Syntax 3)

overloading method and specify the

converted bytes sequence in its Data parameter. If you want to encode a block of binary (bytes) data, please use the DrawTo

(Syntax 3) overloading method.

Syntax 3

: Draws the barcode symbol that is specified by the parameters of this method. The barcode data is specified in the Data parameter. It is of type TBytes (it is in fact a byte array).

You can use the method if you want to encode a block of binary (bytes) data into a barcode symbol.

B.1.6.1 DrawTo - Syntax 1

Draws a barcode symbol on the specified canvas. The barcode symbol is specified by the properties of this barcode component.

Syntax: function

DrawTo(Canvas: TCanvas; Left, Top: Single; Module = 0; Angle: Single = -1; Opacity: Single =

-1; HDPI: Integer = 0; VDPI: Integer = 0): Integer;

overload

;

virtual

;

Description:

On the specified canvas, draws current barcode symbol that is specified by the properties of this barcode component.

Parameters:

Canvas

: TCanvas; Specifies target canvas to draw the barcode symbol on it.

Left

: Single; Specifies the margin between the rotated barcode symbol and the left side of the canvas in dots or pixels in the

horizontal direction (using the horizontal resolution). If the quiet zones are drawn (please read the ShowQuietZone

property about

whether or not the quiet zones will be drawn), they are included in the barcode symbol. See diagram (the SpaceColor property is

set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

192

See also the "

LeftMargin

" property.

2D Barcode FMX Components User Manual

Top

: Single; Specifies the margin between the rotated barcode symbol and the top side of the canvas in dots or pixels in the

vertical direction (using the vertical resolution). If the quiet zones are displayed (please read the ShowQuietZone

property about

whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

See also the "

TopMargin

" property.

Module

: Single; Specifies the module size in dots or pixels (using the horizontal resolution). It defaults to 0 if the Module parameter is not provided, and the value of

Module

property will be used.

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are displayed, please read the

ShowQuietZone

property about whether or not the quiet zones will be displayed) anticlockwise. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

193

2D Barcode FMX Components User Manual

The parameter defaults to -1 if the Angle parameter is not provided, and the barcode symbol will be rotated based on the value of the

Orientation

property: boLeftRight: 0 degrees boRightLeft: 180 degrees boTopBottom: 270 degrees boBottomTop: 90 degrees

If you want to use the -1 degrees, the 359 degrees can be used instead.

Opacity:

Single, Specifies the transparency-level of entire barcode symbol, where 1 is not transparant at all, 0.5 is 50% seethrough, and 0 is completely transparent.

The parameter defaults to -1 if it is not provided, and the value of Opacity

property will be used.

Note, if the Inversed

property is set to false, you can use the alpha channel of the

SpaceColor

property value to specify the

transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the BarColor

property value to specify the transparency-level of foreground color (bars or dark modules). If the Inversed

property is set to true, you can use the alpha channel of the

BarColor

property value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the

SpaceColor

property value to specify the transparency-level of foreground color (bars or dark modules).

HDPI:

Integer, Specifies the horizontal resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

HDPI is not provided, and the physical horizontal resolution obtained from the Canvas parameter will be used.

VDPI:

Integer, Specifies the vertical resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

VDPI is not provided, and the physical vertical resolution obtained from the Canvas parameter will be used.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the Barcode

property to specify the barcode text, and use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the Barcode

property to specify the barcode text, and use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_InvalidLength (-2):

If you use the Barcode

property to specify the barcode text, it indicates that the length of

Barcode

property value is invalid, also the

OnInvalidLength

event will occur.

If you use the Data property to specify the barcode text, it indicates that the length of Data

property value is invalid, also the

OnInvalidDataLength

event will occur.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

If you use the Barcode

property to specify the barcode text, it indicates that an invalid character is in the barcode text, also the

OnInvalidChar event will occur. The return value is the position index of the invalid charactere. For 32-bit Windows, 64-bit

Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and Android platform, the index 0 denotes that the first character is invalid character.

194

2D Barcode FMX Components User Manual

If you use the Data

property to specify the barcode data, it indicates that an invalid byte value is in the barcode data, also the

OnInvalidDataChar

event will occur. The return value is the position index of the invalid byte value. The index 0 denotes that the first byte value is invalid byte value.

B.1.6.2 DrawTo - Syntax 2

Draws a barcode symbol on the specified canvas. The barcode symbol is specified by the parameters of this method.

Syntax: function

DrawTo(Canvas: TCanvas; Barcode: string; BarColor, SpaceColor: TAlphaColor; ShowQuietZone:

Boolean; Left, Top, Module: Single; Angle: Single = 0; Opacity: Single = 1; HDPI: Integer = 0;

VDPI: Integer = 0): Integer;

overload

;

virtual

;

Description:

On the specified canvas, draws a barcode symbol that is specified by the parameters of this method.

Parameters:

Canvas

: TCanvas; Specifies target canvas to draw the barcode symbol on it.

Barcode

: String; Specifies the barcode text. It is of type string, and it is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the BOM isn't included), then be encoded into the barcode symbol. If you want to use

other encoding scheme (for example the ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the DrawTo

(Syntax 3) overloading method and specify the converted bytes sequence in its Data parameter. If you want to encode a block of binary (bytes) data, please use the DrawTo (Syntax 3)

overloading method.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

BarColor

: TAlphaColor; In general, the Inversed

property is set to false. In this case, the parameters specifies the color for all bars

(Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

If the Inversed

property is set to true, it specifies the color for all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in the barcode symbol. Also, if the ShowQuietZone parameter value is

set to true, the leading quiet zone

, trailing quiet zone

, top quiet zone

, and bottom quiet zone

are drawn using the color.

The alpha channel of the BarColor parameter is supported.

See also the "

BarColor

" property.

SpaceColor

: TAlphaColor; In general, the Inversed

property is set to false. In this case, the parameters specifies the color for all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in

the barcode symbol. Also, if the ShowQuietZone

parameter value is set to true, the leading quiet zone

,

trailing quiet zone

, top quiet zone , and bottom quiet zone are drawn using the color.

If the Inversed

property is set to true, it specifies the color for all bars (Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

The alpha channel of the SpaceColor parameter is supported.

See also the "

SpaceColor

" property.

ShowQuietZone

: Boolean; Specifies whether to draw the leading quiet zone

, trailing quiet zone

, top quiet zone

, and bottom quiet zone . If the parameter value is set to true, these quiet zones are drawn. Otherwise, they don't be drawn. You can use the

LeadingQuietZone

, TrailingQuietZone

, TopQuietZone

, and

BottomQuietZone properties to specify the size of these quiet zones in

195

2D Barcode FMX Components User Manual

modules. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and trailing quiet zone

will be drawn always, even if t h e ShowQuietZone parameter value is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

In general, the Inversed

property is set to false. In this case, these quiet zones are drawn using the color specified by SpaceColor

parameter. If the Inversed

property is set to true, these quiet zones are drawn using the color specified by BarColor parameter.

See also the "

ShowQuietZone

" property.

Left

: Single; Specifies the margin between the rotated barcode symbol and the left side of the canvas in dots or pixels in the horizontal direction (using the horizontal resolution). If the quiet zones are drawn (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be drawn), they are included in the barcode symbol. See diagram (the

SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and

trailing quiet zone

are included always, even if the

ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

196

See also the "

LeftMargin

" property.

Top

: Single; Specifies the margin between the rotated barcode symbol and the top side of the canvas in dots ot pixels in the vertical direction (using the vertical resolution). If the quiet zones are drawn (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be drawn), they are included in the barcode symbol. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and

trailing quiet zone

are included always, even if the

ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

See also the "

TopMargin

" property.

Module

: Single; Specifies the module size in dots or pixels (using the horizontal resolution).

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are drawn, please read the

ShowQuietZone parameter section above about whether or not the quiet zones will be drawn) anticlockwise. It defaults to 0 if the parameter is not provided, meaning left to right horizontal direction. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

Opacity:

Single, Specifies the transparency-level of entire barcode symbol, where 1 is not transparant at all, 0.5 is 50% seethrough, and 0 is completely transparent.

The parameter defaults to 1 if it is not provided, meaning not transparant at all.

197

2D Barcode FMX Components User Manual

Note, if the Inversed

property is set to false, you can use the alpha channel of the SpaceColor parameter value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the BarColor

parameter value to specify the transparency-level of foreground color (bars or dark modules). If the Inversed

property is set to true, you can use the alpha channel of the BarColor parameter value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the SpaceColor parameter value to specify the transparency-level of fore-ground color (bars or dark modules).

HDPI:

Integer, Specifies the horizontal resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

HDPI is not provided, and the physical horizontal resolution obtained from the Canvas parameter will be used.

VDPI:

Integer, Specifies the vertical resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

VDPI is not provided, and the physical vertical resolution obtained from the Canvas parameter will be used.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the OnEncode event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the OnEncode event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_InvalidLength (-2):

It indicates that the length of Barcode parameter value is invalid.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid character is in the barcode text, the return value is the position index of the invalid charactere. For 32-bit

Windows, 64-bit Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and

Android platform, the index 0 denotes that the first character is invalid character.

B.1.6.3 DrawTo - Syntax 3

Draws a barcode symbol on the specified canvas. The barcode symbol is specified by the parameters of this method.

Syntax: function

DrawTo(Canvas: TCanvas; Data: TBytes; BarColor, SpaceColor: TAlphaColor; ShowQuietZone:

Boolean; Left, Top, Module: Single; Angle: Single = 0; Opacity: Single = 1; HDPI: Integer = 0;

VDPI: Integer = 0): Integer;

overload

;

virtual

;

Description:

On the specified canvas, draws a barcode symbol that is specified by the parameters of this method.

Parameters:

Canvas

: TCanvas; Specifies target canvas to draw the barcode symbol on it.

Data

: TBytes; Specifies the barcode text. It is of type TBytes (it is in fact a byte array).

198

2D Barcode FMX Components User Manual

You can specify a block of binary (bytes) data to the parameter, in order to encode it into a barcode symbol.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

BarColor

: TAlphaColor; In general, the Inversed

property is set to false. In this case, the parameters specifies the color for all bars

(Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

If the Inversed

property is set to true, it specifies the color for all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in the barcode symbol. Also, if the ShowQuietZone parameter value is

set to true, the leading quiet zone

, trailing quiet zone

, top quiet zone

, and bottom quiet zone

are drawn using the color.

The alpha channel of the BarColor parameter is supported.

See also the "

BarColor

" property.

SpaceColor

: TAlphaColor; In general, the Inversed

property is set to false. In this case, the parameters specifies the color for all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in

the barcode symbol. Also, if the ShowQuietZone

parameter value is set to true, the leading quiet zone

,

trailing quiet zone

, top quiet zone , and bottom quiet zone are drawn using the color.

If the Inversed

property is set to true, it specifies the color for all bars (Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

The alpha channel of the SpaceColor parameter is supported.

See also the "

SpaceColor

" property.

ShowQuietZone

: Boolean; Specifies whether to draw the leading quiet zone

, trailing quiet zone

, top quiet zone

, and bottom quiet zone . If the parameter value is set to true, these quiet zones are drawn. Otherwise, they don't be drawn. You can use the

LeadingQuietZone

, TrailingQuietZone

, TopQuietZone

, and

BottomQuietZone properties to specify the size of these quiet zones in

modules. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and trailing quiet zone

will be drawn always, even if t h e ShowQuietZone parameter value is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

In general, the Inversed

property is set to false. In this case, these quiet zones are drawn using the color specified by SpaceColor

parameter. If the Inversed

property is set to true, these quiet zones are drawn using the color specified by BarColor parameter.

See also the "

ShowQuietZone

" property.

Left

: Single; Specifies the margin between the rotated barcode symbol and the left side of the canvas in dots or pixels in the horizontal direction (using the horizontal resolution). If the quiet zones are drawn (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be drawn), they are included in the barcode symbol. See diagram (the

SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

199

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and

trailing quiet zone

are included always, even if the

ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

See also the "

LeftMargin

" property.

Top

: Single; Specifies the margin between the rotated barcode symbol and the top side of the canvas in dots ot pixels in the vertical direction (using the vertical resolution). If the quiet zones are drawn (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be drawn), they are included in the barcode symbol. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and

trailing quiet zone

are included always, even if the

ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

200

See also the "

TopMargin

" property.

Module

: Single; Specifies the module size in dots or pixels (using the horizontal resolution).

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

2D Barcode FMX Components User Manual

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are drawn, please read the

ShowQuietZone parameter section above about whether or not the quiet zones will be drawn) anticlockwise. It defaults to 0 if the parameter is not provided, meaning left to right horizontal direction. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

Opacity:

Single, Specifies the transparency-level of entire barcode symbol, where 1 is not transparant at all, 0.5 is 50% seethrough, and 0 is completely transparent.

The parameter defaults to 1 if it is not provided, meaning not transparant at all.

Note, if the Inversed

property is set to false, you can use the alpha channel of the SpaceColor parameter value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the BarColor

parameter value to specify the transparency-level of foreground color (bars or dark modules). If the Inversed

property is set to true, you can use the alpha channel of the BarColor parameter value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the SpaceColor parameter value to specify the transparency-level of fore-ground color (bars or dark modules).

HDPI:

Integer, Specifies the horizontal resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

HDPI is not provided, and the physical horizontal resolution obtained from the Canvas parameter will be used.

VDPI:

Integer, Specifies the vertical resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

VDPI is not provided, and the physical vertical resolution obtained from the Canvas parameter will be used.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidLength (-2):

It indicates that the length of Data parameter value is invalid.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

201

2D Barcode FMX Components User Manual

It indicates that an invalid byte value is in the Data parameter, the return value is the position index of the invalid byte value. The index 0 denotes that the first byte value is invalid.

B.1.7 DrawToSize

Returns the horizontal width and vertical height of a rotated barcode symbol in dots or pixels. There are several different overloading

methods, Syntax 1

, Syntax 2

, and Syntax 3

:

Syntax 1

: Returns the horizontal width and vertical height of the rotated barcode symbol that is specified by the properties of this barcode component.

Syntax 2

: Returns the horizontal width and vertical height of the rotated barcode symbol that is specified by the parameters of this method. The barcode text is specified in the Barcode parameter. It is of type string.

The Barcode parameter is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence

(the BOM isn't included), then be encoded into the barcode symbol. If you want to use other encoding scheme (for example the

ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the DrawTo (Syntax 3)

overloading method and specify the

converted bytes sequence in its Data parameter. If you want to encode a block of binary (bytes) data, please use the DrawTo

(Syntax 3) overloading method.

Syntax 3

: Returns the horizontal width and vertical height of the rotated barcode symbol that is specified by the parameters of this method. The barcode text is specified in the Data parameter. It is of type TBytes (it is in fact a byte array).

You can use the method if you want to encode a block of binary (bytes) data into a barcode symbol.

B.1.7.1 DrawToSize - Syntax 1

Returns the horizontal width and vertical height of a rotated barcode symbol in dots or pixels. The barcode symbol is specified by the properties of this barcode component.

Syntax: function

DrawToSize(

var

Width, Height, SymbolWidth, SymbolHeight: Single; Module: Single = 0; Angle:

Single = -1; Canvas: TCanvas = nil; HDPI: Integer = 0; VDPI: Integer = 0): Integer;

overload

;

virtual

;

Description:

The method returns the horizontal width and vertical height of a rotated barcode symbol that is specified by properties of this barcode component, in dots or pixels.

Parameters:

Width

: Single; Returns the horizontal width of the rotated barcode symbol in dots or pixels in the horizontal direction (using the horizontal resolution).

If the quiet zones are displayed (please read the ShowQuietZone

property about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

202

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

Height

: Single; Returns the vertical height of the rotated barcode symbol in dots or pixels in the vertical direction (using the vertical resolution).

If the quiet zones are displayed (please read the ShowQuietZone

property about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

SymbolWidth

: Single; Returns the distance between the leading and trailing of the rotated barcode symbol in dots or pixels

(using the horizontal resolution).

If the quiet zones are displayed (please read the ShowQuietZone

property about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

203

2D Barcode FMX Components User Manual

even if the ShowQuietZone

property is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

See also the "

BarcodeWidth

" property.

SymbolHeight

: Single; Returns the distance between the top and bottom of the rotated barcode symbol in dots or pixels (using the vertical resolution).

If the quiet zones are displayed (please read the ShowQuietZone

property about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

See also the "

BarcodeHeight

" property.

Module

: Single; Specifies the module size in dots or pixels (using the horizontal resolution). It defaults to 0 if the Module parameter is not provided, and the value of

Module

property will be used.

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

204

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are displayed, please read the

ShowQuietZone property about whether or not the quiet zones will be displayed) anticlockwise. See diagram (the quiet zones

are drawn in claSilver color in order to accentuate them):

2D Barcode FMX Components User Manual

The parameter defaults to -1 if the Angle parameter is not provided, and the barcode symbol will be rotated based on the value of the

Orientation

property: boLeftRight: 0 degrees boRightLeft: 180 degrees boTopBottom: 270 degrees boBottomTop: 90 degrees

If you want to use the -1 degrees, the 359 degrees can be used instead.

Canvas

: TCanvas; Specifies target canvas to drawn the barcode symbol on it. The parameter is useful for obtaining the physical resolution if one of HDPI and VDPI parameters is set to 0. If both HDPI and VDPI parameters are set to 0, or both HDPI and VDPI parameters are not set to 0, the parameter will be ignored, in this case, you can set it to nil .

HDPI:

Integer, Specifies the horizontal resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

HDPI is not provided, and the physical horizontal resolution obtained from the Canvas parameter will be used. If both HDPI and

VDPI are set to 0, it indicates the horizontal resolution is equal to the vertical resolution.

VDPI:

Integer, Specifies the vertical resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

VDPI is not provided, and the physical vertical resolution obtained from the Canvas parameter will be used. If both VDPI and HDPI are set to 0, it indicates the vertical resolution is equal to the horizontal resolution.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the Barcode

property to specify the barcode text, and use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the Barcode

property to specify the barcode text, and use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_InvalidLength (-2):

If you use the Barcode

property to specify the barcode text, it indicates that the length of

Barcode

property value is invalid, also the

OnInvalidLength

event will occur.

If you use the Data property to specify the barcode text, it indicates that the length of Data

property value is invalid, also the

OnInvalidDataLength

event will occur.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

If you use the Barcode

property to specify the barcode text, it indicates that an invalid character is in the barcode text, also the

OnInvalidChar event will occur. The return value is the position index of the invalid charactere. For 32-bit Windows, 64-bit

Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and Android platform, the index 0 denotes that the first character is invalid character.

205

2D Barcode FMX Components User Manual

If you use the Data

property to specify the barcode data, it indicates that an invalid byte value is in the barcode data, also the

OnInvalidDataChar

event will occur. The return value is the position index of the invalid byte value. The index 0 denotes that the first byte value is invalid byte value.

B.1.7.2 DrawToSize - Syntax 2

Returns the horizontal width and vertical height of a rotated barcode symbol in dots or pixels. The barcode symbol is specified by the parameters of this method.

Syntax: function

DrawToSize(

var

Width, Height, SymbolWidth, SymbolHeight: Single; Barcode: string;

ShowQuietZone: Boolean; Module: Single; Angle: Single = 0; Canvas: TCanvas = nil; HDPI: Integer =

0; VDPI: Integer = 0): Integer;

overload

;

virtual

;

Description:

The method returns the horizontal width and vertical height of a rotated barcode symbol that is specified by parameters of this method, in dots or pixels.

Parameters:

Width

: Single; Returns the horizontal width of the rotated barcode symbol in dots or pixels in the horizontal direction (using the horizontal resolution).

If the quiet zones are displayed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

206

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

Height

: Single; Returns the vertical height of the rotated barcode symbol in dots or pixels in the vertical direction (using the vertical resolution).

If the quiet zones are displayed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

SymbolWidth

: Single; Returns the distance between the leading and trailing of the rotated barcode symbol in dots or pixels

(using the horizontal resolution).

If the quiet zones are displayed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

See also the "

BarcodeWidth

" property.

SymbolHeight

: Single; Returns the distance between the top and bottom of the rotated barcode symbol in dots or pixels (using the vertical resolution).

If the quiet zones are displayed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

207

2D Barcode FMX Components User Manual

See also the "

BarcodeHeight

" property.

Barcode

: String; Specifies the barcode text. It is of type string, and it is in it fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the BOM isn't included), then be encoded into the barcode symbol. If you want to

use other encoding scheme (for example the ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the

DrawToSize (Syntax 3)

overloading method and specify the converted bytes sequence in its Data parameter. If you want to encode

a block of binary (bytes) data, please use the DrawToSize (Syntax 3)

overloading method.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

ShowQuietZone

: Boolean; Specifies whether to include the leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and bottom quiet zone in the barcode symbol. If the parameter value is set to true, these quiet zones are included. Otherwise, they don't be

included. You can use the

LeadingQuietZone

, TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties to specify the size of these quiet zones in modules. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and trailing quiet zone

will be included always, even if t h e ShowQuietZone parameter value is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

See also the "

ShowQuietZone

" property.

Module

: Single; Specifies the module size in dots or pixels (using the horizontal resolution).

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

208

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

2D Barcode FMX Components User Manual

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are drawn, please read the

ShowQuietZone parameter section above about whether or not the quiet zones will be drawn) anticlockwise. It defaults to 0 if the parameter is not provided, meaning left to right horizontal direction. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

Canvas

: TCanvas; Specifies target canvas to drawn the barcode symbol on it. The parameter is useful for obtaining the physical resolution if one of HDPI and VDPI parameters is set to 0. If both HDPI and VDPI parameters are set to 0, or both HDPI and VDPI parameters are not set to 0, the parameter will be ignored, in this case, you can set it to nil .

HDPI:

Integer, Specifies the horizontal resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

HDPI is not provided, and the physical horizontal resolution obtained from the Canvas parameter will be used. If both HDPI and

VDPI are set to 0, it indicates the horizontal resolution is equal to the vertical resolution.

VDPI:

Integer, Specifies the vertical resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

VDPI is not provided, and the physical vertical resolution obtained from the Canvas parameter will be used. If both VDPI and HDPI are set to 0, it indicates the vertical resolution is equal to the horizontal resolution.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the OnEncode event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_InvalidLength (-2):

It indicates that the length of Barcode parameter value is invalid.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid character is in the barcode text, the return value is the position index of the invalid charactere. For 32-bit

Windows, 64-bit Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and

Android platform, the index 0 denotes that the first character is invalid character.

209

2D Barcode FMX Components User Manual

B.1.7.3 DrawToSize - Syntax 3

Returns the horizontal width and vertical height of a rotated barcode symbol in dots or pixels. The barcode symbol is specified by the parameters of this method.

Syntax: function

DrawToSize(

var

Width, Height, SymbolWidth, SymbolHeight: Single; Data: TBytes;

ShowQuietZone: Boolean; Module: Single; Angle: Single = 0; Canvas: TCanvas = nil; HDPI: Integer =

0; VDPI: Integer = 0): Integer;

overload

;

virtual

;

Description:

The method returns the horizontal width and vertical height of a rotated barcode symbol that is specified by parameters of this method, in dots or pixels.

Parameters:

Width

: Single; Returns the horizontal width of the rotated barcode symbol in dots or pixels in the horizontal direction (using the horizontal resolution).

If the quiet zones are displayed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

Height

: Single; Returns the vertical height of the rotated barcode symbol in dots or pixels in the vertical direction (using the vertical resolution).

If the quiet zones are displayed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

210

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

SymbolWidth

: Single; Returns the distance between the leading and trailing of the rotated barcode symbol in dots or pixels

(using the horizontal resolution).

If the quiet zones are displayed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

See also the "

BarcodeWidth

" property.

SymbolHeight

: Single; Returns the distance between the top and bottom of the rotated barcode symbol in dots or pixels (using the vertical resolution).

If the quiet zones are displayed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be displayed), they are included in the barcode symbol. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

211

2D Barcode FMX Components User Manual

See also the "

BarcodeHeight

" property.

Data

: TBytes; Specifies the barcode text. It is of type TBytes (it is in fact a byte array).

You can specify a block of binary (bytes) data to the parameter, in order to encode it into a barcode symbol.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

ShowQuietZone

: Boolean; Specifies whether to include the leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and bottom quiet zone in the barcode symbol. If the parameter value is set to true, these quiet zones are included. Otherwise, they don't be

included. You can use the

LeadingQuietZone

, TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties to specify the size of these quiet zones in modules. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and trailing quiet zone

will be included always, even if t h e ShowQuietZone parameter value is set to false. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

212

See also the "

ShowQuietZone

" property.

Module

: Single; Specifies the module size in dots or pixels (using the horizontal resolution).

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

2D Barcode FMX Components User Manual

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are drawn, please read the

ShowQuietZone parameter section above about whether or not the quiet zones will be drawn) anticlockwise. It defaults to 0 if the parameter is not provided, meaning left to right horizontal direction. See diagram (the quiet zones are drawn in claSilver color in order to accentuate them):

Canvas

: TCanvas; Specifies target canvas to drawn the barcode symbol on it. The parameter is useful for obtaining the physical resolution if one of HDPI and VDPI parameters is set to 0. If both HDPI and VDPI parameters are set to 0, or both HDPI and VDPI parameters are not set to 0, the parameter will be ignored, in this case, you can set it to nil .

HDPI:

Integer, Specifies the horizontal resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

HDPI is not provided, and the physical horizontal resolution obtained from the Canvas parameter will be used. If both HDPI and

VDPI are set to 0, it indicates the horizontal resolution is equal to the vertical resolution.

VDPI:

Integer, Specifies the vertical resolution of canvas in DPI. It's the number of dots or pixels per inch. It defaults to 0 if the

VDPI is not provided, and the physical vertical resolution obtained from the Canvas parameter will be used. If both VDPI and HDPI are set to 0, it indicates the vertical resolution is equal to the horizontal resolution.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidLength (-2):

It indicates that the length of Data parameter value is invalid.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid byte value is in the Data parameter, the return value is the position index of the invalid byte value. The index 0 denotes that the first byte value is invalid.

B.1.8 GetCheckSum

(TBarcodeFmx2D_MicroPDF417)

Returns the check sum of a barcode text that will be encoded into a series of structured append symbols. The value will be used in the structured append block, and the structured append block will be used by each symbol in the series of

MicroPDF417

structured

213

2D Barcode FMX Components User Manual

append symbols. There are two different overloading methods,

Syntax 1

and Syntax 2

:

Syntax 1

: Returns the check sum value of a barcode text. The barcode text is specified in the Barcode parameter. It is of type string.

The Barcode parameter is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence

(the BOM isn't included), then caculate its check sum. If you want to use other encoding scheme (for example the ANSI, UTF-16), please convert it in the

OnEncode

event handle, or use the

GetCheckSum (Syntax 2)

overloading method and specify the converted bytes sequence in its Data parameter. If you want to caculate the check sum of a block of binary (bytes) data, please use the

GetCheckSum (Syntax 2)

overloading method.

Syntax 2

: Returns the check sum value of a barcode text. The barcode text is specified in the Data parameter. It is of type TBytes

(it is in fact a byte array).

You can use the method to caculate the check sum of a block of binary (bytes) data.

See also the "Sturctured append" section in the " TBarcodeFmx2D_MicroPDF417

" article.

B.1.8.1 GetCheckSum - Syntax 1

(TBarcodeFmx2D_MicroPDF417)

Returns the check sum of a barcode text that will be encoded into a series of structured append symbols.

Syntax: type

{ Defined in the pfmxPDF417Com unit }

TPDF417_Option = (poIgnoreShiftBeforeECI, poFirst903TextAlphaLatch, poFirst904TextMixedLatch, po906TextAlphaLatch, po907TextAlphaLatch, po908TextAlphaLatch, po910TextAlphaLatch, po912TextAlphaLatch, po914TextAlphaLatch, po915TextAlphaLatch, poFirstFNC1MatchAI01, poMicroPDF417Explicit901);

{ Defined in the pfmxPDF417Com unit }

TPDF417_Options =

set of

TPDF417_Option;

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_Options = TPDF417_Options;

function

GetCheckSum(Barcode: string; AllowEscape: Boolean;

var

InvalidIndex: Integer; Options:

TMicroPDF417_Options = []): string;

virtual

;

Description:

The method returns the check sum of a barcode text that will be encoded into a series of MicroPDF417

structured append symbols.

The value will be used in the structured append block, and the structured append block will be used by each symbol in the series of

MicroPDF417

structured append symbols. See also the "Structured append" section in the "

TBarcodeFmx2D_MicroPDF417

" article.

Parameters:

Barcode

: string; It's the original input text before division into the each symbol in the series of structured append symbols. It is of type string, and it is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the

BOM isn't included), then caculate its check sum. If you want to use other encoding scheme (for example the ANSI, UTF-16), please convert it in the

OnEncode

event handle, or use the

GetCheckSum (Syntax 2)

overloading method and specify the converted bytes sequence in its Data parameter. If you want to caculate the check sum of a block of binary (bytes) data, please use the

GetCheckSum (Syntax 2)

overloading method.

See also the "

Barcode

" property article.

AllowEscape

: Boolean; Specifies whether to allow users to insert the escape sequences to the Barcode parameter value, in order to place the function characters and additional control information.

214

2D Barcode FMX Components User Manual

See also the "Escape sequences" section in the " TBarcodeFmx2D_MicroPDF417

" article and the " AllowEscape

" property article.

InvalidIndex

: Integer; If there is any invalid character in the barcode text that is specified by the Barcode parameter, the parameter returns the position index of first invalid character. Otherwise, it returns the Verify_OK (-1).

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid character is in the barcode text, the return value is the position index of the invalid charactere. For

32-bit Windows, 64-bit Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and Android platform, the index 0 denotes that the first character is invalid character.

Options

: TPDF417_Options; The Options parameter is an advanced feature which allows low level control over data encoding.

The parameter can be used to change the encoding algorithm and meanings of some fucntion codewords, in order to match the reader. The values that can be included in the Options parameter are defined in the pPDF417Com unit.

See also the "

Options " property article.

Return:

If the method succeeds, it returns the check sum value, it's a 16-bit word value, in decimal string ( UnicodeString ) format, and the

InvalidIndex parameter returns Verify_OK (-1). If the method fails, the InvalidIndex parameter returns a position index of first invalid character in the Barcode parameter. See also the InvalidIndex parameter section above.

The result string can be directly used as the check sum in the structured append block. For example:

var

full_barcode, check_sum, structuredappend_block: string; invalid_index: Integer;

begin

full_barcode := '......'; check_sum := GetCheckSum(full_barcode, False, invalid_index, []);

if

invalid_index <> -1

then

exit; structuredappend_block := '\s[1,001287023,,5,2008-12-03 05:30:00,,USA,,' + check_sum + ']';

//.....

See also the "Sturctured append" section in the " TBarcodeFmx2D_MicroPDF417

" article.

B.1.8.2 GetCheckSum - Syntax 2

(TBarcodeFmx2D_MicroPDF417)

Returns the check sum of a barcode text that will be encoded into a series of structured append symbols.

215

2D Barcode FMX Components User Manual

Syntax: type

{ Defined in the pfmxPDF417Com unit }

TPDF417_Option = (poIgnoreShiftBeforeECI, poFirst903TextAlphaLatch, poFirst904TextMixedLatch, po906TextAlphaLatch, po907TextAlphaLatch, po908TextAlphaLatch, po910TextAlphaLatch, po912TextAlphaLatch, po914TextAlphaLatch, po915TextAlphaLatch, poFirstFNC1MatchAI01, poMicroPDF417Explicit901);

{ Defined in the pfmxPDF417Com unit }

TPDF417_Options =

set of

TPDF417_Option;

{ Defined in the pfmxMicroPDF417 unit }

TMicroPDF417_Options = TPDF417_Options;

function

GetCheckSum(Data: TBytes; AllowEscape: Boolean;

var

InvalidIndex: Integer; Options:

TMicroPDF417_Options = []): TBytes;

virtual

;

Description:

The method returns the check sum of a barcode text that will be encoded into a series of MicroPDF417

structured append symbols.

The value will be used in the structured append block, and the structured append block will be used by each symbol in the series of

MicroPDF417

structured append symbols. See also the "Structured append" section in the "

TBarcodeFmx2D_MicroPDF417

" article.

Parameters:

Data

: TBytes; It's the original input text before division into the each symbol in the series of structured append symbols. It is of type TBytes (it is in fact a byte array). You can use the method to caculate the check sum of a block of binary (bytes) data.

See also the "

Data

" property article.

AllowEscape

: Boolean; Specifies whether to allow users to insert the escape sequences to the Data parameter value, in order to place the function characters and additional control information.

See also the "Escape sequences" section in the " TBarcodeFmx2D_MicroPDF417

" article and the " AllowEscape

" property article.

InvalidIndex

: Integer; If there is any invalid byte value in the barcode text that is specified by the Data parameter, the parameter returns the position index of first invalid byte value, the index 0 denotes that the first byte is invalid. Otherwise, it returns the

Verify_OK (-1).

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid byte value is in the Data parameter, the return value is the position index of the invalid byte value.

The index 0 denotes that the first byte value is invalid.

Options

: TPDF417_Options; The Options parameter is an advanced feature which allows low level control over data encoding.

The parameter can be used to change the encoding algorithm and meanings of some fucntion codewords, in order to match the reader. The values that can be included in the Options parameter are defined in the pPDF417Com unit.

See also the "

Options " property article.

Return:

If the method succeeds, it returns the check sum value, it's a 16-bit word value in decimal format, encoded as ASCII bytes sequence, in the TBytes array, and the InvalidIndex parameter returns the Verify_OK (-1). If the method fails, the InvalidIndex parameter returns a position index of first invalid byte in the Data parameter, it's an integer value greater than or equal to zero. See also the InvalidIndex parameter section above.

For example, the check sum is 1059, the return value is the byte array ( TBytes ):

($31 {'1'} , $30 {'0'} , $35 {'5'} , $39 {'9'} )

216

2D Barcode FMX Components User Manual

The result array can be directly used as the check sum in the structured append block:

var

full_barcode_data, check_sum, structuredappend_block: TBytes; invalid_index: Integer; structuredappend_block_len, check_sum_len: Integer;

begin

full_barcode_data := ......; check_sum := GetCheckSum(full_barcode_data, False, invalid_index, []);

if

invalid_index <> -1

then

exit;

SetLength(structuredappend_block, 15); structuredappend_block[0] := $5c {'\'} ; structuredappend_block[1] := $73 {'s'} ; structuredappend_block[2] := $5b {'['} ; structuredappend_block[3] := $35 {'5'} ; structuredappend_block[4] := $2c {','} ; // Index: 5 structuredappend_block[5] := $30 {'0'} ; structuredappend_block[6] := $32 {'2'} ; structuredappend_block[7] := $39 {'9'} ; structuredappend_block[8] := $2c {','} ; // File_ID: 029 structuredappend_block[9] := $2c {','} ; // File_Name: structuredappend_block[10] := $2c {','} ; // Amount: structuredappend_block[11] := $2c {','} ; // Time_Stamp: structuredappend_block[12] := $2c {','} ; // Sender: structuredappend_block[13] := $2c {','} ; // Address: structuredappend_block[14] := $2c {','} ; // File_Size: structuredappend_block_len := Length(structuredappend_block); check_sum_len := Length(check_sum);

SetLength(structuredappend_block, structuredappend_block_len + check_sum_len + 1);

Move(PByte(@check_sum[0])^, PByte(@structuredappend_block[structuredappend_block_len])^, check_sum_len); structuredappend_block[structuredappend_block_len + check_sum_len] := $5d {']'} ;

//......

See also the "Sturctured append" section in the " TBarcodeFmx2D_MicroPDF417

" article.

B.1.9 GetCheckSum

(TBarcodeFmx2D_PDF417)

Returns the check sum of a barcode text that will be encoded into each symbol in a Macro PDF417

set. The value will be used in the macro PDF417 control information block, and the macro PDF417 control information block will be used by each symbol in the Macro

PDF417

set. There are two different overloading methods, Syntax 1

and Syntax 2

:

Syntax 1

: Returns the check sum value of a barcode text. The barcode text is specified in the Barcode parameter. It is of type string.

The Barcode parameter is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence

(the BOM isn't included), then caculate its check sum. If you want to use other encoding scheme (for example the ANSI, UTF-16), please convert it in the

OnEncode

event handle, or use the

GetCheckSum (Syntax 2)

overloading method and specify the converted bytes sequence in its Data parameter. If you want to caculate the check sum of a block of binary (bytes) data, please use the

GetCheckSum (Syntax 2)

overloading method.

Syntax 2

: Returns the check sum value of a barcode text. The barcode text is specified in the Data parameter. It is of type TBytes

(it is in fact a byte array).

217

2D Barcode FMX Components User Manual

You can use the method to caculate the check sum of a block of binary (bytes) data.

See also the "Macro PDF417" section in the "

TBarcodeFmx2D_PDF417

" article.

B.1.9.1 GetCheckSum - Syntax 1

(TBarcodeFmx2D_PDF417)

Returns the check sum of a barcode text that will be encoded into each symbol in a Macro PDF417 set.

Syntax: type

{ Defined in the pfmxPDF417Com unit }

TPDF417_Option = (poIgnoreShiftBeforeECI, poFirst903TextAlphaLatch, poFirst904TextMixedLatch, po906TextAlphaLatch, po907TextAlphaLatch, po908TextAlphaLatch, po910TextAlphaLatch, po912TextAlphaLatch, po914TextAlphaLatch, po915TextAlphaLatch, poFirstFNC1MatchAI01, poMicroPDF417Explicit901);

{ Defined in the pfmxPDF417Com unit }

TPDF417_Options =

set of

TPDF417_Option;

function

GetCheckSum(Barcode: string; AllowEscape: Boolean;

var

InvalidIndex: Integer; Options:

TPDF417_Options = []): string;

virtual

;

Description:

The method returns the check sum of a barcode text that will be encoded into a Macro PDF417

set. The value will be used in the macro PDF417 control information block, and the macro PDF417 control information block will be used by each symbol in the Macro

PDF417

set. See also the "Macro PDF417" section in the "

TBarcodeFmx2D_PDF417

" article.

Parameters:

Barcode

: string; It's the original input text before division into the each symbol in the Macro PDF417 set. It is of type string, and it is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the BOM isn't included), then caculate its check sum. If you want to use other encoding scheme (for example the ANSI, UTF-16), please convert it in the

OnEncode

event handle, or use the GetCheckSum (Syntax 2)

overloading method and specify the converted bytes sequence in its

Data parameter. If you want to caculate the check sum of a block of binary (bytes) data, please use the

GetCheckSum (Syntax 2)

overloading method.

See also the "

Barcode

" property article.

AllowEscape

: Boolean; Specifies whether to allow users to insert the escape sequences to the Barcode parameter value, in order to place the function characters and additional control information.

See also the "Escape sequences" section in the " TBarcodeFmx2D_MicroPDF417

" article and the " AllowEscape

" property article.

InvalidIndex

: Integer; If there is any invalid character in the barcode text that is specified by the Barcode parameter, the parameter returns the position index of first invalid character. Otherwise, it returns the Verify_OK (-1).

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

218

2D Barcode FMX Components User Manual

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid character is in the barcode text, the return value is the position index of the invalid charactere. For

32-bit Windows, 64-bit Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and Android platform, the index 0 denotes that the first character is invalid character.

Options

: TPDF417_Options; The Options parameter is an advanced feature which allows low level control over data encoding.

The parameter can be used to change the encoding algorithm and meanings of some fucntion codewords, in order to match the reader. The values that can be included in the Options parameter are defined in the pPDF417Com unit.

See also the "

Options " property article.

Return:

If the method succeeds, it returns the check sum value, it's a 16-bit word value, in decimal string ( UnicodeString ) format, and the

InvalidIndex parameter returns Verify_OK (-1). If the method fails, the InvalidIndex parameter returns a position index of first invalid character in the Barcode parameter. See also the InvalidIndex parameter section above.

The result string can be directly used as the check sum in the Macro PDF417 control information block. For example:

var

full_barcode, check_sum, macro_block: string; invalid_index: Integer;

begin

full_barcode := '......'; check_sum := GetCheckSum(full_barcode, False, invalid_index, []);

if

invalid_index <> -1

then

exit; macro_block := '\s[1,001287023,,5,2008-12-03 05:30:00,,USA,,' + check_sum + ']';

//.....

See also the "Macro PDF417" section in the "

TBarcodeFmx2D_PDF417

" article.

B.1.9.2 GetCheckSum - Syntax 2

(TBarcodeFmx2D_PDF417)

Returns the check sum of a barcode text that will be encoded into each symbol in a Macro PDF417 set.

Syntax: type

{ Defined in the pfmxPDF417Com unit }

TPDF417_Option = (poIgnoreShiftBeforeECI, poFirst903TextAlphaLatch, poFirst904TextMixedLatch, po906TextAlphaLatch, po907TextAlphaLatch, po908TextAlphaLatch, po910TextAlphaLatch, po912TextAlphaLatch, po914TextAlphaLatch, po915TextAlphaLatch, poFirstFNC1MatchAI01, poMicroPDF417Explicit901);

{ Defined in the pfmxPDF417Com unit }

TPDF417_Options =

set of

TPDF417_Option;

function

GetCheckSum(Data: TBytes; AllowEscape: Boolean;

var

InvalidIndex: Integer; Options:

TPDF417_Options = []): TBytes;

virtual

;

Description:

The method returns the check sum of a barcode text that will be encoded into a Macro PDF417

set. The value will be used in the macro PDF417 control information block, and the macro PDF417 control information block will be used by each symbol in the Macro

219

2D Barcode FMX Components User Manual

PDF417

set. See also the "Macro PDF417" section in the "

TBarcodeFmx2D_PDF417

" article.

Parameters:

Data

: TBytes; It's the original input text before division into the each symbol in the Macro PDF417 set. It is of type TBytes (it is in fact a byte array). You can use the method to caculate the check sum of a block of binary (bytes) data.

See also the "

Data

" property article.

AllowEscape

: Boolean; Specifies whether to allow users to insert the escape sequences to the Data parameter value, in order to place the function characters and additional control information.

See also the "Escape sequences" section in the " TBarcodeFmx2D_MicroPDF417

" article and the " AllowEscape

" property article.

InvalidIndex

: Integer; If there is any invalid byte value in the barcode text that is specified by the Data parameter, the parameter returns the position index of first invalid byte value, the index 0 denotes that the first byte is invalid. Otherwise, it returns the

Verify_OK (-1).

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid byte value is in the Data parameter, the return value is the position index of the invalid byte value.

The index 0 denotes that the first byte value is invalid.

Options

: TPDF417_Options; The Options parameter is an advanced feature which allows low level control over data encoding.

The parameter can be used to change the encoding algorithm and meanings of some fucntion codewords, in order to match the reader. The values that can be included in the Options parameter are defined in the pPDF417Com unit.

See also the "

Options " property article.

Return:

If the method succeeds, it returns the check sum value, it's a 16-bit word value in decimal format, encoded as ASCII bytes sequence, in the TBytes array. And the InvalidIndex parameter returns the Verify_OK (-1). If the method fails, the InvalidIndex parameter returns a position index of first invalid byte in the Data parameter, it's an integer value greater than or equal to zero. See also the InvalidIndex parameter section above.

For example, the check sum is 1059, the return value is the byte array ( TBytes ):

($31 {'1'} , $30 {'0'} , $35 {'5'} , $39 {'9'} )

The result array can be directly used as the check sum in the Macro PDF417 control information block:

var

full_barcode_data, check_sum, macro_block: TBytes; invalid_index: Integer; macro_block_len, check_sum_len: Integer;

begin

full_barcode_data := ......; check_sum := GetCheckSum(full_barcode_data, False, invalid_index, []);

if

invalid_index <> -1

then

exit;

SetLength(macro_block, 15); macro_block[0] := $5c {'\'} ; macro_block[1] := $73 {'s'} ; macro_block[2] := $5b {'['} ; macro_block[3] := $35 {'5'} ; macro_block[4] := $2c {','} ; // Index: 5 macro_block[5] := $30 {'0'} ;

220

2D Barcode FMX Components User Manual

macro_block[6] := $32 {'2'} ; macro_block[7] := $39 {'9'} ; macro_block[8] := $2c {','} ; // File_ID: 029 macro_block[9] := $2c {','} ; // File_Name: macro_block[10] := $2c {','} ; // Amount: macro_block[11] := $2c {','} ; // Time_Stamp: macro_block[12] := $2c {','} ; // Sender: macro_block[13] := $2c {','} ; // Address: macro_block[14] := $2c {','} ; // File_Size: macro_block_len := Length(macro_block); check_sum_len := Length(check_sum);

SetLength(macro_block, macro_block_len + check_sum_len + 1);

Move(PByte(@check_sum[0])^, PByte(@macro_block[macro_block_len])^, check_sum_len); macro_block[macro_block_len + check_sum_len] := $5d {']'} ;

//......

See also the "Macro PDF417" section in the "

TBarcodeFmx2D_PDF417

" article.

B.1.10 GetParity

(TBarcodeFmx2D_QRCode)

Returns the parity value of a barcode text that will be encoded into a series of structured append symbols. The value will be used in

the structured append block, and the structured append block will be used by each symbol in the series of QRCode

structured append symbols. There are two different overloading methods,

Syntax 1

and Syntax 2

:

Syntax 1

: Returns the parity value of a barcode text. The barcode text is specified in the Barcode parameter. It is of type string.

The Barcode parameter is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence

(the BOM isn't included), then caculate its parity. If you want to use other encoding scheme (for example the ANSI, UTF-16),

please convert it in the OnEncode

event handle, or use the

GetParity (Syntax 2)

overloading method and specify the converted

bytes sequence in its Data parameter. If you want to caculate the parity of a block of binary (bytes) data, please use the GetParity

(Syntax 2) overloading method.

Syntax 2

: Returns the parity value of a barcode text. The barcode text is specified in the Data parameter. It is of type TBytes (it is in fact a byte array).

You can use the method to caculate the parity of a block of binary (bytes) data.

See also the "Structured append" section in the " TBarcodeFmx2D_QRCode

" article.

B.1.10.1 GetParity - Syntax 1

(TBarcodeFmx2D_QRCode)

Returns the parity value of a barcode text that will be encoded into a series of structured append symbols.

Syntax: function

GetParity(Barcode: string; AllowEscape: Boolean;

var

InvalidIndex: Integer): Byte;

virtual

;

Description:

The method returns the parity value of a barcode text that will be encoded into a series of structured append symbols. The value will be used in the structured append block, and the structured append block will be used by each symbol in the series of

QRCode

221

2D Barcode FMX Components User Manual

structured append symbols. See also the "Structured append" section in the "

TBarcodeFmx2D_QRCode

" article.

Parameters:

Barcode

: string; It's the original input text before division into the each symbol in the series of structured append symbols. It is of type string, and it is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the

BOM isn't included), then caculate its parity value. If you want to use other encoding scheme (for example the ANSI, UTF-16),

please convert it in the OnEncode

event handle, or use the

GetParity (Syntax 2)

overloading method and specify the converted bytes sequence in its Data parameter. If you want to caculate the parity value of a block of binary (bytes) data, please use the

GetParity (Syntax 2)

overloading method.

See also the "

Barcode

" property article.

AllowEscape

: Boolean; Specifies whether to allow users to insert the escape sequences to the Barcode parameter value, in order to place the function characters and additional control information.

See also the "Escape sequences" section in the " TBarcodeFmx2D_QRCode

" article and the " AllowEscape

" property article.

InvalidIndex

: Integer; If there is any invalid character in the barcode text that is specified by the Barcode parameter, the parameter returns the position index of first invalid character. Otherwise, it returns the Verify_OK (-1).

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid character is in the barcode text, the return value is the position index of the invalid charactere. For

32-bit Windows, 64-bit Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and Android platform, the index 0 denotes that the first character is invalid character.

Return:

If the method succeeds, it returns the parity value, it's an 8-bit byte value, and the InvalidIndex parameter returns Verify_OK (-1). If the method fails, the InvalidIndex parameter returns a position index of first invalid character in the Barcode parameter. See also the

InvalidIndex parameter section above.

See also the "Structured append" section in the " TBarcodeFmx2D_QRCode

" article.

B.1.10.2 GetParity - Syntax 2

(TBarcodeFmx2D_QRCode)

Returns the parity value of a barcode text that will be encoded into a series of structured append symbols.

Syntax: function

GetParity(Data: TBytes; AllowEscape: Boolean;

var

InvalidIndex: Integer): Byte;

virtual

;

222

2D Barcode FMX Components User Manual

Description:

The method returns the parity value of a barcode text that will be encoded into a series of structured append symbols. The value will be used in the structured append block, and the structured append block will be used by each symbol in the series of

QRCode

structured append symbols. See also the "Structured append" section in the "

TBarcodeFmx2D_QRCode

" article.

Parameters:

Data

: TBytes; It's the original input text before division into the each symbol in the series of structured append symbols. It is of type TBytes (it is in fact a byte array). You can use the method to caculate the check sum of a block of binary (bytes) data.

See also the "

Data

" property article.

AllowEscape

: Boolean; Specifies whether to allow users to insert the escape sequences to the Data parameter value, in order to place the function characters and additional control information.

See also the "Escape sequences" section in the " TBarcodeFmx2D_QRCode

" article and the " AllowEscape

" property article.

InvalidIndex

: Integer; If there is any invalid byte value in the barcode text that is specified by the Data parameter, the parameter returns the position index of first invalid byte value, the index 0 denotes that the first byte is invalid. Otherwise, it returns the

Verify_OK (-1).

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid byte value is in the Data parameter, the return value is the position index of the invalid byte value.

The index 0 denotes that the first byte value is invalid.

Return:

If the method succeeds, it returns the parity value, it's an 8-bit byte value, and the InvalidIndex parameter returns Verify_OK (-1). If the method fails, the InvalidIndex parameter returns a position index of first invalid byte in the Data parameter, it's an integer value greater than or equal to zero. See also the InvalidIndex parameter section above.

See also the "Structured append" section in the " TBarcodeFmx2D_QRCode

" article.

B.1.11 Print

Prints specified barcode symbol to printer. There are several different overloading methods, Syntax 1

,

Syntax 2

, and

Syntax 3

:

Syntax 1

: Prints the barcode symbol that is specified by the properties of this barcode component.

Syntax 2

: Prints the barcode symbol that is specified by the parameters of this method. The barcode text is specified in the

Barcode parameter. It is of type string.

The Barcode parameter is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence

(the BOM isn't included), then be encoded into the barcode symbol. If you want to use other encoding scheme (for example the

ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the Print (Syntax 3)

overloading method and specify the

converted bytes sequence in its Data parameter. If you want to encode a block of binary (bytes) data, please use the Print (Syntax

3) overloading method.

Syntax 3

: Prints the barcode symbol that is specified by the parameters of this method. The barcode text is specified in the Data parameter. It is of type TBytes (it is in fact a byte array).

You can use the method if you want to encode a block of binary (bytes) data into a barcode symbol.

223

2D Barcode FMX Components User Manual

B.1.11.1 Print - Syntax 1

Prints a barcode symbol to printer. The barcode symbol is specified by the properties of this barcode component. Please use the method between Printer.BeginDoc

and Printer.EndDoc

methods.

Syntax: function

Print(Left, Top, Module: Single; Angle: Single = -1; BarcodeWidth: Single = 0;

BarcodeHeight: Single = 0): Integer;

overload

;

virtual

;

Description:

Prints current barcode symbol that is specified by the properties of this barcode component to the printer.

Parameters:

Left

: Single; Specifies the margin between the rotated barcode symbol and the left side of the paper in millimeters in the

horizontal direction. If the quiet zones are printed (please read the ShowQuietZone

property about whether or not the quiet zones

will be printed), they are included in the barcode symbol. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

224

See also the "

LeftMargin

" property.

Top

: Single; Specifies the margin between the rotated barcode symbol and the top side of the paper in millimeters in the vertical

direction. If the quiet zones are printed (please read the ShowQuietZone

property about whether or not the quiet zones will be

printed), they are included in the barcode symbol. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

See also the "

TopMargin

" property.

Module

: Single; Specifies the module size in millimeters.

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

If any one of the BarcodeWidth and BarcodeHeight parameters is provided and it isn't zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeWidth parameter value or the BarcodeHeight parmeter value. If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are printed, please read the

ShowQuietZone

property about whether or not the quiet zones will be printed) anticlockwise. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

225

226

2D Barcode FMX Components User Manual

The parameter defaults to -1 if the Angle parameter is not provided, and the barcode symbol will be rotated based on the value of the

Orientation

property: boLeftRight: 0 degrees boRightLeft: 180 degrees boTopBottom: 270 degrees boBottomTop: 90 degrees

If you want to use the -1 degrees, the 359 degrees can be used instead.

Opacity:

Single, Specifies the transparency-level of entire barcode symbol, where 1 is not transparant at all, 0.5 is 50% seethrough, and 0 is completely transparent.

The parameter defaults to -1 if it is not provided, and the value of Opacity

property will be used.

Note, if the Inversed

property is set to false, you can use the alpha channel of the

SpaceColor

property value to specify the

transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the BarColor

property value to specify the transparency-level of foreground color (bars or dark modules). If the Inversed

property is set to true, you can use the alpha channel of the

BarColor

property value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the

SpaceColor

property value to specify the transparency-level of foreground color (bars or dark modules).

BarcodeWidth

: Single, Specifies the barcode symbol width (the distance between the beginning and end of the barcode symbol), in millimeters. If the quiet zones are printed (please read the

ShowQuietZone

property about whether or not the quiet zones will be

printed), the leading quiet zone

and the

trailing quiet zone

are included in the barcode symbol. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

Note, if the parameter is provided and it isn't zero, the values of Module and BarcodeHeight parameters will be ignored, the module size will be calculated based on the BarcodeWidth parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol width will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeWidth

" property.

BarcodeHeight

: Single, Specifies the barcode symbol height (the distance between the top and bottom of the barcode symbol), in

millimeters. If the quiet zones are printed (please read the ShowQuietZone

property about whether or not the quiet zones will be

printed), the top quiet zone

and the bottom quiet zone

are included in the barcode symbol. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

2D Barcode FMX Components User Manual

Note, if the parameter is provided and it isn't zero, and the BarcodeWidth parameter isn't provided or it's zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeHeight parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol height will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeHeight

" property.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the Barcode

property to specify the barcode text, and use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the Barcode

property to specify the barcode text, and use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_InvalidLength (-2):

If you use the Barcode

property to specify the barcode text, it indicates that the length of

Barcode

property value is invalid, also the

OnInvalidLength

event will occur.

If you use the Data property to specify the barcode text, it indicates that the length of Data

property value is invalid, also the

OnInvalidDataLength

event will occur.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

If you use the Barcode

property to specify the barcode text, it indicates that an invalid character is in the barcode text, also the

OnInvalidChar event will occur. The return value is the position index of the invalid charactere. For 32-bit Windows, 64-bit

Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and Android platform, the index 0 denotes that the first character is invalid character.

If you use the Data

property to specify the barcode data, it indicates that an invalid byte value is in the barcode data, also the

OnInvalidDataChar

event will occur. The return value is the position index of the invalid byte value. The index 0 denotes that the first byte value is invalid byte value.

Note:

227

2D Barcode FMX Components User Manual

Pelase use the method between Printer.BeginDoc

and Printer.EndDoc

methods. For example:

Printer.ActivePrinter.SelectDPI(600, 600);

Printer.BeginDoc;

... { Print other content }

Barcode_QRCode1.Print(...); { Print the barcode symbol }

... { Print other content }

Printer.EndDoc;

B.1.11.2 Print - Syntax 2

Prints a barcode symbol to printer. The barcode symbol is specified by the parameters of this method. Please use the method between the Printer.BeginDoc

and Printer.EndDoc

methods.

Syntax: function

Print(Barcode: string; BarColor, SpaceColor: TAlphaColor; ShowQuietZone: Boolean; Left, Top,

Module: Single; Angle: Single = 0; Opacity: Single = 1; BarcodeWidth: Single = 0; BarcodeHeight:

Single = 0): Integer;

overload

;

virtual

;

Description:

Prints a barcode symbol that is specified by the parameters of this method to the printer.

Parameters:

Barcode

: String; Specifies the barcode text. It is of type string, and it is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the BOM isn't included), then be encoded into the barcode symbol. If you want to use

other encoding scheme (for example the ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the Print (Syntax

3) overloading method and specify the converted bytes sequence in its Data parameter. If you want to encode a block of binary

(bytes) data, please use the

Print (Syntax 3)

overloading method.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

BarColor

: TAlphaColor; In general, the Inversed

property is set to false. In this case, the parameters specifies the color for all bars

(Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

If the Inversed

property is set to true, it specifies the color for all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in the barcode symbol. Also, if the ShowQuietZone parameter value is

set to true, the leading quiet zone

, trailing quiet zone

, top quiet zone

, and bottom quiet zone

are printed using the color.

The alpha channel of the BarColor parameter is supported.

See also the "

BarColor

" property.

SpaceColor

: TAlphaColor; In general, the Inversed

property is set to false. In this case, the parameters specifies the color for all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in

the barcode symbol. Also, if the ShowQuietZone

parameter value is set to true, the leading quiet zone

,

trailing quiet zone

, top quiet zone , and bottom quiet zone are printed using the color.

If the Inversed

property is set to true, it specifies the color for all bars (Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

The alpha channel of the SpaceColor parameter is supported.

228

2D Barcode FMX Components User Manual

See also the "

SpaceColor

" property.

ShowQuietZone

: Boolean; Specifies whether to print the leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and bottom quiet zone . If the parameter value is set to true, these quiet zones are printed. Otherwise, they don't be printed. You can use the

LeadingQuietZone

, TrailingQuietZone

, TopQuietZone

, and

BottomQuietZone properties to specify the size of these quiet zones in

modules. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component,

leading quiet zone

and trailing quiet zone

will be printed always, even if t h e ShowQuietZone parameter value is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

In general, the Inversed

property is set to false. In this case, these quiet zones are printed using the color specified by SpaceColor

parameter. If the Inversed

property is set to true, these quiet zones are printed using the color specified by BarColor parameter.

See also the "

ShowQuietZone

" property.

Left

: Single; Specifies the margin between the rotated barcode symbol and the left side of the paper in millimeters in the horizontal direction. If the quiet zones are printed (please read the ShowQuietZone parameter about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

See also the "

LeftMargin

" property.

Top

: Single; Specifies the margin between the rotated barcode symbol and the top side of the paper in millimeters in the vertical

229

2D Barcode FMX Components User Manual

direction. If the quiet zones are printed (please read the ShowQuietZone parameter about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

See also the "

TopMargin

" property.

Module

: Single; Specifies the module size in millimeters.

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

230

If any one of the BarcodeWidth and BarcodeHeight parameters is provided and it isn't zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeWidth parameter value or the BarcodeHeight parmeter value. If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are printed, please read the

ShowQuietZone parameter section above about whether or not the quiet zones will be printed) anticlockwise. It defaults to 0 if the parameter is not provided, meaning left to right horizontal direction. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

2D Barcode FMX Components User Manual

Opacity:

Single, Specifies the transparency-level of entire barcode symbol, where 1 is not transparant at all, 0.5 is 50% seethrough, and 0 is completely transparent.

The parameter defaults to 1 if it is not provided, meaning not transparant at all.

Note, if the Inversed

property is set to false, you can use the alpha channel of the SpaceColor parameter value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the BarColor

parameter value to specify the transparency-level of foreground color (bars or dark modules). If the Inversed

property is set to true, you can use the alpha channel of the BarColor parameter value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the SpaceColor parameter value to specify the transparency-level of fore-ground color (bars or dark modules).

BarcodeWidth

: Single, Specifies the barcode symbol width (the distance between the beginning and end of the barcode symbol), in millimeters. If the quiet zones are printed (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be printed), the

leading quiet zone

and the

trailing quiet zone

are included in the barcode symbol. See diagram

(the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

Note, if the parameter is provided and it isn't zero, the values of Module and BarcodeHeight parameters will be ignored, the module size will be calculated based on the BarcodeWidth parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol width will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeWidth

" property.

BarcodeHeight

: Single, Specifies the barcode symbol height (the distance between the top and bottom of the barcode symbol), in millimeters. If the quiet zones are printed (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be printed), the

top quiet zone

and the bottom quiet zone

are included in the barcode symbol. See diagram (the

SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

231

2D Barcode FMX Components User Manual

Note, if the parameter is provided and it isn't zero, and the BarcodeWidth parameter isn't provided or it's zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeHeight parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol height will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeHeight

" property.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the OnEncode event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the OnEncode event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_InvalidLength (-2):

It indicates that the length of Barcode parameter value is invalid.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid character is in the barcode text, the return value is the position index of the invalid charactere. For 32-bit

Windows, 64-bit Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and

Android platform, the index 0 denotes that the first character is invalid character.

Note:

Pelase use the method between Printer.BeginDoc

and Printer.EndDoc

methods. For example:

Printer.ActivePrinter.SelectDPI(600, 600);

Printer.BeginDoc;

... { Print other content }

Barcode_QRCode1.Print(...); { Print the barcode symbol }

... { Print other content }

Printer.EndDoc;

232

2D Barcode FMX Components User Manual

B.1.11.3 Print - Syntax 3

Prints a barcode symbol to printer. The barcode symbol is specified by the parameters of this method. Please use the method between the Printer.BeginDoc

and Printer.EndDoc

methods.

Syntax: function

Print(Data: TBytes; BarColor, SpaceColor: TAlphaColor; ShowQuietZone: Boolean; Left, Top,

Module: Single; Angle: Single = 0; Opacity: Single = 1; BarcodeWidth: Single = 0; BarcodeHeight:

Single = 0): Integer;

overload

;

virtual

;

Description:

Prints a barcode symbol that is specified by the parameters of this method to the printer.

Parameters:

Data

: TBytes; Specifies the barcode text. It is of type TBytes (it is in fact a byte array).

You can specify a block of binary (bytes) data to the parameter, in order to encode it into a barcode symbol.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

BarColor

: TAlphaColor; In general, the Inversed

property is set to false. In this case, the parameters specifies the color for all bars

(Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

If the Inversed

property is set to true, it specifies the color for all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in the barcode symbol. Also, if the ShowQuietZone parameter value is

set to true, the leading quiet zone

, trailing quiet zone

, top quiet zone

, and bottom quiet zone

are printed using the color.

The alpha channel of the BarColor parameter is supported.

See also the "

BarColor

" property.

SpaceColor

: TAlphaColor; In general, the Inversed

property is set to false. In this case, the parameters specifies the color for all spaces (Stacked 2D barcode symbology and Linear 1D barcode symbology) or light modules (Matrix 2D barcode symbology) in

the barcode symbol. Also, if the ShowQuietZone

parameter value is set to true, the leading quiet zone

,

trailing quiet zone

, top quiet zone , and bottom quiet zone are printed using the color.

If the Inversed

property is set to true, it specifies the color for all bars (Stacked 2D barcode symbology and Linear 1D barcode symbology) or dark modules (Matrix 2D barcode symbology) in the barcode symbol.

The alpha channel of the SpaceColor parameter is supported.

See also the "

SpaceColor

" property.

ShowQuietZone

: Boolean; Specifies whether to print the leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and bottom quiet zone in the barcode symbol. If the parameter value is set to true, these quiet zones are printed. Otherwise, they don't be printed.

You can use the LeadingQuietZone

,

TrailingQuietZone

,

TopQuietZone

, and

BottomQuietZone

properties to specify the size of these quiet zones in modules. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

233

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component,

leading quiet zone

and trailing quiet zone

will be printed always, even if t h e ShowQuietZone parameter value is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

In general, the Inversed

property is set to false. In this case, these quiet zones are printed using the color specified by SpaceColor

parameter. If the Inversed

property is set to true, these quiet zones are printed using the color specified by BarColor parameter.

See also the "

ShowQuietZone

" property.

Left

: Single; Specifies the margin between the rotated barcode symbol and the left side of the paper in millimeters in the horizontal direction. If the quiet zones are printed (please read the ShowQuietZone parameter about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

234

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

See also the "

LeftMargin

" property.

Top

: Single; Specifies the margin between the rotated barcode symbol and the top side of the paper in millimeters in the vertical direction. If the quiet zones are printed (please read the ShowQuietZone parameter about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

See also the "

TopMargin

" property.

Module

: Single; Specifies the module size in millimeters.

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

If any one of the BarcodeWidth and BarcodeHeight parameters is provided and it isn't zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeWidth parameter value or the BarcodeHeight parmeter value. If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are printed, please read the

ShowQuietZone parameter section above about whether or not the quiet zones will be printed) anticlockwise. It defaults to 0 if the parameter is not provided, meaning left to right horizontal direction. See diagram (the SpaceColor parameter value is set to claSilver in order to accentuate the quiet zones):

Opacity:

Single, Specifies the transparency-level of entire barcode symbol, where 1 is not transparant at all, 0.5 is 50% seethrough, and 0 is completely transparent.

The parameter defaults to 1 if it is not provided, meaning not transparant at all.

Note, if the Inversed

property is set to false, you can use the alpha channel of the SpaceColor parameter value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the BarColor

235

2D Barcode FMX Components User Manual

parameter value to specify the transparency-level of foreground color (bars or dark modules). If the Inversed

property is set to true, you can use the alpha channel of the BarColor parameter value to specify the transparency-level of bakcground color (spaces or light modules, and quiet zones), and use the alpha channel of the SpaceColor parameter value to specify the transparency-level of fore-ground color (bars or dark modules).

BarcodeWidth

: Single, Specifies the barcode symbol width (the distance between the beginning and end of the barcode symbol), in millimeters. If the quiet zones are printed (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be printed), the

leading quiet zone

and the

trailing quiet zone

are included in the barcode symbol. See diagram

(the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

Note, if the parameter is provided and it isn't zero, the values of Module and BarcodeHeight parameters will be ignored, the module size will be calculated based on the BarcodeWidth parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol width will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeWidth

" property.

BarcodeHeight

: Single, Specifies the barcode symbol height (the distance between the top and bottom of the barcode symbol), in millimeters. If the quiet zones are printed (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be printed), the

top quiet zone

and the bottom quiet zone

are included in the barcode symbol. See diagram (the

SpaceColor parameter is set to claSilver in order to accentuate the quiet zones):

236

Note, if the parameter is provided and it isn't zero, and the BarcodeWidth parameter isn't provided or it's zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeHeight parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol height will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeHeight

" property.

2D Barcode FMX Components User Manual

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidLength (-2):

It indicates that the length of Data parameter value is invalid.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid byte value is in the Data parameter, the return value is the position index of the invalid byte value. The index 0 denotes that the first byte value is invalid.

Note:

Pelase use the method between Printer.BeginDoc

and Printer.EndDoc

methods. For example:

Printer.ActivePrinter.SelectDPI(600, 600);

Printer.BeginDoc;

... { Print other content }

Barcode_QRCode1.Print(...); { Print the barcode symbol }

... { Print other content }

Printer.EndDoc;

B.1.12 PrintSize

Returns actual horizontal width and vertical height of a rotated barcode symbol in millimeters. There are several different overloading

methods, Syntax 1

, Syntax 2

, and Syntax 3

:

Syntax 1

: Returns the actual print horizontal width and vertical height of the rotated barcode symbol that is specified by the properties of this barcode component.

Syntax 2

: Returns the actual print horizontal width and vertical height of the rotated barcode symbol that is specified by the parameters of this method. The barcode text is specified in the Barcode parameter. It is of type string.

The Barcode parameter is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence

(the BOM isn't included), then be encoded into the barcode symbol. If you want to use other encoding scheme (for example the

ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the PrintSize (Syntax 3)

overloading method and specify

the converted bytes sequence in its Data parameter. If you want to encode a block of binary (bytes) data, please use the PrintSize

(Syntax 3) overloading method.

Syntax 3

: Returns the actual print horizontal width and vertical height of the rotated barcode symbol that is specified by the parameters of this method. The barcode text is specified in the Data parameter. It is of type TBytes (it is in fact a byte array).

You can use the method if you want to encode a block of binary (bytes) data into a barcode symbol.

B.1.12.1 PrintSize - Syntax 1

Returns actual horizontal width and vertical height of a rotated barcode symbol in millimeters. The barcode symbol is specified by the

237

2D Barcode FMX Components User Manual

properties of this barcode component.

Syntax: function

PrintSize(

var

Width, Height, SymbolWidth, SymbolHeight: Single; Module: Single; Angle:

Single = -1; BarcodeWidth: Single = 0; BarcodeHeight: Single = 0; HDPI: Integer = 0; VDPI: Integer

= 0): Integer;

overload

;

virtual

;

Description:

The method returns the actual horizontal width and vertical height of a rotated barcode symbol that is specified by properties of this barcode component, in millimeters.

Please use the method between the Printer.BeginDoc

and Printer.EndDoc

methods if the HDPI or VDPI parameter is set to 0.

Parameters:

Width

: Single; Returns the horizontal width of the rotated barcode symbol in millimeters. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone

property about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the

ShowQuietZone

property is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

Height

: Single; Returns the vertical height of the rotated barcode symbol in millimeters. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone

property about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

238

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the

ShowQuietZone

property is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

2D Barcode FMX Components User Manual

SymbolWidth

: Single; Returns the distance between the leading and trailing of the rotated barcode symbol in millimeter. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone

property about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the

ShowQuietZone

property is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

See also the "

BarcodeWidth

" property.

SymbolHeight

: Single; Returns the distance between the top and bottom of the rotated barcode symbol in millimeter. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone

property about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

See also the "

BarcodeHeight

" property.

Module

: Double; Specifies the module size in millimeters.

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

239

2D Barcode FMX Components User Manual

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

If any one of the BarcodeWidth and BarcodeHeight parameters is provided and it isn't zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeWidth parameter value or the BarcodeHeight parmeter value. If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are printed, please read the

ShowQuietZone

property about whether or not the quiet zones will be printed) anticlockwise. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

The parameter defaults to -1 if the Angle parameter is not provided, and the barcode symbol will be rotated based on the value of the

Orientation

property: boLeftRight: 0 degrees boRightLeft: 180 degrees boTopBottom: 270 degrees boBottomTop: 90 degrees

If you want to use the -1 degrees, the 359 degrees can be used instead.

BarcodeWidth

: Single, Specifies the barcode symbol width (the distance between the beginning and end of the barcode symbol), in millimeters. If the quiet zones are printed (please read the

ShowQuietZone

property about whether or not the quiet zones will be

printed), the leading quiet zone

and the

trailing quiet zone

are included in the barcode symbol. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

240

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

2D Barcode FMX Components User Manual

Note, if the parameter is provided and it isn't zero, the values of Module and BarcodeHeight parameters will be ignored, the module size will be calculated based on the BarcodeWidth parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol width will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeWidth

" property.

BarcodeHeight

: Single, Specifies the barcode symbol height (the distance between the top and bottom of the barcode symbol), in

millimeters. If the quiet zones are printed (please read the ShowQuietZone

property about whether or not the quiet zones will be

printed), the top quiet zone

and the bottom quiet zone

are included in the barcode symbol. See diagram (the SpaceColor

property is set to claSilver in order to accentuate the quiet zones):

Note, if the parameter is provided and it isn't zero, and the BarcodeWidth parameter isn't provided or it's zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeHeight parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol height will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeHeight

" property.

HDPI

: Integer, Specifies the horizontal resolution of printer in DPI (dots per inch).

It defaults to 0 if the HDPI is not provided, and the horizontal resolution will be obtained from your printer.

VDPI

: Integer, Specifies the vertical resolution of printer in DPI (dots per inch).

It defaults to 0 if the VDPI is not provided, and the vertical resolution will be obtained from your printer.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the Barcode

property to specify the barcode text, and use the OnEncode

event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the Barcode

property to specify the barcode text, and use the OnEncode

event handle to encode the barcode text to a

241

2D Barcode FMX Components User Manual

bytes sequence in your own encoding scheme, the Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example the BOM).

Verify_InvalidLength (-2):

If you use the Barcode

property to specify the barcode text, it indicates that the length of

Barcode

property value is invalid, also the

OnInvalidLength

event will occur.

If you use the Data property to specify the barcode text, it indicates that the length of Data

property value is invalid, also the

OnInvalidDataLength

event will occur.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

If you use the Barcode

property to specify the barcode text, it indicates that an invalid character is in the barcode text, also the

OnInvalidChar event will occur. The return value is the position index of the invalid charactere. For 32-bit Windows, 64-bit

Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and Android platform, the index 0 denotes that the first character is invalid character.

If you use the Data

property to specify the barcode data, it indicates that an invalid byte value is in the barcode data, also the

OnInvalidDataChar

event will occur. The return value is the position index of the invalid byte value. The index 0 denotes that the first byte value is invalid byte value.

B.1.12.2 PrintSize - Syntax 2

Returns the actual horizontal width and vertical height of a rotated barcode symbol in millimeters. The barcode symbol is specified by the parameters of this method.

Syntax: function

PrintSize(

var

Width, Height, SymbolWidth, SymbolHeight: Single; Barcode: string;

ShowQuietZone: Boolean; Module: Single; Angle: Single = 0; BarcodeWidth: Single = 0; BarcodeHeight:

Single = 0; HDPI: Integer = 0; VDPI: Integer = 0): Integer;

overload

;

virtual

;

Description:

The method returns the actual horizontal width and vertical height of a rotated barcode symbol that is specified by parameters of this method, in millimeters.

Please use the method between the Printer.BeginDoc

and Printer.EndDoc

methods if the HDPI or VDPI parameter is set to 0.

Parameters:

Width

: Single; Returns the horizontal width of the rotated barcode symbol in millimeters. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

242

2D Barcode FMX Components User Manual

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

Height

: Single; Returns the vertical height of the rotated barcode symbol in millimeters. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

SymbolWidth

: Single; Returns the distance between the leading and trailing of the rotated barcode symbol in millimeter. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

243

2D Barcode FMX Components User Manual

See also the "

BarcodeWidth

" property.

SymbolHeight

: Single; Returns the distance between the top and bottom of the rotated barcode symbol in millimeter. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

244

See also the "

BarcodeHeight

" property.

Barcode

: String; Specifies the barcode text. It is of type string, and it is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the BOM isn't included), then be encoded into the barcode symbol. If you want to use

other encoding scheme (for example the ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the PrintSize

(Syntax 3) overloading method and specify the converted bytes sequence in its Data parameter. If you want to encode a block of binary (bytes) data, please use the PrintSize (Syntax 3)

overloading method.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

ShowQuietZone

: Boolean; Specifies whether to include the leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and bottom quiet zone in the barcode symbol. If the parameter value is set to true, these quiet zones are included. Otherwise, they don't be

included. You can use the

LeadingQuietZone

, TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties to specify the size of these quiet zones in modules. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and trailing quiet zone

will be included always, even if t h e ShowQuietZone parameter value is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

2D Barcode FMX Components User Manual

See also the "

ShowQuietZone

" property.

Module

: Single; Specifies the module size in millimeters.

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

If any one of the BarcodeWidth and BarcodeHeight parameters is provided and it isn't zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeWidth parameter value or the BarcodeHeight parmeter value. If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are printed, please read the

ShowQuietZone parameter section above about whether or not the quiet zones will be printed) anticlockwise. It defaults to 0 if the parameter is not provided, meaning left to right horizontal direction. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

BarcodeWidth

: Single, Specifies the barcode symbol width (the distance between the beginning and end of the barcode symbol), in millimeters. If the quiet zones are printed (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be printed), the

leading quiet zone

and the

trailing quiet zone

are included in the barcode symbol. See diagram

(the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter section above is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

245

2D Barcode FMX Components User Manual

Note, if the parameter is provided and it isn't zero, the values of Module and BarcodeHeight parameters will be ignored, the module size will be calculated based on the BarcodeWidth parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol width will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeWidth

" property.

BarcodeHeight

: Single, Specifies the barcode symbol height (the distance between the top and bottom of the barcode symbol), in millimeters. If the quiet zones are printed (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be printed), the

top quiet zone

and the bottom quiet zone

are included in the barcode symbol. See diagram (the

SpaceColor property is set to

claSilver in order to accentuate the quiet zones):

Note, if the parameter is provided and it isn't zero, and the BarcodeWidth parameter isn't provided or it's zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeHeight parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol height will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeHeight

" property.

HDPI

: Integer, Specifies the horizontal resolution of printer in DPI (dots per inch).

It defaults to 0 if the HDPI is not provided, and the horizontal resolution will be obtained from your printer.

VDPI

: Integer, Specifies the vertical resolution of printer in DPI (dots per inch).

It defaults to 0 if the VDPI is not provided, and the vertical resolution will be obtained from your printer.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidIndex_AfterBarcode (-4):

If you use the OnEncode event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_AfterBarcode (-4) indicats that an invalid byte value is in the suffix codes of the bytes sequence.

Verify_InvalidIndex_BeforeBarcode (-3):

If you use the OnEncode event handle to encode the barcode text to a bytes sequence in your own encoding scheme, the

Verify_InvalidIndex_BeforeBarcode (-3) indicats that an invalid byte value is in the prefix codes of the bytes sequence (for example

246

2D Barcode FMX Components User Manual

the BOM).

Verify_InvalidLength (-2):

It indicates that the length of Barcode parameter value is invalid.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid character is in the barcode text, the return value is the position index of the invalid charactere. For 32-bit

Windows, 64-bit Windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and

Android platform, the index 0 denotes that the first character is invalid character.

B.1.12.3 PrintSize - Syntax 3

Returns the actual horizontal width and vertical height of a rotated barcode symbol in millimeters. The barcode symbol is specified by the parameters of this method.

Syntax: function

PrintSize(

var

Width, Height, SymbolWidth, SymbolHeight: Single; Data: TBytes; ShowQuietZone:

Boolean; Module: Single; Angle: Single = 0; BarcodeWidth: Single = 0; BarcodeHeight: Single = 0;

HDPI: Integer = 0; VDPI: Integer = 0): Integer;

overload

;

virtual

;

Description:

The method returns the actual horizontal width and vertical height of a rotated barcode symbol that is specified by parameters of this method, in millimeters.

Please use the method between the Printer.BeginDoc

and Printer.EndDoc

methods if the HDPI or VDPI parameter is set to 0.

Parameters:

Width

: Single; Returns the horizontal width of the rotated barcode symbol in millimeters. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

247

2D Barcode FMX Components User Manual

Height

: Single; Returns the vertical height of the rotated barcode symbol in millimeters. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

SymbolWidth

: Single; Returns the distance between the leading and trailing of the rotated barcode symbol in millimeter. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

If the quiet zones are printed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

248

See also the "

BarcodeWidth

" property.

SymbolHeight

: Single; Returns the distance between the top and bottom of the rotated barcode symbol in millimeter. The value is calculated based on the module size. You can use one of the Module , BarcodeWidth and BarcodeHeight parameters to specify the module size.

2D Barcode FMX Components User Manual

If the quiet zones are printed (please read the ShowQuietZone parameter section below about whether or not the quiet zones will be printed), they are included in the barcode symbol. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

See also the "

BarcodeHeight

" property.

Data

: TBytes; Specifies the barcode text. It is of type TBytes (it is in fact a byte array).

You can specify a block of binary (bytes) data to the parameter, in order to encode it into a barcode symbol.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

Barcode

: String; Specifies the barcode text. It is of type string, and is in fact an UnicodeString . By default, the unicode string will be converted to an UTF-8 bytes sequence (the BOM isn't included), then be encoded into the barcode symbol. If you want to use

other encoding scheme (for example the ANSI, UTF-16), please convert it in the OnEncode

event handle, or use the PrintSize

(Syntax 3) overloading method and specify the converted bytes sequence in its Data parameter. If you want to encode a block of binary (bytes) data, please use the PrintSize (Syntax 3)

overloading method.

For the TBarcodeFmx2D_RSS14

and TBarcodeFmx2D_RSSLimited

components, if the property AutoCheckDigit

is set to true, the check digit doesn't need to be included in the parameter, otherwise the check digit can be specified by you in the parameter.

See also the "

Barcode

" and "

Data

" properties.

ShowQuietZone

: Boolean; Specifies whether to include the leading quiet zone

,

trailing quiet zone

,

top quiet zone

, and bottom quiet zone in the barcode symbol. If the parameter value is set to true, these quiet zones are included. Otherwise, they don't be

included. You can use the

LeadingQuietZone

, TrailingQuietZone

,

TopQuietZone

, and BottomQuietZone

properties to specify the size of these quiet zones in modules. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, leading quiet zone

and trailing quiet zone

will be included always, even if t h e ShowQuietZone parameter value is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

See also the "

ShowQuietZone

" property.

Module

: Single; Specifies the module size in millimeters.

249

2D Barcode FMX Components User Manual

For the Matrix 2D barcode symbology (excluding the TBarcodeFmx2D_MaxiCode

barcode symbology), the module is single cell (a suqare shape) used to encode one bit data. The parameter specifies the module width and height. See diagram:

For the

TBarcodeFmx2D_MaxiCode

barcode symbology, the module is single cell (a regular hexagonal shape) used to encode one bit data. The parameter specifies the horizonal width of a module. Also, it's the center to center horizontal distance between adjacent modules. See diagram:

For the Stacked 2D barcode symbology and Linear 1D barcode symbology, the module is the thinest bar (or space) in the barcode symbol. The parameter specifies the module width. See diagram:

If any one of the BarcodeWidth and BarcodeHeight parameters is provided and it isn't zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeWidth parameter value or the BarcodeHeight parmeter value. If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

Module

" property.

Angle

: Single; Specifies an angle in degrees to rotate the barcode symbol and its quiet zones (if they are printed, please read the

ShowQuietZone parameter section above about whether or not the quiet zones will be printed) anticlockwise. It defaults to 0 if the parameter is not provided, meaning left to right horizontal direction. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

BarcodeWidth

: Single, Specifies the barcode symbol width (the distance between the beginning and end of the barcode symbol), in millimeters. If the quiet zones are printed (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be printed), the

leading quiet zone

and the

trailing quiet zone

are included in the barcode symbol. See diagram

(the quiet zones are printed in claSilver color in order to accentuate them):

For the TBarcodeFmx2D_Code16K

barcode component, the leading quiet zone

and the

trailing quiet zone

are included always, even if the ShowQuietZone parameter section above is set to false. See diagram (the quiet zones are printed in claSilver color in order to accentuate them):

250

Note, if the parameter is provided and it isn't zero, the values of Module and BarcodeHeight parameters will be ignored, the

2D Barcode FMX Components User Manual

module size will be calculated based on the BarcodeWidth parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol width will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeWidth

" property.

BarcodeHeight

: Single, Specifies the barcode symbol height (the distance between the top and bottom of the barcode symbol), in millimeters. If the quiet zones are printed (please read the ShowQuietZone parameter section above about whether or not the quiet zones will be printed), the

top quiet zone

and the bottom quiet zone

are included in the barcode symbol. See diagram (the

SpaceColor property is set to

claSilver in order to accentuate the quiet zones):

Note, if the parameter is provided and it isn't zero, and the BarcodeWidth parameter isn't provided or it's zero, the value of Module parameter will be ignored, the module size will be calculated based on the BarcodeHeight parameter value. If both BarcodeHeight and BarcodeWidth parameters aren't provided or they are all zero, the barcode symbol height will be determined by the Module parameter value.

If both BarcodeWidth and BarcodeHeight parameters are provided and aren't zero, only the BarcodeWidth parameter value will be used to calculate the module size, the BarcodeHeight parameter value will be ignored.

See also the "

BarcodeHeight

" property.

HDPI

: Integer, Specifies the horizontal resolution of printer in DPI (dots per inch).

It defaults to 0 if the HDPI is not provided, and the horizontal resolution will be obtained from your printer.

VDPI

: Integer, Specifies the vertical resolution of printer in DPI (dots per inch).

It defaults to 0 if the VDPI is not provided, and the vertical resolution will be obtained from your printer.

Return:

This method can return one of these values (these consts are defined in the pfmxCore2D unit):

Verify_InvalidLength (-2):

It indicates that the length of Data parameter value is invalid.

Verify_OK (-1):

It indicates the method succeeds.

Verify_InvalidIndex_Base (0), and greater than 0:

It indicates that an invalid byte value is in the Data parameter, the return value is the position index of the invalid byte value. The index 0 denotes that the first byte value is invalid.

251

2D Barcode FMX Components User Manual

B.1.13 Size

Returns the height and width of specified barcode symbol, in pixels, that's displayed in the TImage

control specified by the Image

property.

Syntax: function

Size(

var

Width, Height, SymbolWidth, SymbolHeight: Single): Boolean;

virtual

;

Description:

The method returns the width and height of the barcode symbol that's displayed in the TImage

control specified by the Image

property, in pixels. If the quiet zones are displayed (please read the

ShowQuietZone

property about whether or not the quiet zones will be displayed), they are included in the barcode symbol.

Parameters:

Width

: Single; Returns the horizontal width of the rotated barcode symbol that's displyed in the TImage control specified in the

Image

property, in pixels. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

If the quiet zones are displayed (please read the ShowQuietZone

property about whether or not the quiet zones will be displayed), they are included. See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode components, the

leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

252

The value of Width parameter is calculated using following method:

The Stretch

property is set to false, it's calculated based on the

Module

property value.

The Stretch

property is set to true:

When the Orientation

property is set to " boLeftRight " or " boRightLeft ":

If the

BarcodeWidth property value is greater than zero, it's same to the BarcodeWidth

property value.

If the BarcodeWidth

property value is equal to zero, the LeftMargin

property value will be subtracted from the width of

TImage control that's specified by the

Image

property, then the result will be returned.

If the

BarcodeWidth

property value is less than zero, the LeftMargin

property value, and the absolute value of the negative

BarcodeWidth

property value (i.e. the right margin) will be subtracted from the width of TImage control that's specified by the

Image

property, then the result will be returned.

When the Orientation

property is set to " boTopBottom " or " boBottomTop ":

If the

BarcodeHeight property value is greater than zero, it's same to the BarcodeHieght

property value.

2D Barcode FMX Components User Manual

If the BarcodeHeight

property value is equal to zero, the LeftMargin

property value will be subtracted from the width of

TImage control that's specified by the

Image

property, then the result will be returned.

If the

BarcodeHeight

property value is less than zero, the

LeftMargin property value, and the absolute value of the negative

BarcodeHeight property value (i.e. the right margin) will be subtracted from the width of

TImage control that's specified by the

Image

property, then the result will be returned.

Height

: Single; Returns the vertical height of the rotated barcode symbol that's displyed in the TImage control specified in the

Image

property, in pixels. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

If the quiet zones are displayed (please read the ShowQuietZone

property about whether or not the quiet zones will be displayed), they are included. See diagram (the

SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode components, the

leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

The value of Height is calculated using following method:

The Stretch

property is set to false, it's calculated based on the

Module

property value.

The Stretch

property is set to true:

When the Orientation

property is set to " boLeftRight " or " boRightLeft ":

If the

BarcodeHeight property value is greater than zero, it's same to the BarcodeHeight

property value.

If the BarcodeHeight

property value is equal to zero, the

TopMargin property value will be subtracted from the height of

TImage control that's specified by the

Image

property, then the result will be returned.

If the BarcodeHeight property value is less than zero, the

TopMargin

property value, and the absolute value of the

negative BarcodeHeight

property value (i.e. the bottom margin) will be subtracted from the height of TImage control that's

specified by the Image

property, then the result will be returned.

When the Orientation

property is set to " boTopBottom " or " boBottomTop ":

If the

BarcodeWidth property value is greater than zero, it's same to the BarcodeWidth

property value.

If the BarcodeWidth

property value is equal to zero, the TopMargin

property value will be subtracted from the height of

TImage control that's specified by the

Image

property, then the result will be returned.

If the

BarcodeWidth

property value is less than zero, the

TopMargin

property value, and the absolute value of the negative

BarcodeWidth

property value (i.e. the bottom margin) will be subtracted from the height of TImage control that's specified

by the Image

property, then the result will be returned.

SymbolWidth

: Single; Returns the distance between the leading and trailing of the rotated barcode symbol that's displyed in the

TImage

control specified in the Image

property, in pixels. See diagram (the

SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

253

2D Barcode FMX Components User Manual

If the quiet zones are displayed (please read the ShowQuietZone

property about whether or not the quiet zones will be displayed),

the leading quiet zone

and the trailing quiet zone

are included. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

For the TBarcodeFmx2D_Code16K

barcode components, the

leading quiet zone

and the

trailing quiet zone

are included always,

even if the ShowQuietZone

property is set to false. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

The value of SymbolWidth is calculated using following method:

The Stretch

property is set to false, it's calculated based on the

Module

property value.

The Stretch

property is set to true:

If the

BarcodeWidth property value is greater than zero, it's same to the BarcodeWidth

property value.

If the

BarcodeWidth

property value is equal to zero:

When the Orientation

property is set to " boLeftRight " or " boRightLeft ", the

LeftMargin

property value will be subtracted from the width of TImage

control that's specified by the Image

property, then the result will be returned.

When the Orientation

property is set to " boTopBottom " or " boBottomTop ", the

TopMargin

property value will be subtracted from the height of TImage

control that's specified by the Image

property, then the result will be returned.

If the

BarcodeWidth

property value is less than zero:

When the Orientation

property is set to " boLeftRight " or " boRightLeft ", the

LeftMargin

property value, and the absolute

value of the negative BarcodeWidth

property value (i.e. the right margin) will be subtracted from the width of TImage control that's specified by the

Image

property, then the result will be returned.

When the Orientation

property is set to " boTopBottom " or " boBottomTop

", the TopMargin

property value, and the absolute

value of the negative BarcodeWidth

property value (i.e. the bottom margin) will be subtracted from the height of TImage control that's specified by the

Image

property, then the result will be returned.

See also the "

BarcodeWidth

" property.

SymbolHeight

: Single; Returns the distance between the top and bottom of the rotated barcode symbol that's displyed in the

TImage

control specified in the Image

property, in pixels. See diagram (the

SpaceColor property value is set to

claSilver in order to accentuate the quiet zones):

254

If the quiet zones are displyed (please read the ShowQuietZone

property about whether or not the quiet zones will be displyed),

2D Barcode FMX Components User Manual

the

top quiet zone

and the bottom quiet zone

are included. See diagram (the SpaceColor

property value is set to claSilver in order to accentuate the quiet zones):

The value of SymbolHeight is calculated using following method:

The Stretch

property is set to false, it's calculated based on the

Module

property value.

The Stretch

property is set to true:

If the

BarcodeHeight property value is greater than zero, it's same to the BarcodeHeight

property value.

If the

BarcodeHeight

property value is equal to zero:

When the Orientation

property is set to " boLeftRight " or " boRightLeft

", the TopMargin

property value will be subtracted from the height of TImage

control that's specified by the Image

property, then the result will be returned.

When the Orientation

property is set to " boTopBottom " or " boBottomTop

", the LeftMargin

property value will be subtracted from the width of TImage

control that's specified by the Image

property, then the result will be returned.

If the

BarcodeHeight

property value is less than zero:

When the Orientation

property is set to " boLeftRight " or " boRightLeft ", the

TopMargin

property value, and the absolute value of the negative

BarcodeHeight

property value (i.e. the bottom margin) will be subtracted from the height of TImage

control that's specified by Image

property, then the result will be returned.

When the Orientation

property is set to " boTopBottom " or " boBottomTop

", the LeftMargin

property value, and the absolute

value of the negative BarcodeHeight

property value (i.e. the right margin) will be subtracted from the width of TImage control that's specified by the

Image

property, then the result will be returned.

See also the "

BarcodeHeight

" property.

Return:

If the method succeeds, the return value is true.

If you use the Barcode property to specify the barcode text, when the length of Barcode

property value is invalid, or there is any

invalid character in the Barcode

property value, the return value is false. Corresponding to the OnInvalidLength

event or the

OnInvalidChar event will occur.

If you use the Data

property to specify the barcode text, when the length of

Data

property value is invalid, or there is any invalid

byte value in the Data

property value, the return value is false. Corresponding to the OnInvalidDataLength

event or the

OnInvalidDataChar

event will occur.

B.2 TSaveFmx2D

B.2.1 Assign

Copies a TSaveFmx2D

image saving component from another

TSaveFmx2D

image saving component.

Syntax: procedure

Assign(Source: TPresistent);

override

;

255

2D Barcode FMX Components User Manual

Description:

If the Source parameter is an object created from a subclass of

TSaveFmx2D

component class, and the class is same to current image saving component class, Assign copies all property values and event handles from the source image saving component to current one. If Source is any other type of object, an ESaveFmx2DError exception occurs.

Parameters:

Source

: TPersistent; Specifies the source object.

B.2.2 Create

Creates and initializes a image saving component.

Syntax: constructor

Create(Owner: TComponent);

override

;

Description:

Call Create to instantiate a image saving object at runtime. Image saving components added at design time are created automatically.

Parameters:

Owner

: TComponent; It is the component that is responsible for freeing the image saving component instance. Typically, this is the form. It becomes the value of the Owner property.

B.2.3 Destroy

Disposes of the instance of the image saving object.

Syntax: destructor

Destroy;

override

;

Description:

Destroy is the destructor for an image saving object.

Do not call the destructor directly in an application, instead, call Free . The Free verifies that the image saving object is not nil before it calls Destroy .

B.2.4 Save

Save current barcode symbol in the barcode component to an image file. The barcode component is specified by the Barcode2D

property.

Syntax: function

Save(FilePath: string): Integer;

virtual

;

Description:

256

2D Barcode FMX Components User Manual

The method saves the barcode symbol to an image file. The barcode symbol is defined in the barcode component that's specified by

the Barcode2D

property. Also, the TImage

component isn't required in the Image

property of the barcode component.

An OnSave

event will occur before save the barcode symbol to picture file. And an OnSaved

event will occur after the barcode symbol is saved.

Parameters:

FilePath

: String; Specifies the file path and name for the image file.

Return:

This method can return one of these values (these consts are defined in the pfmxSave2D unit):

ERROR_OK (0)

: The method invocation succeeded.

ERROR_NO_BARCODE_COMPONENT (1)

Barcode2D

property is not link to a barcode component.

ERROR_INVALID_BARCODE (2)

: The method invocation failed, because the length of Barcode

or

Data

property value is invalid in

the barcode component, corresponding to the OnInvalidLength

or

OnInvalidDatalength

event of barcode component will occur. Or

because there is any invalid character in the Barcode

or

Data

property value, corresponding to the OnInvalidChar

or

OnInvalidDataChar

event of barcode component will occur.

the access is denied.

ERROR_UNKNOWN (4)

: The method invocation failed because of othe error.

B.3 TCopyFmx2D

B.3.1 Assign

Copies a TCopyFmx2D component from another TCopyFmx2D

component.

Syntax: procedure

Assign(Source: TPresistent);

override

;

Description:

If the Source

parameter is an object created from a TCopyFmx2D

component class, Assign copies all property values and event handles from the

source TCopyFmx2D

component to current one. If Source is any other type of object, an

EColibboardBarcodeFmx2DError exception occurs.

Parameters:

Source

: TPersistent; Specifies the source object.

B.3.2 Copy

Copy current barcode symbol in the barcode component to clipboard. The barcode component is specified by the

Barcode2D

property.

257

2D Barcode FMX Components User Manual

Syntax: function

Copy: Integer;

virtual

;

Description:

The method copies the barcode symbol to clipboard. The barcode symbol is defined in the barcode component that's specified by the

Barcode2D property. Also, the

TImage component isn't required in the

Image

property of the barcode component.

Return:

This method can return one of these values (these consts are defined in the pfmxCopy2D unit):

ERROR_OK (0)

: The method invocation succeeded.

ERROR_NO_BARCODE_COMPONENT (1)

Barcode2D

property is not link to a barcode component.

ERROR_INVALID_BARCODE (2)

: The method invocation failed, because the length of Barcode

or

Data

property value is invalid in

the barcode component, corresponding to the OnInvalidLength

or

OnInvalidDatalength

event of barcode component will occur. Or

because there is any invalid character in the Barcode

or

Data

property value, corresponding to the OnInvalidChar

or

OnInvalidDataChar

event of barcode component will occur.

ERROR_COPY_BARCODE (3)

: The method invocation failed because of a clipboard write error.

ERROR_UNKNOWN (4)

: The method invocation failed because of othe error.

ERROR_NOT_SUPPORTED (5)

Barcode2D

property.

B.3.3 Create

Creates and initializes a TCopyFmx2D

component.

Syntax: constructor

Create(Owner: TComponent);

override

;

Description:

Call Create

to instantiate a TCopyFmx2D object at runtime. TCopyFmx2D

component added at design time are created automatically.

Parameters:

Owner

: TComponent; It is the component that is responsible for freeing the TCopyFmx2D

component instance. Typically, this is the form. It becomes the value of the Owner property.

B.3.4 Destroy

Disposes of the instance of the TCopyFmx2D

object.

Syntax: destructor

Destroy;

override

;

Description:

258

2D Barcode FMX Components User Manual

Destroy is the destructor for a

TCopyFmx2D

object.

Do not call the destructor directly in an application, instead, call Free . The Free

verifies that the TCopyFmx2D

object is not nil before it calls Destroy .

259

2D Barcode FMX Components User Manual

Annex C. Events

C.1 TBarcodeFmx2D

C.1.1 OnChange

Occurs when the value of Barcode

or Data

property is changed.

Syntax: property

OnChange: TNotifyEvent;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

C.1.2 OnDrawBarcode

Occurs after representing the barcode symbol. Write an OnDrawBarcode event handler to modify the barcode symbol after it was represented.

Syntax: type

{ Defined in the pfmxBarcode2D unit }

TUserWorkArea =

record

WCanvas: TCanvas;

WBarcode: string;

WBarColor: TAlphaColor;

WSpaceColor: TAlphaColor;

WOpacity: Single;

WModule: Single;

WLeftInPixels: Single;

WTopInPixels: Single;

WAngle: Single;

WShowQuietZone: Boolean;

WMirror: Boolean;

WBarcodeData: TBytes;

WBarcodeLength: Integer;

WQuietZoneWidthInModules_Left: Integer;

WQuietZoneWidthInModules_Top: Integer;

WQuietZoneWidthInModules_Right: Integer;

WQuietZoneWidthInModules_Bottom: Integer;

WSymbolZoneWidthInModules: Integer;

WSymbolZoneHeightInModules: Integer;

WTotalWidthInPixels: Single;

260

2D Barcode FMX Components User Manual

WTotalHeightInPixels: Single;

WSymbolZoneOffsetInPixels_Left: Single;

WSymbolZoneOffsetInPixels_Top: Single;

WAlpha: Single;

WOrgin: TPointF;

WDensityRate: Single;

end

;

{ Defined in the pfmxBarcode2D unit }

PUserWorkArea = ^TUserWorkArea;

{ Defined in the pfmxBarcode2D unit }

TOnDrawBarcode =

procedure

(Sender: TObject; Canvas: TCanvas; PWorkArea: PUserWorkArea)

of object

;

property

OnDrawBarcode: TOnDrawBarcode;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

Canvas

: TCanvas; The target canvas, the barcode symbol will be represented in it.

PWorkArea

: PUserWorkArea; It points to the TUserWorkArea

record. The record contains fields defining the barcode symbol. See also the "

TUserWorkArea

" record.

C.1.3 OnEncode

Occurs when the value of Barcode

property is changed and the component is updating its barcode symbol, or one of the following methods is called:

Clear

Draw

Size

DrawTo (Syntax 1)

DrawToSize (Syntax 1)

Print (Syntax 1)

PrintSize (Syntax 1)

DrawTo (Syntax 2)

DrawToSize (Syntax 2)

Print (Syntax 2)

PrintSize (Syntax 2)

GetParity (Syntax 1)

(only for TBarcodeFmx2D_QRCode

)

GetCheckSum (Syntax 1)

(only for TBarcodeFmx2D_PDF417

)

GetCheckSum (Syntax 1)

(only for TBarcodeFmx2D_MicroPDF417

)

By default, the barcode text in string will be encoded in the UTF-8 encoding scheme before generate the barcode symbol (the BOM

isn't included). The method is useful if you want to encode the barcode text in your own encoding scheme. See also the " How to encode the UNICODE text in a 2D barcode symbol " article.

Syntax: type

{ Defined in the pfmxCore2D unit }

TOnEncode =

procedure

(Sender: TObject;

var

Data: TBytes; Barcode: string)

of object

;

261

2D Barcode FMX Components User Manual property

OnEncode: TOnEncode;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

Data

: TBytes; The barcode text that's encoded by your own encoding scheme should be returned in this parameter.

The initial value is the UTF-8 bytes sequence converted from the Barcode parameter below.

Barcode

: String; It is the barcode text in string type (it's an UnicodeString).

Its value is equal to the Barcode

property if the Clear

,

Draw

,

Size

,

DrawTo (syntax 1)

,

DrawToSize (syntax 1)

,

Print (syntax 1)

, or

PrintSize (syntax 1)

method is called or a component is updating its barcode symbol. And the value of the parameter is equal to the Barcode parameter if the

DrawTo (syntax 2)

,

DrawToSize (syntax 2)

, Print (syntax 2)

,

PrintSize (syntax 2)

,

GetParity (syntax 1)

(only for TBarcodeFmx2D_QRCode

), GetCheckSum (syntax 1)

(only for TBarcodeFmx2D_PDF417

), or

GetCheckSum (syntax 1)

(only for TBarcodeFmx2D_MicroPDF417

) method is called.

Note:

The event doesn't occur when one of the following methods is called:

DrawTo (syntax 3)

DrawToSize (syntax 3)

Print (syntax 3)

PrintSize (syntax 3)

GetParity (syntax 2)

(only for

TBarcodeFmx2D_QRCode

)

GetCheckSum (syntax 2)

(only for TBarcodeFmx2D_PDF417

)

GetCheckSum (syntax 2)

(only for TBarcodeFmx2D_MicroPDF417

)

C.1.4 OnInvalidChar

Occurs if there is any invalid character in the

Barcode

property value.

Syntax: type

{ Defined in the pfmxBarcode2D unit }

TOnInvalidChar =

procedure

(Sender: TObject; Index: Integer; BarcodeChar: Char; LinearFlag:

Boolean)

of object

;

property

OnInvalidChar: TOnInvalidChar;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

Index

: Integer; The index position of first invalid character in the barcode text that is specified by the Barcode

property.

For 32-bit windows, 64-bit windows, and Mac OSX platform, the index 1 denotes that the first character is invalid character. For iOS and Android platform, the index 0 denotes that the first character is invalid character.

If you use

the OnEncode

event to encode the barcode text in your own encoding scheme, the value

Verify_InvalidIndex_BeforeBarcode (-3) denotes that the prefix codes (for example the BOM) is invalid, the value

Verify_InvalidIndex_AfterBarcode (-4) denotes that the suffix codes is invalid. These consts are defined in the pfmxCore2D unit.

BarcodeChar

: Char; The first invalid character in the barcode text that is specified by the Barcode

property. The character is a

WideChar.

262

2D Barcode FMX Components User Manual

LinearFlag

: Bolean; The parameter is reserved for future use.

Note:

If the Locked

property is set to false, the event occurs when any component property is changed to cause the barcode is redrew,

or when the Draw

,

Clear

,

Size

,

DrawTo (Syntax 1) ,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize (Syntax 1)

method is

called. Even if the Image

property isn't specified.

If the Locked property is set to true, the event occurs when the Locked

property is set to false to cause the barcode is redrew, or the

Draw ,

Clear

,

Size

, DrawTo (Syntax 1)

,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize (Syntax 1)

method is called. Even

if the Image

property isn't specified.

C.1.5 OnInvalidDataChar

The event occurs if there is any invalid byte value in the

Data

property value.

Syntax: type

{ Defined in the pfmxBarcode2D unit }

TOnInvalidChar =

procedure

(Sender: TObject; Index: Integer; DataChar: Byte; LinearFlag: Boolean)

of object

;

property

OnInvalidChar: TOnInvalidChar;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

Index

: Integer; The index position of first invalid byte in the barcode text that is specified by the Data

property, the index 0 denotes that the first byte is invalid byte.

DataChar

: Byte; The first invalid byte value in the barcode data that is specified by the Data

property.

LinearFlag

: Bolean; The parameter is reserved for future use.

Note:

If the Locked

property is set to false, the event occurs when any component property is changed to cause the barcode is redrew,

or when the Draw

,

Clear

,

Size

,

DrawTo (Syntax 1) ,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize (Syntax 1)

method is

called. Even if the Image

property isn't specified.

If the Locked property is set to true, the event occurs when the Locked

property is set to false to cause the barcode is redrew, or the

Draw ,

Clear

,

Size

, DrawTo (Syntax 1)

,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize (Syntax 1)

method is called. Even

if the Image

property isn't specified.

C.1.6 OnInvalidDataLength

The event occurs when the length of the Data property value is invalid.

Syntax: type

{ Defined in the pfmxBarcode2D unit }

TOnInvalidDataLength =

procedure

(Sender: TObject; Data: TBytes; LinearFlag: Boolean)

of object

;

263

2D Barcode FMX Components User Manual property

OnInvalidDataLength: TOnInvalidDataLength;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

Data

: TBytes; The invalid value of the Data

property.

LinearFlag

: Bolean; The parameter is reserved for future use.

Note:

In general, it occurs when the length of barcode text exceeds the maximum length limit. For the TBarcodeFmx2D_RSSLimited

,

TBarcodeFmx2D_RSS14

, and

TBarcodeFmx2D_AztecRunes

components, if the Data

property value is an empty array, the event occurs too.

If the Locked

property is set to false, the event occurs when any component property is changed to cause the barcode is redrew,

or when the Draw

,

Clear

,

Size

,

DrawTo (Syntax 1) ,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize (Syntax 1)

method is

called. Even if the Image

property isn't specified.

If the Locked property is set to true, the event occurs when the Locked

property is set to false to cause the barcode is redrew, or the

Draw ,

Clear

,

Size

, DrawTo (Syntax 1)

,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize (Syntax 1)

method is called. Even

if the Image

property isn't specified.

C.1.7 OnInvalidLength

Occurs when the length of the Barcode

property value is invalid.

Syntax: type

{ Defined in the pfmxBarcode2D unit }

TOnInvalidLength =

procedure

(Sender: TObject; Barcode: string; LinearFlag: Boolean)

of object

;

property

OnInvalidLength: TOnInvalidLength;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

Barcode

: String; The invalid value of the Barcode

property.

LinearFlag

: Bolean; The parameter is reserved for future use.

Note:

In general, it occurs when the length of barcode text exceeds the maximum length limit. For the TBarcodeFmx2D_RSSLimited

,

TBarcodeFmx2D_RSS14

, and TBarcodeFmx2D_AztecRunes

components, if the Barcode

property value is an empty string, the event occurs too.

If the Locked

property is set to false, the event occurs when any component property is changed to cause the barcode is redrew,

or when the Draw

,

Clear

,

Size

,

DrawTo (Syntax 1) ,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize (Syntax 1)

method is

called. Even if the Image

property isn't specified.

If the Locked property is set to true, the event occurs when the Locked

property is set to false to cause the barcode is redrew, or the

Draw ,

Clear

,

Size

, DrawTo (Syntax 1)

,

DrawToSize (Syntax 1)

,

Print (Syntax 1)

, or PrintSize (Syntax 1)

method is called. Even

if the Image

property isn't specified.

264

2D Barcode FMX Components User Manual

C.1.8 ParseBarcodeIndex

If you use the OnEncode event handle to encode the barcode text in your own encoding scheme, the event occurs if there is any

invalid character in the value of Barcode

property or Barcode parameter:

When the

Clear

, Draw

,

Size

,

DrawTo (syntax 1)

, DrawToSize (syntax 1)

,

Print (syntax 1)

, or

PrintSize (syntax 1)

method is called or a component is updating its barcode symbol, the event occurs if there is any invalid character in the value of

Barcode property.

When the DrawTo (syntax 2)

,

DrawToSize (syntax 2) ,

Print (syntax 2)

,

PrintSize (syntax 2)

,

GetParity (syntax 1)

(only for

TBarcodeFmx2D_QRCode

), GetCheckSum (syntax 1)

(only for TBarcodeFmx2D_PDF417

), or

GetCheckSum (syntax 1)

(only for

TBarcodeFmx2D_MicroPDF417

) method is called, the event occurs if there is any invalid character in the value of their Barcode parameter.

Syntax: type

{ Defined in the pfmxCore2D unit }

TParseBarcodeIndex =

function

(Sender: TObject; Barcode: string; EncodedData: TBytes;

InvalidEncodedDataIndex: Integer): Integer

of object

;

property

ParseBarcodeIndex: TParseBarcodeIndex;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

Barcode

: String; It is the barcode text in string type (it's an UnicodeString).

Its value is equal to the Barcode

property if the Clear

,

Draw

,

Size

,

DrawTo (syntax 1)

,

DrawToSize (syntax 1)

,

Print (syntax 1)

, or

PrintSize (syntax 1)

method is called or a component is updating its barcode symbol. And the value of the parameter is equal to the Barcode parameter if the

DrawTo (syntax 2)

,

DrawToSize (syntax 2)

, Print (syntax 2)

,

PrintSize (syntax 2)

,

GetParity (syntax 1)

(only for TBarcodeFmx2D_QRCode

), GetCheckSum (syntax 1)

(only for TBarcodeFmx2D_PDF417

), or

GetCheckSum (syntax 1)

(only for TBarcodeFmx2D_MicroPDF417

) method is called.

EncodedData

: TBytes; The barcode text that's encoded by your own encoding scheme. It's equla the Data parameter value of the

OnEncode

event handle.

InvalidEncodedDataIndex

: Integer; The index position of first invalid byte in the value of EncodedData parameter above. The index 0 denotes that the first byte value is invalid byte.

Return:

The index position of first invalid character in the value of Barcode parameter above should be returned. Please calculate it according to the values of EncodedData and InvalidEncodedDataIndex parameters above, and the encoding algorithm in your

OnEncode event

handle.

If the invalid byte value is in the prefix codes (for example the BOM), please return the value Verify_InvalidIndex_BeforeBarcode (-3). If the invalid byte value is in the suffix codes, please return the value Verify_InvalidIndex_AfterBarcode (-4). These consts are defined in the pfmxCore2D unit.

Note:

The event handle is not required if the value of Index

parameter is correct in the OnInvalidChar

event handle.

C.2 TSaveFmx2D

C.2.1 OnSave

265

2D Barcode FMX Components User Manual

Occurs before save the barcode symbol to an image file, when the Save

method is called.

Syntax: type

{ Defined in the pfmxSave2D unit }

TOnSave =

procedure

(Sender: TComponent;

var

FilePath: string;

var

Continue: Boolean)

of object

;

property

OnSave: TOnSave;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

FilePath

: string; The file path and name of the image file that you want to save the barcode symbol to. You can change the parameter value in the event handle.

Continue

: Boolean; Specifies whether to save the barcode symbol to an image file. By default, its value is true. Changing it to false will cancel the saving operation, in this case, the

OnSaved

event will not be occurred.

C.2.2 OnSaved

Occurs after save the barcode symbol to an image file, when the Save

method is called.

Syntax: type

{ Defined in the pfmxSave2D unit }

TOnSaved =

procedure

(Sender: TComponent; FilePath: string; ErrorCode: Integer)

of object

;

property

OnSaved: TOnSaved;

Parameters:

Sender

: TObject; It is the object whose event handler is called.

FilePath

: string; The file path and name of the image file that you want to save the barcode symbol to.

ErrorCode

: Integer; Return the error status code of the saving operation. The Save

method will return the error code value too. It can be one of these value (these consts are defined in the pfmxSave2D unit):

ERROR_OK (0)

: The saving operation succeeded.

ERROR_NO_BARCODE_COMPONENT (1)

Barcode2D property is not link to a

barcode component.

ERROR_INVALID_BARCODE (2)

: The saving operation failed, because the length of Barcode

or

Data

property value is invalid

in the barcode component, corresponding to the OnInvalidLength

or OnInvalidDatalength

event of barcode component will

occur. Or because there is any invalid character in the Barcode

or Data

property value, corresponding to the OnInvalidChar

or

OnInvalidDataChar

event of barcode component will occur.

or the access is denied.

ERROR_UNKNOWN (4)

: The saving operation failed because of othe error.

266

2D Barcode FMX Components User Manual

3.1.2.713 2015-12-11

Copyright © 2001-2015 Han-soft Corporation. All rights reserved.

advertisement

Was this manual useful for you? Yes No
Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Related manuals

Download PDF

advertisement