Vous êtes sur la page 1sur 752

Actuate Foundation Class Reference

Information in this document is subject to change without notice. Examples provided


are fictitious. No part of this document may be reproduced or transmitted in any
form, or by any means, electronic or mechanical, for any purpose, in whole or in part,
without the express written permission of Actuate Corporation.
1995 - 2002 by Actuate Corporation. All rights reserved. Printed in the United
States of America.
Contains information proprietary to:
Actuate Corporation
701 Gateway Boulevard
South San Francisco, CA 94080
http://www.actuate.com
The software described in this manual is provided by Actuate Corporation under an
Actuate License agreement. The software may be used only in accordance with the
terms of the agreement.
Actuate Corporation trademarks and registered trademarks:
Actuate, e.Analysis, e.Report, e.Reporting, e.Spreadsheet, Formula One,
Internet Spreadsheet, Live Report Extension, ReportCast, Report Encyclopedia,
SmartReports, Spreadsheets Everywhere, Tidestone, and XML reports.
Third party trademarks:
ActiveX, Microsoft, Microsoft Access, Microsoft Excel, MS, MS-DOS, MSN, The
Microsoft Network, Windows, Windows 98, Windows 2000, Windows ME,
Windows NT, Windows XP, and/or other Microsoft products are either trademarks or
registered trademarks of Microsoft. Crimson, Tomcat, Xalan, and Xerces are either
trademarks or registered trademarks of Apache Software Foundation. Actuate
products include software developed by the Apache Software Foundation
<http://www.apache.org/>. CT-Library is a trademark of Sybase, Inc. Databeacon is a
trademark of Databeacon, Inc. Digital Creations and DCLC, are trademarks of Digital
Creations, LC. Graphics Server is a trademark of Bits Per Second, Ltd. and Pinnacle
Publishing, Inc. HTML Tidy and tidy.c are either trademarks or registered trademarks
of World Wide Web Consortium. ICU and Lotus 1-2-3 are trademarks or registered
trademarks of IBM Corporation. INFORMIX-ESQL/C is a trademark of Informix
Software, Inc. InstallAnywhere is a trademark or registered trademark of Zero G
Software, Inc. InstallShield is a registered trademark of InstallShield Corporation.
iPlanet, Java and 100% Pure Java, ONC, Solaris, SPARC, Sun, and Sun Microsystems
are either trademarks or registered trademarks of Sun Microsystems, Inc. iText is a
trademark or registered trademark of Bruno Lowagie and Paulo Soares. JBuilder is a
registered trademark of Inprise Corp. LEADTOOLS is a registered trademark of
LEAD Technologies, Inc. Netscape, Netscape Communications, Netscape
Communicator, Netscape Enterprise Server, and Netscape Navigator are either
trademarks or registered trademarks of Netscape Communications Corporation.
NobleNet RPC and Rogue Wave SourcePro are either trademarks or registered
trademarks of Rogue Wave Software, Inc. Oracle Call Interface is a trademark of
Oracle Corporation. Progress is a registered trademark of Progress Software
Corporation. TrueType is a registered trademark of Apple Computer, Inc. Unicode is
a registered trademark of Unicode, Inc. UNIX is a registered trademark of X/Open
Company, Ltd. Visual Cafe is a registered trademark of Symantec Corporation.
WebWorks is a registered trademark of Quadralay Corporation. XPrinter is a
trademark of Bristol Technology, Inc. XPAT, created by James Clark, is licensed under
the Mozilla license agreement.
All other brand or product names are trademarks or registered trademarks of their
respective companies or organizations.

Document No. 020515-2-130321 May 6, 2002

Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi
About Actuate e.Reporting Suite 6 . . . . . . . . . . . . .
About Actuate e.Report Designer Professional product .
About the Actuate Foundation Class Reference . . . . . . .
Online documentation. . . . . . . . . . . . . . . . . . . .
Using online manuals . . . . . . . . . . . . . . . . . .
Online help . . . . . . . . . . . . . . . . . . . . . . . .
Using context-sensitive online help . . . . . . . . .
Using the Actuate online help system. . . . . . . .
Using report-specific online help . . . . . . . . . .
Typographical conventions . . . . . . . . . . . . . . . . .
Syntax conventions . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

. . xxi
. . xxv
. xxvii
.xxviii
.xxviii
.xxviii
.xxviii
. xxix
. xxxi
. xxxi
. xxxii

Chapter 1

The Actuate Foundation Class library. . . . . . . . . . . . . . . . . . . . . . . 1


Summary of classes and methods . . .
Report section classes and methods
Page layout classes and methods . .
Control classes and methods . . . .
Connection classes and methods . .
Collection classes and methods . . .
Data stream classes and methods . .
Excel classes and methods . . . . . .
Internal tools classes and methods .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

. 4
. 4
. 11
.17
.25
.29
.30
.33
.35

Chapter 2

AFC data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41


About the AFC data types
AcAutoSplit. . . . . . . . .
AcBitmapStyle . . . . . . .
AcChartAxisOrigin . . . .
AcChartBarGrouping . . .
AcChartBarOrientation . .
AcChartBorderStyle . . . .
AcChartHLCBarStyle . . .
AcChartLegendPosition . .
AcChartLinePen . . . . . .
AcChartLineStyle . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.42
.44
.45
.45
.45
.46
.46
.47
.47
.48
.48

AcChartPointLabelStyle . . . . . . . .
AcChartRoundTo . . . . . . . . . . . .
AcChartTickStyle . . . . . . . . . . . .
AcChartType . . . . . . . . . . . . . .
AcChartUnitType. . . . . . . . . . . .
AcChartXAxisPosition . . . . . . . . .
AcChartXValueSet . . . . . . . . . . .
AcChartXLabelStyle . . . . . . . . . .
AcChartYAxisPosition . . . . . . . . .
AcChartYLabelStyle . . . . . . . . . .
AcChartYOrientation . . . . . . . . .
AcColor . . . . . . . . . . . . . . . . .
Considerations for HTML reports .
AcControlValueType . . . . . . . . . .
AcCursorShape . . . . . . . . . . . . .
AcExcelBorder . . . . . . . . . . . . .
AcExcelBorderType . . . . . . . . . .
AcExcelBorderName . . . . . . . . . .
AcExcelHorizontalAlignment. . . . .
AcExcelVerticalAlignment. . . . . . .
AcFlowPlacement . . . . . . . . . . .
AcFont . . . . . . . . . . . . . . . . . .
Considerations for HTML reports .
AcGraphAxisStyle . . . . . . . . . . .
AcGraphBarGrouping . . . . . . . . .
AcGraphBarOrientation . . . . . . . .
AcGraphBorderStyle . . . . . . . . . .
AcGraphLabelStyle. . . . . . . . . . .
AcGraphLegendPosition . . . . . . .
AcGraphLineStyle . . . . . . . . . . .
AcGraphPoint. . . . . . . . . . . . . .
AcGraphPointLabelStyle . . . . . . .
AcGraphTickStyle . . . . . . . . . . .
AcGraphType . . . . . . . . . . . . . .
AcGraphXAxisPosition . . . . . . . .
AcGraphXValueSet . . . . . . . . . . .
AcGraphYAxisPosition . . . . . . . .
AcGraphYOrientation . . . . . . . . .
AcGroupOnType . . . . . . . . . . . .
AcHtmlBackgroundStyle . . . . . . .
AcHtmlFrameStyle . . . . . . . . . . .
AcHtmlHorizontalAlignment. . . . .
AcHtmlImageAlignment . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

ii

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

49
49
50
50
51
51
52
52
52
53
53
54
54
55
55
56
56
57
57
58
58
59
59
60
61
61
62
62
63
63
64
64
65
65
66
66
67
67
67
68
68
69
70

AcHtmlImageMapType . . .
AcHtmlPlugInUnits . . . . .
AcHtmlTableCaptionStyle .
AcHtmlTableStyle . . . . . .
AcHtmlTextAlignment . . .
AcHtmlTextVertAlignment .
AcHtmlTocStyle . . . . . . .
AcHtmlUnits . . . . . . . . .
AcImageEmbedType. . . . .
AcLinePen . . . . . . . . . .
AcLineStyle . . . . . . . . . .
AcMargins . . . . . . . . . .
AcOffset . . . . . . . . . . . .
AcPageNumberStyle . . . .
AcPercentage . . . . . . . . .
AcPoint . . . . . . . . . . . .
AcRectangle . . . . . . . . .
AcRounding . . . . . . . . .
AcSearchType . . . . . . . .
AcShadow . . . . . . . . . .
AcShiftKeyState . . . . . . .
AcSize . . . . . . . . . . . . .
AcTextClipStyle . . . . . . .
AcTextFormat. . . . . . . . .
AcTextJustify . . . . . . . . .
AcTextPlacement . . . . . . .
AcTextVerticalPlacement . .
AcTOCNodeType . . . . . .
AcTwips . . . . . . . . . . . .
AcVerticalPosition . . . . . .
AcVerticalSize . . . . . . . .
AcWordWrapStyle . . . . . .
AcXMLType . . . . . . . . .
ViewContext . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.71
.71
.71
.72
.72
.72
.73
.73
.74
.74
.75
.75
.76
.76
.77
.77
.78
.78
.79
.79
.80
.80
.80
.81
.81
.82
.82
.83
.83
.84
.85
.85
.86
.86

Chapter 3

AFC classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Class AcBaseFrame . . . . . . . . . . . . . . .
Factory protocol. . . . . . . . . . . . . . . .
Preparing the frame or page . . . . . . . . .
Building the frame or page . . . . . . . . .
Subclassing AcBaseFrame . . . . . . . . . .
AcBaseFrame::AddToAdjustSizeList method.

.
.
.
.
.
.

.
.
.
.
.
.

iii

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.88
.88
.89
.89
.89
.91

AcBaseFrame::AdjustContentVerticalGeometry method
AcBaseFrame::BindToFlow method . . . . . . . . . . . .
AcBaseFrame::FindContentByClass method . . . . . . .
AcBaseFrame::FindContentByClassID method . . . . . .
AcBaseFrame::GetControl method . . . . . . . . . . . . .
AcBaseFrame::GetControlValue method. . . . . . . . . .
AcBaseFrame::GetPageNumber method. . . . . . . . . .
AcBaseFrame::MakeContents method . . . . . . . . . . .
AcBaseFrame::RebindToFlow method . . . . . . . . . . .
AcBaseFrame::SplitContents method . . . . . . . . . . .
AcBaseFrame::SplitFrame method . . . . . . . . . . . . .
Class AcBasePage . . . . . . . . . . . . . . . . . . . . . .
AcBasePage::ResizeBy method . . . . . . . . . . . . . . .
Class AcBrowserScriptingControl. . . . . . . . . . . . .
AcBrowserScriptingControl::BrowserCode method . . .
AcBrowserScriptingControl::GetText method. . . . . . .
Class AcBTree . . . . . . . . . . . . . . . . . . . . . . . .
AcBTree::CreateNode method . . . . . . . . . . . . . . .
AcBTree::Find method . . . . . . . . . . . . . . . . . . . .
AcBTree::FindOrCreate method . . . . . . . . . . . . . .
AcBTree::GetKey method . . . . . . . . . . . . . . . . . .
AcBTree::Insert method . . . . . . . . . . . . . . . . . . .
Class AcChart . . . . . . . . . . . . . . . . . . . . . . . .
AcChart::CalculateEndingValue method . . . . . . . . .
AcChart::CalculateRangeUnit method . . . . . . . . . . .
AcChart::CalculateStartingValue method . . . . . . . . .
AcChart::CalculateTickIntervalUnit method . . . . . . .
AcChart::ComputeDualYMinMax method . . . . . . . .
AcChart::ComputeLabels method . . . . . . . . . . . . .
AcChart::ComputeMinMax method . . . . . . . . . . . .
AcChart::CustomDualYLabels method . . . . . . . . . .
AcChart::FormatDualYLabel method . . . . . . . . . . .
AcChart::FormatXLabel method . . . . . . . . . . . . . .
AcChart::FormatYLabel method . . . . . . . . . . . . . .
AcChart::GetSeriesKey method. . . . . . . . . . . . . . .
Class AcCollection. . . . . . . . . . . . . . . . . . . . . .
AcCollection::NewIterator method. . . . . . . . . . . . .
AcCollection::RemoveAll method . . . . . . . . . . . . .
AcCollection::Remove method . . . . . . . . . . . . . . .
AcCollection::IsEmpty method . . . . . . . . . . . . . . .
AcCollection::GetCount method . . . . . . . . . . . . . .
Class AcComponent . . . . . . . . . . . . . . . . . . . . .
AcComponent::Delete method . . . . . . . . . . . . . . .

iv

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 92
. 92
. 93
. 94
. 95
. 95
. 96
. 96
. 96
. 97
. 97
. 101
. 102
. 103
. 105
. 105
. 107
. 108
. 108
. 109
. 109
. 110
. 111
. 133
. 133
. 133
. 134
. 134
. 134
. 135
. 135
. 136
. 136
. 137
. 137
. 138
. 139
. 139
. 140
. 141
. 141
. 142
. 143

AcComponent::GetContentName method . . . . .
AcComponent::IsPersistent method . . . . . . . . .
AcComponent::New method . . . . . . . . . . . . .
AcComponent::NewComponent method . . . . . .
AcComponent::NewPersistentComponent method
Class AcConditionalSection . . . . . . . . . . . . .
AcConditionalSection::ConditionIsTrue method . .
Class AcConnection. . . . . . . . . . . . . . . . . .
AcConnection::Connect method . . . . . . . . . . .
AcConnection::Disconnect method . . . . . . . . .
AcConnection::IsConnected method. . . . . . . . .
AcConnection::RaiseError method . . . . . . . . . .
Class AcControl . . . . . . . . . . . . . . . . . . . .
AcControl::BalloonHelp method . . . . . . . . . . .
AcControl::GetControlValue method . . . . . . . .
AcControl::GetHtmlText method. . . . . . . . . . .
AcControl::GetText method. . . . . . . . . . . . . .
AcControl::GetValue method . . . . . . . . . . . . .
AcControl::PageNo method . . . . . . . . . . . . .
AcControl::PageNo$ method . . . . . . . . . . . . .
AcControl::SetDataValue method . . . . . . . . . .
AcControl::SetValue method . . . . . . . . . . . . .
Class AcCurrencyControl . . . . . . . . . . . . . .
Class AcDataAdapter . . . . . . . . . . . . . . . . .
AcDataAdapter::AddRow method. . . . . . . . . .
AcDataAdapter::AddSortKey method. . . . . . . .
AcDataAdapter::CanSeek method . . . . . . . . . .
AcDataAdapter::CanSortDynamically method. . .
AcDataAdapter::CloseConnection method . . . . .
AcDataAdapter::Fetch method . . . . . . . . . . . .
AcDataAdapter::Finish method . . . . . . . . . . .
AcDataAdapter::FlushBuffer method . . . . . . . .
AcDataAdapter::FlushBufferTo method. . . . . . .
AcDataAdapter::GetConnection method . . . . . .
AcDataAdapter::GetPosition method . . . . . . . .
AcDataAdapter::IsStarted method . . . . . . . . . .
AcDataAdapter::NewConnection method . . . . .
AcDataAdapter::NewDataRow method. . . . . . .
AcDataAdapter::OpenConnection method . . . . .
AcDataAdapter::Rewind method . . . . . . . . . .
AcDataAdapter::SeekBy method . . . . . . . . . . .
AcDataAdapter::SeekTo method . . . . . . . . . . .
AcDataAdapter::SeekToEnd method . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 143
. 144
. 144
. 145
. 145
. 147
. 148
. 150
. 151
. 151
. 151
. 152
. 153
. 155
. 155
. 156
. 157
. 157
. 157
. 158
. 158
. 159
. 161
. 162
. 165
. 165
. 166
. 166
. 167
. 167
. 170
. 171
. 171
. 171
. 172
. 172
. 172
. 173
. 173
. 174
. 175
. 175
. 176

AcDataAdapter::SetConnection method. . . . . . .
AcDataAdapter::Start method . . . . . . . . . . . .
Class AcDatabaseSource . . . . . . . . . . . . . . .
AcDatabaseSource::BindDataRow method . . . . .
AcDatabaseSource::BindStaticParameters method .
AcDatabaseSource::GetCursor method . . . . . . .
AcDatabaseSource::GetDBConnection method . . .
AcDatabaseSource::OpenCursor method . . . . . .
Class AcDataControl . . . . . . . . . . . . . . . . .
AcDataControl::Format method . . . . . . . . . . .
AcDataControl::GetGroupKey method . . . . . . .
AcDataControl::IsSummary method . . . . . . . . .
AcDataControl::SetTocEntry method . . . . . . . .
Class AcDataFilter . . . . . . . . . . . . . . . . . . .
Class AcDataFrame . . . . . . . . . . . . . . . . . .
Class AcDataRow . . . . . . . . . . . . . . . . . . .
AcDataRow::GetValue method . . . . . . . . . . . .
AcDataRow::OnRead method. . . . . . . . . . . . .
AcDataRow::SetValue method . . . . . . . . . . . .
Class AcDataSection . . . . . . . . . . . . . . . . .
AcDataSection::GetAfter method . . . . . . . . . . .
AcDataSection::GetBefore method . . . . . . . . . .
AcDataSection::GetFirstPageFooter method . . . .
AcDataSection::GetFirstPageHeader method . . . .
AcDataSection::GetPageFooter method . . . . . . .
AcDataSection::GetPageHeader method . . . . . .
AcDataSection::NewAfter method . . . . . . . . . .
AcDataSection::NewBefore method . . . . . . . . .
AcDataSection::NewContent method . . . . . . . .
AcDataSection::NewPageFooter method . . . . . .
AcDataSection::NewPageHeader method . . . . . .
AcDataSection::OnEmptyGroup method . . . . . .
Class AcDataSource . . . . . . . . . . . . . . . . . .
AcDataSource::HasFetchedLast method . . . . . . .
Class AcDateTimeControl . . . . . . . . . . . . . .
Class AcDBConnection . . . . . . . . . . . . . . . .
AcDBConnection::GetGeneralError method . . . .
AcDBConnection::GetGeneralErrorText method . .
AcDBConnection::GetSpecificError method. . . . .
AcDBConnection::GetSpecificErrorText method . .
AcDBConnection::Prepare method . . . . . . . . . .
Class AcDB2Connection . . . . . . . . . . . . . . .
Class AcDBCursor . . . . . . . . . . . . . . . . . . .

vi

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 176
. 176
. 178
. 179
. 180
. 181
. 181
. 182
. 183
. 187
. 187
. 188
. 188
. 189
. 190
. 192
. 194
. 197
. 198
. 199
. 205
. 205
. 206
. 206
. 207
. 207
. 207
. 208
. 208
. 209
. 210
. 210
. 211
. 212
. 213
. 214
. 215
. 216
. 217
. 217
. 218
. 219
. 222

AcDBCursor::BindColumn method . . . . . . . . . . . . . . . . .
AcDBCursor::BindParameter method . . . . . . . . . . . . . . . .
AcDBCursor::CloseCursor method . . . . . . . . . . . . . . . . .
AcDBCursor::DefineProcedureInputParameter method . . . . .
AcDBCursor::DefineProcedureOutputParameter method . . . .
AcDBCursor::DefineProcedureReturnParameter method . . . . .
AcDBCursor::Fetch method. . . . . . . . . . . . . . . . . . . . . .
AcDBCursor::GetConnection method . . . . . . . . . . . . . . . .
AcDBCursor::GetOutputParameter method . . . . . . . . . . . .
AcDBCursor::GetProcedureStatus method . . . . . . . . . . . . .
AcDBCursor::GetStatement method . . . . . . . . . . . . . . . . .
AcDBCursor::IsOpen method . . . . . . . . . . . . . . . . . . . .
AcDBCursor::OpenCursor method . . . . . . . . . . . . . . . . .
AcDBCursor::StartNextSet method . . . . . . . . . . . . . . . . .
Class AcDBStatement. . . . . . . . . . . . . . . . . . . . . . . . .
AcDBStatement::AllocateCursor method . . . . . . . . . . . . . .
AcDBStatement::BindParameter method . . . . . . . . . . . . . .
AcDBStatement::DefineProcedureInputParameter method. . . .
AcDBStatement::DefineProcedureOutputParameter method. . .
AcDBStatement::DefineProcedureReturnParameter method . . .
AcDBStatement::Execute method . . . . . . . . . . . . . . . . . .
AcDBStatement::GetOutputCount method . . . . . . . . . . . . .
AcDBStatement::GetOutputParameter method . . . . . . . . . .
AcDBStatement::GetParameterCount method . . . . . . . . . . .
AcDBStatement::GetProcedureStatus method . . . . . . . . . . .
AcDBStatement::GetStatementText method . . . . . . . . . . . .
AcDBStatement::OpenCursor method. . . . . . . . . . . . . . . .
AcDBStatement::Prepare method . . . . . . . . . . . . . . . . . .
Class AcDetailChart . . . . . . . . . . . . . . . . . . . . . . . . .
AcDetailChart::AddPoint method . . . . . . . . . . . . . . . . . .
AcDetailChart::AddSeriesPoint method. . . . . . . . . . . . . . .
AcDetailChart::CustomXLabels method . . . . . . . . . . . . . .
Class AcDetailGraph . . . . . . . . . . . . . . . . . . . . . . . . .
AcDetailGraph::AddSeriesPoint method . . . . . . . . . . . . . .
AcDetailGraph::CustomXLabels method . . . . . . . . . . . . . .
Class AcDoubleControl . . . . . . . . . . . . . . . . . . . . . . .
Class AcDynamicTextControl . . . . . . . . . . . . . . . . . . . .
AcDynamicTextControl::BuildText method . . . . . . . . . . . . .
AcDynamicTextControl::GetAvailableHeight method. . . . . . .
AcDynamicTextControl::GetAvailableWidth method . . . . . . .
AcDynamicTextControl::GetFixedWidthFontFaceName method
AcDynamicTextControl::GetPlaintext method . . . . . . . . . . .
AcDynamicTextControl::GetTaggedText method . . . . . . . . .

vii

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 224
. 225
. 226
. 226
. 227
. 228
. 228
. 229
. 229
. 230
. 230
. 230
. 231
. 232
. 234
. 236
. 237
. 238
. 239
. 240
. 241
. 242
. 242
. 244
. 244
. 245
. 245
. 246
. 247
. 248
. 248
. 249
. 250
. 251
. 252
. 253
. 254
. 260
. 261
. 261
. 261
. 261
. 262

AcDynamicTextControl::GetText method . . . . . . . . . . . .
AcDynamicTextControl::KeepTaggedText method . . . . . . .
AcDynamicTextControl::LineSpacing method . . . . . . . . .
AcDynamicTextControl::LineWidthPadding method . . . . .
AcDynamicTextControl::MinimumLineHeight method . . . .
AcDynamicTextControl::ProcessText method . . . . . . . . . .
AcDynamicTextControl::SetTaggedText method . . . . . . . .
AcDynamicTextControl::SpaceBetweenLines method . . . . .
AcDynamicTextControl::SpaceBetweenParagraphs method .
AcDynamicTextControl::TabPadding method . . . . . . . . .
AcDynamicTextControl::TabSpacing method . . . . . . . . . .
AcDynamicTextControl::TextFormat method . . . . . . . . . .
AcDynamicTextControl::WidowAndOrphanControl method.
Class AcEllipseControl . . . . . . . . . . . . . . . . . . . . . .
Class AcExcelApp . . . . . . . . . . . . . . . . . . . . . . . . .
AcExcelApp::AddWorkbook method . . . . . . . . . . . . . .
AcExcelApp::DeleteWorkbook method . . . . . . . . . . . . .
AcExcelApp::FindWorkbook method . . . . . . . . . . . . . .
AcExcelApp::New method . . . . . . . . . . . . . . . . . . . .
AcExcelApp::SetFontScalingFactor method . . . . . . . . . . .
Class AcExcelCell . . . . . . . . . . . . . . . . . . . . . . . . .
Class AcExcelColumn . . . . . . . . . . . . . . . . . . . . . . .
AcExcelColumn::GetColumnWidth method . . . . . . . . . .
AcExcelColumn::SetColumnWidth method . . . . . . . . . . .
Class AcExcelRange . . . . . . . . . . . . . . . . . . . . . . . .
AcExcelRange::GetBackgroundColor method . . . . . . . . .
AcExcelRange::GetBorder method . . . . . . . . . . . . . . . .
AcExcelRange::GetFont method . . . . . . . . . . . . . . . . .
AcExcelRange::GetHorizontalAlignment method . . . . . . .
AcExcelRange::GetIndent method . . . . . . . . . . . . . . . .
AcExcelRange::GetMergeCells method . . . . . . . . . . . . .
AcExcelRange::GetNumberFormat method . . . . . . . . . . .
AcExcelRange::GetValue method. . . . . . . . . . . . . . . . .
AcExcelRange::GetValueAsDate method . . . . . . . . . . . .
AcExcelRange::GetVerticalAlignment method . . . . . . . . .
AcExcelRange::GetWrapText method . . . . . . . . . . . . . .
AcExcelRange::SetBackgroundColor method . . . . . . . . . .
AcExcelRange::SetBorder method . . . . . . . . . . . . . . . .
AcExcelRange::SetFont method. . . . . . . . . . . . . . . . . .
AcExcelRange::SetHorizontalAlignment method . . . . . . .
AcExcelRange::SetIndent method . . . . . . . . . . . . . . . .
AcExcelRange::SetNumberFormat method . . . . . . . . . . .
AcExcelRange::SetValue method . . . . . . . . . . . . . . . . .

viii

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 262
. 262
. 262
. 263
. 263
. 263
. 263
. 264
. 264
. 264
. 264
. 265
. 265
. 266
. 268
. 268
. 269
. 269
. 270
. 270
. 272
. 273
. 273
. 273
. 275
. 276
. 276
. 277
. 277
. 278
. 278
. 278
. 279
. 279
. 279
. 280
. 280
. 280
. 281
. 281
. 282
. 282
. 284

AcExcelRange::SetVerticalAlignment method . . . .
AcExcelRange::SetMergeCells method . . . . . . . .
AcExcelRange::SetWrapText method . . . . . . . . .
Class AcExcelRow . . . . . . . . . . . . . . . . . . . .
AcExcelRow::GetRowHeight method . . . . . . . . .
AcExcelRow::SetRowHeight method . . . . . . . . .
Class AcExcelWorkbook . . . . . . . . . . . . . . . .
AcExcelWorkbook::AddWorksheet method . . . . .
AcExcelWorkbook::DeleteWorksheet method . . . .
AcExcelWorkbook::FindWorksheet method . . . . .
AcExcelWorkbook::GetFullName method . . . . . .
AcExcelWorkbook::Save method . . . . . . . . . . . .
AcExcelWorkbook::SaveAs method . . . . . . . . . .
Class AcExcelWorksheet . . . . . . . . . . . . . . . .
AcExcelWorksheet::Autofit method . . . . . . . . . .
AcExcelWorksheet::GetCell method . . . . . . . . . .
AcExcelWorksheet::GetColumn method . . . . . . .
AcExcelWorksheet::GetDisplayGridlines method . .
AcExcelWorksheet::GetName method. . . . . . . . .
AcExcelWorksheet::GetRange method . . . . . . . .
AcExcelWorksheet::GetRow method . . . . . . . . .
AcExcelWorksheet::SetDisplayGridlines method . .
AcExcelWorksheet::SetName method . . . . . . . . .
Class AcFlow. . . . . . . . . . . . . . . . . . . . . . .
AcFlow::AddFrame method . . . . . . . . . . . . . .
AcFlow::AddHeader method . . . . . . . . . . . . . .
AcFlow::AddSubpage method . . . . . . . . . . . . .
AcFlow::AdjustFooter method . . . . . . . . . . . . .
AcFlow::CanFitFrame method . . . . . . . . . . . . .
AcFlow::CanFitHeight method . . . . . . . . . . . . .
AcFlow::GetFreeSpace method . . . . . . . . . . . . .
AcFlow::GetInsideSize method. . . . . . . . . . . . .
AcFlow::IsEmpty method . . . . . . . . . . . . . . . .
AcFlow::ReleaseSpace method . . . . . . . . . . . . .
AcFlow::ReserveSpace method . . . . . . . . . . . . .
AcFlow::ResetSpace method . . . . . . . . . . . . . .
AcFlow::ShiftFooterUp method . . . . . . . . . . . .
Class AcFrame . . . . . . . . . . . . . . . . . . . . . .
AcFrame::AddToAdjustSizeList method . . . . . . .
AcFrame::AdjustContentVerticalGeometry method .
AcFrame::AutoSplitVertical method . . . . . . . . . .
AcFrame::CustomDHTMLFooter method . . . . . .
AcFrame::CustomDHTMLHeader method . . . . . .

ix

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 284
. 285
. 285
. 286
. 286
. 287
. 288
. 288
. 289
. 289
. 290
. 290
. 290
. 292
. 292
. 293
. 293
. 294
. 294
. 294
. 295
. 295
. 296
. 297
. 299
. 299
. 300
. 300
. 301
. 301
. 301
. 302
. 302
. 302
. 303
. 303
. 304
. 305
. 311
. 311
. 312
. 312
. 312

AcFrame::GetBorderOrigin method . . . . . . .
AcFrame::GetBorderRect method . . . . . . . .
AcFrame::GetBorderSize method. . . . . . . . .
AcFrame::NoSplitBottom method . . . . . . . .
AcFrame::NoSplitTop method . . . . . . . . . .
AcFrame::SplitMarginBottom method . . . . . .
AcFrame::SplitMarginTop method . . . . . . . .
Class AcGraph . . . . . . . . . . . . . . . . . . .
AcGraph::CalculateEndingValue method . . . .
AcGraph::CalculateRangeUnit method . . . . .
AcGraph::CalculateStartingValue method. . . .
AcGraph::CalculateTickIntervalUnit method . .
AcGraph::ComputeLabels method . . . . . . . .
AcGraph::ComputeMinMax method. . . . . . .
AcGraph::ComputeYOverlayMinMax method .
AcGraph::CustomYOverlayLabels method . . .
AcGraph::FormatXLabel method . . . . . . . . .
AcGraph::FormatYLabel method . . . . . . . . .
AcGraph::FormatYOverlayLabel method . . . .
AcGraph::GetHitPoint method . . . . . . . . . .
AcGraph::GetHitSet method . . . . . . . . . . .
AcGraph::GetHitXValue method . . . . . . . . .
AcGraph::GetHitYValue method . . . . . . . . .
AcGraph::GetSeriesKey method . . . . . . . . .
Class AcGroupSection . . . . . . . . . . . . . .
AcGroupSection::GetIntervalValue method . . .
AcGroupSection::GetKey method . . . . . . . .
AcGroupSection::GetKeyString method . . . . .
AcGroupSection::GetKeyValue method . . . . .
AcGroupSection::IsSameKey method . . . . . .
AcGroupSection::SetTocEntry method . . . . . .
Class AcHLCChart. . . . . . . . . . . . . . . . .
AcHLCChart::AddPoint method . . . . . . . . .
AcHLCChart::GetCloseValue method . . . . . .
AcHLCChart::GetDateValue method . . . . . .
AcHLCChart::GetHighValue method . . . . . .
AcHLCChart::GetLabelValue method . . . . . .
AcHLCChart::GetLowValue method. . . . . . .
AcHLCChart::GetOpenValue method . . . . . .
Class AcHLCGraph . . . . . . . . . . . . . . . .
AcHLCGraph::AddPoint method . . . . . . . .
AcHLCGraph::GetCloseValue method. . . . . .
AcHLCGraph::GetDateValue method . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 312
. 313
. 313
. 313
. 314
. 314
. 314
. 315
. 333
. 333
. 333
. 334
. 334
. 335
. 335
. 335
. 336
. 336
. 337
. 337
. 338
. 340
. 340
. 341
. 342
. 346
. 347
. 347
. 348
. 348
. 348
. 349
. 350
. 351
. 351
. 351
. 352
. 352
. 352
. 353
. 354
. 355
. 355

AcHLCGraph::GetHighValue method. . . . . .
AcHLCGraph::GetLabelValue method . . . . .
AcHLCGraph::GetLowValue method . . . . . .
AcHLCGraph::GetOpenValue method . . . . .
Class AcHtmlAppletControl. . . . . . . . . . .
AcHtmlAppletControl::HtmlParams method .
AcHtmlAppletControl::SetParam method . . .
Class AcHtmlFrame . . . . . . . . . . . . . . . .
Class AcHtmlImageControl . . . . . . . . . . .
Class AcHtmlObjectControl . . . . . . . . . . .
Class AcHtmlPlugInControl . . . . . . . . . . .
AcHtmlPlugInControl::HtmlParams method. .
AcHtmlPlugInControl::SetParam method . . .
Class AcHtmlReport . . . . . . . . . . . . . . .
AcHtmlReport::GetRowFileName method . . .
AcHtmlReport::GetServerPrefix method . . . .
AcHtmlReport::WantHtml method . . . . . . .
Class AcHtmlRuleControl . . . . . . . . . . . .
Class AcImageControl . . . . . . . . . . . . . .
AcImageControl::GetBaseImageName method
AcImageControl::GetFileName method . . . . .
Class AcInformixConnection . . . . . . . . . .
Class AcIntegerControl. . . . . . . . . . . . . .
Class AcIterator . . . . . . . . . . . . . . . . . .
AcIterator::GetItem method . . . . . . . . . . .
AcIterator::GetNext method . . . . . . . . . . .
AcIterator::GetPosition method . . . . . . . . .
AcIterator::HasMore method . . . . . . . . . . .
AcIterator::IsDone method . . . . . . . . . . . .
AcIterator::MoveNext method . . . . . . . . . .
AcIterator::MoveTo method . . . . . . . . . . .
AcIterator::Restart method . . . . . . . . . . . .
AcIterator::SkipTo method . . . . . . . . . . . .
Class AcLabelControl. . . . . . . . . . . . . . .
Class AcLeftRightPageList . . . . . . . . . . . .
AcLeftRightPageList::NewLeftPage method . .
AcLeftRightPageList::NewRightPage method .
Class AcLinearFlow . . . . . . . . . . . . . . . .
Class AcLineControl . . . . . . . . . . . . . . .
Class AcList . . . . . . . . . . . . . . . . . . . .
AcList::AddToHead method . . . . . . . . . . .
AcList::Contains method . . . . . . . . . . . . .
AcList::GetIndex method . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

xi

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 355
. 356
. 356
. 356
. 357
. 360
. 360
. 362
. 365
. 369
. 370
. 373
. 374
. 375
. 378
. 379
. 379
. 381
. 383
. 385
. 385
. 386
. 388
. 389
. 391
. 391
. 391
. 392
. 392
. 392
. 393
. 393
. 394
. 395
. 396
. 397
. 397
. 398
. 400
. 402
. 403
. 404
. 404

AcList::InsertAfter method . . . . . . . . . . . . . . .
AcList::InsertBefore method. . . . . . . . . . . . . . .
AcList::RemoveHead method. . . . . . . . . . . . . .
Class AcMemoryBuffer . . . . . . . . . . . . . . . . .
AcMemoryBuffer::AddRowToBuffer method . . . . .
AcMemoryBuffer::FlushBuffer method . . . . . . . .
AcMemoryBuffer::FlushBufferTo method . . . . . . .
AcMemoryBuffer::GetBufferCount method . . . . . .
AcMemoryBuffer::GetBufferStart method . . . . . . .
Class AcMemoryDataSorter . . . . . . . . . . . . . .
AcMemoryDataSorter::Compare method . . . . . . .
AcMemoryDataSorter::CompareKeys method . . . .
Class AcMSSQLConnection . . . . . . . . . . . . . .
Class AcMultipleInputFilter . . . . . . . . . . . . . .
AcMultipleInputFilter::NewInputAdapter method .
Class AcObjectArray . . . . . . . . . . . . . . . . . .
AcObjectArray::ResizeTo method . . . . . . . . . . .
AcObjectArray::SetAt method . . . . . . . . . . . . .
AcObjectArray::SetGrowthIncrement method . . . .
Class AcODBCConnection . . . . . . . . . . . . . . .
Class AcOleContainerControl . . . . . . . . . . . . .
AcOleContainerControl::CloseOrDeactivate method
AcOleContainerControl::DoVerb method . . . . . . .
AcOleContainerControl::Object method . . . . . . . .
AcOleContainerControl::OnActivate method . . . . .
AcOleContainerControl::OnCreate method . . . . . .
AcOleContainerControl::OnLButtonDblClk method.
Class AcOleControl . . . . . . . . . . . . . . . . . . .
Class AcOracleConnection . . . . . . . . . . . . . . .
Class AcOrderedCollection . . . . . . . . . . . . . .
AcOrderedCollection::AddToHead method. . . . . .
AcOrderedCollection::AddToTail method . . . . . . .
AcOrderedCollection::Copy method . . . . . . . . . .
AcOrderedCollection::GetAt method . . . . . . . . .
AcOrderedCollection::GetHead method. . . . . . . .
AcOrderedCollection::GetTail method . . . . . . . . .
AcOrderedCollection::RemoveHead method . . . . .
AcOrderedCollection::RemoveTail method . . . . . .
Class AcPage . . . . . . . . . . . . . . . . . . . . . . .
AcPage::FormatPageNumber method . . . . . . . . .
AcPage::PageNumberFormat method . . . . . . . . .
Class AcPageList . . . . . . . . . . . . . . . . . . . . .
AcPageList::EjectPage method . . . . . . . . . . . . .

xii

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 404
. 405
. 405
. 406
. 407
. 407
. 408
. 408
. 409
. 410
. 411
. 412
. 413
. 416
. 419
. 420
. 421
. 421
. 422
. 423
. 427
. 428
. 428
. 429
. 429
. 429
. 429
. 431
. 433
. 435
. 435
. 436
. 436
. 436
. 437
. 437
. 437
. 438
. 439
. 442
. 442
. 443
. 447

AcPageList::GetCurrentFlow method . . . . . . . . . . . . . .
AcPageList::GetCurrentPage method . . . . . . . . . . . . . .
AcPageList::GetCurrentPageACL method . . . . . . . . . . .
AcPageList::GetEstimatedPageCount method . . . . . . . . .
AcPageList::GetFirstPage method . . . . . . . . . . . . . . . .
AcPageList::GetLastPage method . . . . . . . . . . . . . . . .
AcPageList::GetPageCount method . . . . . . . . . . . . . . .
AcPageList::NeedHeight method . . . . . . . . . . . . . . . .
AcPageList::NewPage method . . . . . . . . . . . . . . . . . .
AcPageList::UseAcceleratedCheckpoints method . . . . . . .
Class AcPageNumberControl . . . . . . . . . . . . . . . . . .
AcPageNumberControl::GetActualPageCount method . . . .
AcPageNumberControl::GetActualPageNumber method . .
AcPageNumberControl::GetFormattedPageNumber method
AcPageNumberControl::GetVisiblePageCount method . . . .
AcPageNumberControl::GetVisiblePageNumber method . .
AcPageNumberControl::PageNOfM method. . . . . . . . . .
Class AcParallelSection . . . . . . . . . . . . . . . . . . . . .
Class AcPopupMenu . . . . . . . . . . . . . . . . . . . . . . .
AcPopupMenu::AddCascade method . . . . . . . . . . . . . .
AcPopupMenu::AddItem method . . . . . . . . . . . . . . . .
AcPopupMenu::AddSeparator method . . . . . . . . . . . . .
AcPopupMenu::CheckMenuItem method . . . . . . . . . . .
AcPopupMenu::EnableMenuItem method . . . . . . . . . . .
AcPopupMenu::MakeMenu method . . . . . . . . . . . . . .
AcPopupMenu::Run method . . . . . . . . . . . . . . . . . . .
Class AcProgressConnection . . . . . . . . . . . . . . . . . .
Class AcProgressSQL92Connection . . . . . . . . . . . . . .
Class AcQuerySource . . . . . . . . . . . . . . . . . . . . . . .
AcQuerySource::AddSortKey method. . . . . . . . . . . . . .
AcQuerySource::GetStatementText method . . . . . . . . . .
AcQuerySource::ObtainSelectStatement method. . . . . . . .
AcQuerySource::SetupAdHocParameters method . . . . . . .
Class AcRecordBuffer . . . . . . . . . . . . . . . . . . . . . .
Class AcRectangleControl . . . . . . . . . . . . . . . . . . . .
Class AcReport. . . . . . . . . . . . . . . . . . . . . . . . . . .
AcReport::GenerateXMLDataFile method . . . . . . . . . . .
AcReport::GetContent method . . . . . . . . . . . . . . . . . .
AcReport::GetCustomFormat method . . . . . . . . . . . . . .
AcReport::GetFactoryLocale method . . . . . . . . . . . . . .
AcReport::GetGlobalDHTMLCode method . . . . . . . . . .
AcReport::GetHtmlDir method. . . . . . . . . . . . . . . . . .
AcReport::GetLayoutOrientation method. . . . . . . . . . . .

xiii

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 447
. 448
. 448
. 448
. 449
. 449
. 449
. 450
. 450
. 451
. 452
. 455
. 456
. 456
. 456
. 457
. 457
. 458
. 460
. 461
. 461
. 462
. 463
. 463
. 463
. 464
. 465
. 470
. 474
. 475
. 476
. 476
. 476
. 477
. 478
. 480
. 488
. 488
. 488
. 489
. 489
. 489
. 490

AcReport::GetPageList method . . . . . . . . . . . . . .
AcReport::GetPrintLocale method . . . . . . . . . . . .
AcReport::GetTwipsPerPixel method . . . . . . . . . .
AcReport::GetUserACL method . . . . . . . . . . . . .
AcReport::GetViewLocale method . . . . . . . . . . . .
AcReport::HasPageSecurity method . . . . . . . . . . .
AcReport::NewContent method . . . . . . . . . . . . .
AcReport::NewPageList method . . . . . . . . . . . . .
AcReport::OnFinishViewer method . . . . . . . . . . .
AcReport::OnStartViewer method . . . . . . . . . . . .
AcReport::RoiIsTemporary method . . . . . . . . . . .
AcReport::SetLayoutOrientation method . . . . . . . .
AcReport::SetROIAgingProperties method . . . . . . .
AcReport::SetROWAgingProperties method . . . . . .
AcReport::SuggestRoiName method . . . . . . . . . . .
AcReport::XMLDataProlog method . . . . . . . . . . .
Class AcReportComponent. . . . . . . . . . . . . . . .
AcReportComponent::Abandon method . . . . . . . .
AcReportComponent::AddContent method . . . . . .
AcReportComponent::ApplyVisitor method . . . . . .
AcReportComponent::Build method . . . . . . . . . . .
AcReportComponent::BuildFromRow method . . . . .
AcReportComponent::DetachContent method . . . . .
AcReportComponent::DetachFromContainer method .
AcReportComponent::FindContainerByClass method.
AcReportComponent::Finish method . . . . . . . . . .
AcReportComponent::GenerateXML method. . . . . .
AcReportComponent::GetComponentACL method . .
AcReportComponent::GetConnection method . . . . .
AcReportComponent::GetContainer method . . . . . .
AcReportComponent::GetContentCount method . . .
AcReportComponent::GetContentIterator method. . .
AcReportComponent::GetContents method . . . . . .
AcReportComponent::GetDataStream method . . . . .
AcReportComponent::GetFirstContent method . . . .
AcReportComponent::GetFirstContentFrame method.
AcReportComponent::GetFullACL method . . . . . . .
AcReportComponent::GetPage method . . . . . . . . .
AcReportComponent::GetPageIndex method. . . . . .
AcReportComponent::GetPageList method . . . . . . .
AcReportComponent::GetReport method . . . . . . . .
AcReportComponent::GetRowCount method . . . . .
AcReportComponent::GetTocEntry method . . . . . .

xiv

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 490
. 490
. 491
. 491
. 492
. 493
. 493
. 493
. 494
. 494
. 494
. 495
. 496
. 496
. 497
. 499
. 500
. 508
. 508
. 509
. 510
. 510
. 510
. 511
. 511
. 512
. 512
. 513
. 513
. 514
. 514
. 515
. 515
. 515
. 516
. 516
. 517
. 517
. 518
. 518
. 518
. 519
. 519

AcReportComponent::GetXMLText method . . . .
AcReportComponent::HasContents method . . . .
AcReportComponent::IsContainer method . . . . .
AcReportComponent::IsFrame method . . . . . . .
AcReportComponent::IsLeaf method . . . . . . . .
AcReportComponent::IsVisual method . . . . . . .
AcReportComponent::OnRow method . . . . . . .
AcReportComponent::SetTocEntry method. . . . .
AcReportComponent::Start method . . . . . . . . .
Class AcReportController . . . . . . . . . . . . . .
AcReportController::AttachToThisReport method .
AcReportController::AttachReport method . . . . .
AcReportController::FollowLink method . . . . . .
AcReportController::ShowNextPage method. . . .
AcReportController::ShowPage method . . . . . .
AcReportController::ShowPrevPage method . . . .
Class AcReportSection . . . . . . . . . . . . . . . .
AcReportSection::FinishDataStream method . . . .
AcReportSection::NewDataStream method. . . . .
AcReportSection::ObtainDataStream method . . .
AcReportSection::SetSortKey method . . . . . . . .
AcReportSection::StartDataStream method . . . . .
Class AcReportView . . . . . . . . . . . . . . . . .
AcReportView::EndSelectionScan method . . . . .
AcReportView::GenerateXMLData method. . . . .
AcReportView::GetNextSelection method . . . . .
AcReportView::GetSelectionCount method. . . . .
AcReportView::PrintAllPages method . . . . . . .
AcReportView::PrintPages method . . . . . . . . .
AcReportView::StartSelectionScan method . . . . .
Class AcSection . . . . . . . . . . . . . . . . . . . .
AcSection::AddContent method . . . . . . . . . . .
AcSection::CommittedToFlow method . . . . . . .
AcSection::FinishConnection method . . . . . . . .
AcSection::FinishFlow method . . . . . . . . . . . .
AcSection::FinishPage method . . . . . . . . . . . .
AcSection::GetContents method . . . . . . . . . . .
AcSection::GetCurrentRow method . . . . . . . . .
AcSection::NewPage method . . . . . . . . . . . . .
AcSection::ObtainConnection method. . . . . . . .
AcSection::PageBreakAfter method . . . . . . . . .
AcSection::PageBreakBefore method . . . . . . . .
AcSection::SetSecurity method . . . . . . . . . . . .

xv

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 519
. 520
. 520
. 521
. 521
. 521
. 522
. 523
. 523
. 524
. 524
. 525
. 525
. 526
. 527
. 527
. 528
. 533
. 534
. 534
. 536
. 536
. 537
. 538
. 539
. 539
. 539
. 540
. 540
. 541
. 542
. 548
. 548
. 549
. 549
. 549
. 550
. 550
. 550
. 551
. 551
. 551
. 553

AcSection::StartFlow method . . . . . . . . . . . . . . .
AcSection::StartPage method . . . . . . . . . . . . . . .
AcSection::StopAfterCurrentFrame method . . . . . .
AcSection::StopAfterCurrentRow method. . . . . . . .
AcSection::StopNow method . . . . . . . . . . . . . . .
Class AcSequentialSection . . . . . . . . . . . . . . . .
AcSequentialSection::NewContent method . . . . . . .
AcSequentialSection::SelectContent method . . . . . .
Class AcSimplePageList . . . . . . . . . . . . . . . . .
Class AcSingleInputFilter . . . . . . . . . . . . . . . .
AcSingleInputFilter::Fetch method . . . . . . . . . . . .
AcSingleInputFilter::GetInput method. . . . . . . . . .
AcSingleInputFilter::NewInputAdapter method . . . .
AcSingleInputFilter::SetInput method . . . . . . . . . .
Class AcSingleList . . . . . . . . . . . . . . . . . . . . .
AcSingleList::Compare method. . . . . . . . . . . . . .
AcSingleList::FindByValue method . . . . . . . . . . .
Class AcSingleListIterator . . . . . . . . . . . . . . . .
Class AcSqlQuerySource . . . . . . . . . . . . . . . . .
AcSqlQuerySource::ObtainSelectStatement method . .
AcSqlQuerySource::SetAdHocParameter method . . .
Class AcStoredProcedureSource. . . . . . . . . . . . .
Class AcSubPage. . . . . . . . . . . . . . . . . . . . . .
Class AcSummaryChart. . . . . . . . . . . . . . . . . .
AcSummaryChart::ComputeCategoryRange method .
AcSummaryChart::ConvertCategoryExp method . . .
AcSummaryChart::CreateEmptyCategories method . .
AcSummaryChart::PopulateCategoryIndex method . .
AcSummaryChart::RoundToRange method. . . . . . .
Class AcSummaryGraph . . . . . . . . . . . . . . . . .
AcSummaryGraph::ComputeCategoryRange method .
AcSummaryGraph::ConvertCategoryKey method . . .
AcSummaryGraph::CreateEmptyCategories method .
AcSummaryGraph::PopulateCategoryIndex method .
AcSummaryGraph::RoundToRange method . . . . . .
Class AcSybaseConnection. . . . . . . . . . . . . . . .
Class AcTextControl . . . . . . . . . . . . . . . . . . . .
Class AcTextQuerySource . . . . . . . . . . . . . . . .
AcTextQuerySource::CanSortDynamically method . .
AcTextQuerySource::ObtainSelectStatement method .
AcTextQuerySource::SetAdHocCondition method . . .
Class AcTextualControl . . . . . . . . . . . . . . . . . .
Class AcTitleBodyPageList . . . . . . . . . . . . . . . .

xvi

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 554
. 554
. 555
. 555
. 555
. 557
. 559
. 560
. 562
. 563
. 565
. 566
. 566
. 567
. 568
. 568
. 569
. 570
. 571
. 572
. 572
. 574
. 578
. 579
. 580
. 581
. 581
. 581
. 582
. 583
. 585
. 585
. 585
. 586
. 586
. 587
. 590
. 591
. 593
. 593
. 593
. 595
. 596

AcTitleBodyPageList::NewBodyPage method
AcTitleBodyPageList::NewTitlePage method.
Class AcTopDownFlow. . . . . . . . . . . . .
Class AcVisitor. . . . . . . . . . . . . . . . . .
AcVisitor::VisitBaseFrame method . . . . . . .
AcVisitor::VisitBasePage method. . . . . . . .
AcVisitor::VisitComponent method . . . . . .
AcVisitor::VisitConditionalSection method . .
AcVisitor::VisitContents method . . . . . . . .
AcVisitor::VisitControl method. . . . . . . . .
AcVisitor::VisitCurrencyControl method . . .
AcVisitor::VisitDataControl method . . . . . .
AcVisitor::VisitDataFrame method. . . . . . .
AcVisitor::VisitDataSection method . . . . . .
AcVisitor::VisitDateTimeControl method . . .
AcVisitor::VisitDetailGraph method . . . . . .
AcVisitor::VisitDoubleControl method . . . .
AcVisitor::VisitDynamicTextControl method .
AcVisitor::VisitEllipseControl method. . . . .
AcVisitor::VisitFlow method . . . . . . . . . .
AcVisitor::VisitFrame method . . . . . . . . .
AcVisitor::VisitGraph method . . . . . . . . .
AcVisitor::VisitGroupSection method . . . . .
AcVisitor::VisitHLCGraph method . . . . . .
AcVisitor::VisitHtmlAppletControl method .
AcVisitor::VisitHtmlFrame method . . . . . .
AcVisitor::VisitHtmlImageControl method . .
AcVisitor::VisitHtmlObjectControl method . .
AcVisitor::VisitHtmlPlugInControl method. .
AcVisitor::VisitHtmlReport method . . . . . .
AcVisitor::VisitHtmlRuleControl method . . .
AcVisitor::VisitImageControl method . . . . .
AcVisitor::VisitIntegerControl method . . . .
AcVisitor::VisitLabelControl method . . . . .
AcVisitor::VisitLeftRightPageList method . .
AcVisitor::VisitLeftToRightFlow method . . .
AcVisitor::VisitLinearFlow method . . . . . .
AcVisitor::VisitLineControl method . . . . . .
AcVisitor::VisitOleContainerControl method .
AcVisitor::VisitOleControl method. . . . . . .
AcVisitor::VisitPage method . . . . . . . . . .
AcVisitor::VisitPageList method . . . . . . . .
AcVisitor::VisitPageNumberControl method .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

xvii

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 596
. 597
. 598
. 600
. 610
. 611
. 611
. 611
. 611
. 611
. 612
. 612
. 612
. 613
. 613
. 613
. 613
. 614
. 614
. 614
. 614
. 614
. 614
. 615
. 615
. 615
. 615
. 615
. 615
. 616
. 616
. 616
. 616
. 616
. 616
. 617
. 617
. 617
. 617
. 617
. 617
. 618
. 618

AcVisitor::VisitParallelSection method. . . . . . . . . . . .
AcVisitor::VisitRectangleControl method . . . . . . . . . .
AcVisitor::VisitReport method . . . . . . . . . . . . . . . .
AcVisitor::VisitReportSection method . . . . . . . . . . . .
AcVisitor::VisitSection method . . . . . . . . . . . . . . . .
AcVisitor::VisitSequentialSection method . . . . . . . . . .
AcVisitor::VisitSimplePageList method . . . . . . . . . . .
AcVisitor::VisitSubpage method . . . . . . . . . . . . . . .
AcVisitor::VisitSummaryGraph method . . . . . . . . . . .
AcVisitor::VisitTextControl method . . . . . . . . . . . . .
AcVisitor::VisitTextualControl method . . . . . . . . . . .
AcVisitor::VisitTitleBodyPageList method. . . . . . . . . .
AcVisitor::VisitTopDownFlow method . . . . . . . . . . .
AcVisitor::VisitVisualComponent method. . . . . . . . . .
Class AcVisualComponent . . . . . . . . . . . . . . . . . .
AcVisualComponent::AddMenuCommands method . . .
AcVisualComponent::AdjustSize method . . . . . . . . . .
AcVisualComponent::AdjustVerticalGeometry method . .
AcVisualComponent::CanIncreaseHeight method . . . . .
AcVisualComponent::CanMoveUp method. . . . . . . . .
AcVisualComponent::CanReduceHeight method . . . . .
AcVisualComponent::CanSplitVertically method . . . . .
AcVisualComponent::ComputeLowestSplit method . . . .
AcVisualComponent::CursorShape method . . . . . . . .
AcVisualComponent::FindLowestSplit method . . . . . .
AcVisualComponent::FindPageContainerByClass method
AcVisualComponent::GetBottom method . . . . . . . . . .
AcVisualComponent::GetFirstSlave method . . . . . . . .
AcVisualComponent::GetFrame method . . . . . . . . . .
AcVisualComponent::GetHeight method . . . . . . . . . .
AcVisualComponent:GetHtmlLinkTo method . . . . . . .
AcVisualComponent::GetLastSlave method . . . . . . . .
AcVisualComponent::GetLeft method . . . . . . . . . . . .
AcVisualComponent::GetLinkTo method . . . . . . . . . .
AcVisualComponent::GetMaster method . . . . . . . . . .
AcVisualComponent::GetPage method . . . . . . . . . . .
AcVisualComponent::GetPageContainer method . . . . .
AcVisualComponent::GetRect method. . . . . . . . . . . .
AcVisualComponent::GetRight method . . . . . . . . . . .
AcVisualComponent::GetTop method . . . . . . . . . . . .
AcVisualComponent::GetVisualComponent method . . .
AcVisualComponent::GetWidth method . . . . . . . . . .
AcVisualComponent::HelpText method . . . . . . . . . . .

xviii

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 618
. 618
. 618
. 619
. 619
. 619
. 619
. 619
. 619
. 620
. 620
. 620
. 620
. 620
. 621
. 632
. 634
. 635
. 635
. 635
. 636
. 636
. 636
. 637
. 637
. 638
. 639
. 639
. 639
. 639
. 640
. 640
. 640
. 640
. 641
. 641
. 641
. 642
. 642
. 642
. 643
. 643
. 643

AcVisualComponent::IsFirstSlave method . . . . . . .
AcVisualComponent::IsFrameDecoration method . . .
AcVisualComponent::IsMaster method . . . . . . . . .
AcVisualComponent::IsNormal method . . . . . . . .
AcVisualComponent::IsSlave method . . . . . . . . . .
AcVisualComponent::IsVisible method . . . . . . . . .
AcVisualComponent::MaximumHeight method . . . .
AcVisualComponent::MinimumHeight method . . . .
AcVisualComponent::MoveBy method . . . . . . . . .
AcVisualComponent::MoveByConstrained method . .
AcVisualComponent::MoveTo method . . . . . . . . .
AcVisualComponent::MoveToConstrained method . .
AcVisualComponent::OnActuate method. . . . . . . .
AcVisualComponent::OnContextMenu method . . . .
AcVisualComponent::OnCopyLink method . . . . . .
AcVisualComponent::OnFollowLink method . . . . .
AcVisualComponent::OnHelp method . . . . . . . . .
AcVisualComponent::OnLButtonClick method . . . .
AcVisualComponent::OnLButtonDblClk method . . .
AcVisualComponent::OnLButtonDown method . . . .
AcVisualComponent::OnLButtonUp method . . . . .
AcVisualComponent::OnRButtonClick method . . . .
AcVisualComponent::OnRButtonDblClk method . . .
AcVisualComponent::OnRButtonDown method. . . .
AcVisualComponent::OnRButtonUp method . . . . .
AcVisualComponent::ResizeBy method. . . . . . . . .
AcVisualComponent::ResizeByConstrained method .
AcVisualComponent::ResizeTo method . . . . . . . . .
AcVisualComponent::ResizeToConstrained method .
AcVisualComponent::Searchable method . . . . . . . .
AcVisualComponent::SearchAlias method . . . . . . .
AcVisualComponent::Selectable method . . . . . . . .
AcVisualComponent::SetLinkTo method . . . . . . . .
AcVisualComponent::ShowInHTML method . . . . .
AcVisualComponent::SplitVertically method . . . . . .
AcVisualComponent::StatusText method . . . . . . . .
AcVisualComponent::TargetWindowName method. .
AcVisualComponent::VerticalPosition method . . . . .
AcVisualComponent::VerticalSize method . . . . . . .
Class AcXMLDataVisitor. . . . . . . . . . . . . . . . .
AcXMLDataVisitor::EndElement method . . . . . . . .
AcXMLDataVisitor::GenerateAttribute method . . . .
AcXMLDataVisitor::GenerateEmptyElement method .

xix

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

. 644
. 644
. 644
. 645
. 645
. 645
. 646
. 646
. 646
. 647
. 647
. 648
. 648
. 649
. 650
. 650
. 652
. 653
. 656
. 657
. 658
. 659
. 660
. 661
. 662
. 663
. 663
. 664
. 664
. 665
. 665
. 665
. 666
. 666
. 667
. 667
. 668
. 668
. 668
. 669
. 671
. 671
. 671

AcXMLDataVisitor::GenerateText method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672


AcXMLDataVisitor::GenerateXML method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
AcXMLDataVisitor::StartElement method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675

xx

Intro ductio n

About Actuate e.Reporting Suite 6


Actuate is the leading provider of information delivery solutions for Global
2000 companies and packaged application software vendors. Our customers
use Actuate e.Reporting Suite 6 to retrieve business information from
corporate databases and deliver it as interactive web pages and Excel
spreadsheets to their customers, partners, and employees. Actuates customer
list includes pacesetters in aerospace, commercial banking, defense,
entertainment, federal government, financial services, health care, high
technology, insurance, life sciences, pharmaceuticals, retail, securities, and
telecommunications.
Our infrastructure software provides the foundation for applications that
support business analysis, customer relationship management, desktop
reporting, e.billing, e.procurement, executive dashboards, human resources,
key performance indicators, portals, service automation, supply chain
management, and systems management. In the e.Business environment, our
structured content technology seamlessly integrates into corporate web sites
and packaged applications. Actuate 6 supports information delivery in both
print and online formats and through data exchange with other applications.
By providing easy information access to millions of users, our customers gain
increased revenue, reduce IT spending, and improve customer service.
Because of the growing international requirements of our customer base,
Actuate 6 provides an unprecedented level of support for multilingual
reporting including full Unicode and an extensive list of supported locales.
This release features a highly scalable, highly available, high performance
server that further extends our lead in implementing enterprise-class
information delivery systems. Enhanced integration capabilities support
personalized and customizable portal development, web services, and
spreadsheet reporting.

Introduction

xxi

e.Business in the enterprise environment requires four primary technology


platforms. Actuate is the primary information delivery platform that provides
the content users need in the format in which they need it, in a secure, timely,
and cost-effective manner. In addition there are three e.Business platforms for
which Actuate provides the information delivery solution.
Platform

Function

Purpose

Databases

Organize data

Access, manage, and


update data

Content management
systems

Manage unstructured
content

Publish unstructured
content such as
electronic catalogs

Application servers

Deploy online
applications

Conduct complex
transactions, manage
supply chains, and
interact with customers

Actuate e.Reporting Suite 6 continues to offer core solutions for fundamental


enterprise reporting challenges.

xxii

Challenge

Actuate solution

Deliver high resolution information

Solve complex data access problems


across a broad range of data sources

View structured content

Support viewing DHTML reports in


standard browsers to eliminate plugin installation for millions of users

Meet varied information display


requirements

Provide template-based design and


display
Provide complex formatting
capabilities
Provide spreadsheet reporting

Meet exploding requirements for


web-based content delivery

Support over a million hits per day


per CPU

Deliver personalized secure


information

Provide open security directory


integration and page security

Reuse existing integrated content

Open server provides access to


content from other applications

Maintain data integrity between


online and hard copy

Provide high-resolution printed copy


in postscript and PDF

Actuate Foundation Class Reference

Challenge

Actuate solution

Transfer information among


applications

Provide XML output to support


access to data across applications

Meet increasing requirements for


server-based reporting

Provide clustering and failover


support

The following summary describes the products in Actuate e.Reporting Suite 6.

Actuate End User Desktop


An application used by end users to request, generate, view, and print report
documents. The ReportQuery capabilities enable seamless transfer of data
from an Actuate report to any productivity or analysis tool.

Actuate e.Report Designer


An application that complements e.Report Designer Professional and supports
business users in designing and distributing a variety of reports. These reports
require no programming. This application supports both modifying complex
reports and using sophisticated components from libraries.

Actuate e.Report Designer Java Edition


A report development application used by Java developers to design and
distribute a variety of reports. 100% Java compliant, the e.Report Designer
Java Edition includes both AWT and Swing APIs.

Actuate e.Report Designer Professional


An object-oriented application used by professional developers of structured
content to design, build, and distribute report object designs for delivery on
the web. The Actuate Basic Language and Actuate Foundation Class Library
support extensive customization capabilities.
Actuate Client Integration Technology is part of Actuate e.Report Designer
Professional and consists of the following:


Actuate ActiveX Controls embed Actuate reporting functionality into


custom applications.

Actuate Requester API accesses attributes and values of report parameters,


changes the values of report parameters, controls how and when a report
generates, displays and prints reports, and configures report print setup.
Access the Requester API using Actuate Basic, Visual Basic, C, or C++.

Actuate search extension API supports developing search extensions to


transfer data to any third-party productivity or analysis tool.

Introduction

xxiii

Actuate e.Reporting System


A server application that generates Live Report Documents, manages them in
the Report Encyclopedia volume, and makes them available to users.
Actuate e.Reporting System supports managing a cluster consisting of
multiple reports servers. Actuate e.Reporting System includes the following:


Actuate Active Portal and Actuate ReportCast transform the Report


Encyclopedia volume into a dynamic, secure web site. They provide the
foundation for Channels and seamless integration with other web sites.

Management Console, an application for system and network


administrators to manage and control one or more Actuate report servers.

Actuate Server Integration Technology




Actuate Information Delivery API integrates Actuate web services into


existing corporate applications, automates routine or time-consuming
report server tasks, and implements new feature groupings for custom
business processes. Actuate Information Delivery API is based on XML
and supports the SOAP messaging protocol.

Actuates Report Server API implements common Report Encyclopedia


volume functionality using C++.

Actuate Report Server Security Extension supports the use of thirdparty security tools.

Actuate archive driver supports the use of third-party archiving


software and hardware

Actuate e.Reporting System supports the following options:




Actuate e.Analysis Option


An application used to transform data from an Actuate e.report into
interactive information. Users can view and analyze data to determine
relationships and trends.

Actuate e.Report Option


A Basic and Java option that provides Report Encyclopedia volume
functionality for e.Report Designer, e.Report Designer Java Edition, and
e.Report Designer Professional.

Actuate e.Spreadsheet Option


An open server application that generates Excel spreadsheets from
e.Spreadsheet Designer files. With this product customers manage
spreadsheet reports and analysis within the Actuate e.Reporting Server
and save Actuate reports as richly formatted Excel spreadsheets.

Multi-Application Option
Multi-Application supports using more than one Report Encyclopedia
volume on the e.Reporting System.

xxiv

Actuate Foundation Class Reference

Page Level Security Option


Page level security supports personalizing viewing privileges at the user
level for reports and parts of reports.

Progress Option
A server application that supports working exclusively with Progress
databases that generates Live Report Documents, manages them in the
Report Encyclopedia volume, and makes them available to users.

Actuate e.Spreadsheet Designer


An application that supports designing, creating, and distributing custom
spreadsheets over the web. Users can dynamically generate richly formatted
Excel and spreadsheet-based reports from Actuate e.Reporting Server. These
spreadsheets can be part of an application, an applet, or a JavaBean.

Actuate Live Report Extension (LRX)


An application for end users that works with both Microsoft Internet Explorer
and Netscape Navigator to support report viewing and printing on the Web.
Actuate Live Report Extension (LRX) is included with all products except
Actuate e.Report Designer Java Edition and Actuate e.Spreadsheet Designer.

Actuate Viewer
An application for end users to find, view, and print report documents. The
ReportQuery capabilities are also part of the Actuate Viewer. Actuate Viewer
is included with all products except Actuate e.Report Designer Java Edition
and Actuate e.Spreadsheet Designer.

About Actuate e.Report Designer Professional


product
Actuate e.Report Designer Professional documentation includes printed
manuals, an installation guide, online help, user documentation in PDF
format, and release notes. Information about the product that could not be
included before the book printing deadline is in the release notes.
The Actuate web site, http://www.actuate.com, contains news about the
product and its features, as well as product update information. To obtain the
password necessary to access the customer-only portion of the web site,
telephone Actuate Customer Support. The engineers in Actuate Customer
Support can also help you with technical questions about the product
according to your service contract. The Customer Support telephone number,

Introduction

xxv

fax number, and e-mail information can be found among the printed materials
in the product box.
The Example folder in the product directory contains report examples. Each
sample report folder contains a variety of files, often including a text file that
discusses how the example works. In addition, sample applications are
included with the Client Integration Technology. The samples demonstrate
how to use the APIs.
The printed and online documentation includes the following manuals.
For information about

See the following

Installation
Upgrading

Installation guide
Upgrading guide

Late-breaking information about the


software and documentation

Release notes

Overview of Actuate reporting


concepts
How to build your first report
How to design reports using the
graphical user interface

Conceptual information about how


to program with Actuate Foundation
Classes
Customizing e.reports
Actuate Basic programming
fundamentals
Programming in the Windows
environment
Actuates C++ APIs

Developing
Advanced
e.Reports

Programming
e.Reports

Accessing, viewing, running,


printing and searching reports
Using
e.Reports

xxvi

Actuate Foundation Class Reference

For information about


Formatting report data for multiple
locales
Understanding report encoding
Designing reports with right to left
orientation

Actuate Foundation Classes, their


properties, variables, and methods

See the following

e.Reporting
for Multiple
Locales

Actuate
Foundation
Class
Reference

Actuate Basic statements and


functions
Actuate Basic
Language
Reference

Terminology map
Glossary

Actuate
e.Reporting
Suite 6
Glossary

About the Actuate Foundation Class Reference


The Actuate Foundation Class Reference guide provides information for using
the Actuate foundation classes, their variables, properties, and methods.

Introduction

xxvii

The Actuate Foundation Class Reference includes the following chapters:




Introduction. This chapter provides an overview of this guide, the Actuate


e.Report Designer Professional documentation, and the typographical
conventions used.

Chapter 1. The Actuate Foundation Class library. This chapter shows an


overview of the inheritance hierarchy and a summary of classes and
methods.

Chapter 2. AFC data types. This chapter lists the AFC data types.

Chapter 3. AFC classes. This chapter contains an alphabetical listing of the


classes. Each class description includes a variables, properties, and
methods summary followed by an alphabetical listing of the methods.

Online documentation
The information in the printed manuals is also available as online books in
Adobe Acrobat PDF format and in the online help system for Actuate
products. For products without a Windows interface, such as Actuate
e.Reporting System, Actuate e.Report Designer Java Edition, and Actuate
e.Spreadsheet Designer, we provide HTML help files. The HTML files install
automatically with the product. These files can be viewed with standard web
browsers.

Using online manuals


The online manuals install automatically with the product. You can also find
the online manuals on the product CD in the Manuals directory. The items in
the table of contents and the page numbers in the index both contain links to
the appropriate topics in the text. In the index, you access the link by
positioning your cursor over the page number, not the topic.

Online help
Actuate products provide both context-sensitive online help about the product
and report-specific online help about the report you are viewing. Actuate
e.Reporting Suite makes it possible for developers to create customized reportspecific online help.

Using context-sensitive online help


Sections from the printed manuals have been linked directly to the software
interface to make relevant information available while you work. Dialogs that
need additional explanation about how to use them have a help button. To

xxviii

Actuate Foundation Class Reference

access online help for other elements, use the Help menu on the menu bar or
press F1.

Using the Actuate online help system


Use two panes to access and view information in the e.Reporting Suite help
system. The left pane displays the table of contents or the index. The right
pane displays the contents of the topics.

The tabs at the top of the left pane access different views. Use these tabs to
switch views among the Table of Contents, Index, Search, and Favorites.
The following illustration shows an example of the index and the result of an
index search.

Introduction

xxix

Choose Index to view the topics


Type the keyword to search the Index

Select a topic from the list, and


choose Display to view its
contents

The following illustration shows the result of a search as it appears in the left
pane. To view the topic in the right pane, double-click the topic from the list.
The topic appears in the window on the right.
Choose Search
Type the keyword to search

Select a topic from the list, and


choose Display to view its
contents

xxx

Actuate Foundation Class Reference

Using report-specific online help


During the design phase, report developers have the option to include reportspecific online help. For example, the report developer can add comments to
provide details about specific report objects or to explain calculations.
Report-specific online help

For detailed information about report-specific online help, see Chapter 3,


Viewing e.reports, in Using e.Reports.

Typographical conventions
The following table describes the typographical conventions in this guide.
Item

Convention

Example

Code examples

Sans serif

Dim Text1 As String

File names

Initial letter capitalized,


except e. Report
Designer Java Edition,
where file names are
case sensitive

Detail.roi

Key combination

A + sign between keys


means to press both
keys at the same time

Ctrl+Shift

Menu items

Capitalized, no bold

File

Submenu items

Separated from the


main menu item with a
small arrow

File New

User input or user


response

Sans serif

M*16*

User input in XML and


Java code

Italics

chkjava.exe
cab_name.cab

Introduction

xxxi

Syntax conventions
The following table describes the symbols used to present syntax.
Symbol

Description

Example

[]

Optional item

[Alias<alias name>]

Array subscript

matrix[ ]

Argument you must


supply

<expression to format>

Delimiter in XML

<tr>

Groups two or more


mutually exclusive
options or arguments,
when used with a pipe

{While | Until}

Defines array contents

{0, 1, 2, 3}

Delimiter of code block

public ACJDesigner( )
{
}

Separates mutually
exclusive options or
arguments in a group

Exit {Do | For |


Function | Sub}

Java OR operator

int length |4

<>

{}

xxxii

Actuate Foundation Class Reference

Chapter

1
The Actuate Foundation
Class library

Chapter 1

This chapter contains the following topics:




Overview of the AFC inheritance hierarchy

Summary of classes and methods

Chapter 1, The Actuate Foundation Class librar y

Overview of the AFC inheritance hierarchy


AcComponent
AcReportComponent
AcVisualComponent

Report Section

Control

AcReport

AcEllipseControl

AcControl
AcGraph

AcHtmlReport

AcChart
AcSummaryGraph

AcSection

AcDetailChart
AcDetailGraph

AcDataSection

AcSummaryChart
AcHLCGraph

AcReportSection

AcHLCChart
AcHtmlObjectControl

AcGroupSection

AcHtmlAppletControl
AcSequentialSection

AcHtmlPlugInControl

AcConditionalSection

AcImageControl

AcParallelSection

AcHtmlImageControl

Page Layout
AcPageList

AcLineControl

AcBaseFrame

AcSimplePageList

AcBasePage
AcSubPage

AcLeftRightPageList

AcPage

AcTitleBodyPageList

AcDataFrame
AcFrame
AcHtmlFrame

AcLinearFlow

AcExcelApp

AcTopDownFlow
AcExcelWorkbook

AcExcelRange
AcExcelCell

AcExcelWorksheet

AcOLEControl
AcOLEContainerControl
AcPageNumberControl
AcRectangleControl
AcTextualControl
AcDynamicTextControl
AcBrowserScriptingControl

AcFlow

Excel

AcHtmlRuleControl

AcDataControl
AcCurrencyControl
AcDateTimeControl
AcDoubleControl
AcIntegerControl

AcExcelColumn
AcTextControl
AcExcelRow

Actuate Foundation Class Reference

AcLabelControl

AcComponent

Connection

Data Stream

AcConnection

AcDataRow

AcDBConnection

AcDataAdapter

AcDB2Connection

AcDataSource

AcInformixConnection

AcDatabaseSource

AcMSSQLConnection

AcQuerySource

AcODBCConnection

AcSqlQuerySource

AcOracleConnection

AcTextQuerySource

AcProgressConnection
AcStoredProcedureSource
AcProgressSQL92Connection

AcDataFilter

AcSybaseConnection

AcSingleInputFilter

AcDBStatement

AcMemoryBuffer
AcRecordBuffer

AcDBCursor

AcMemoryDataSorter

Collection

AcMultipleInputFilter

AcCollection
AcOrderedCollection

Internal Tools

AcList
AcPopupMenu
AcSingleList
AcReportController
AcObjectArray
AcReportView
AcBTree
AcIterator
AcSingleListIterator

AcVisitor
AcXMLDataVisitor

Chapter 1, The Actuate Foundation Class librar y

Summary of classes and methods


The Actuate Foundation Class library contains classes and methods that
support building a wide range of custom reports. Some classes are appropriate
for you to use for this purpose and others are not. For example, it is important
to understand that abstract base classes define the core protocolthe rules
governing the use of these classes. These classes are never instantiated and
contain general rules that other classes refine. Before you begin using the class
library, you should be familiar with the concepts in Part II: Programming with
the Actuate Foundation Classes in Programming e.Reports.
The tables in this section change from time to time as we modify the product
architecture to meet customer needs. We reserve certain classes as private in
the same way as we reserve certain words in the Actuate Basic language.
Private classes must never be modified.
In the following tables, we describe the methods as callable, overridable, or
private. In addition, we call out abstract base classes. The tables are grouped.
The groupings are:


Report section

Page layout

Control

Connection

Collection

Data stream

Excel

Internal tools

Report section classes and methods


Use report section classes and methods to modify your report structure.
Class or method

Classification

AcComponent

Delete( )

Overridable

GetContentName( )

Callable

IsPersistent( )

Callable

New( )

Overridable

NewComponent( )

Callable

Actuate Foundation Class Reference

Class or method

Classification

NewPersistentComponent( )

Callable

SetProperties( )

Private

AcReportComponent
Abandon( )

Callable

AddContent( )

Callable

AddToPageList( )

Private

ApplyVisitor( )

Callable

Build( )

Overridable

BuildIntoFlow( )

Private

BuildFromRow( )

Overridable

BuildFromRowIntoFlow( )

Private

BuildTocList( )

Private

DetachContent( )

Callable

DetachFromContainer( )

Callable

FindContainerByClass( )

Callable

Finish( )

Overridable

FinishBuild( )

Private

FinishReport( )

Private

GenerateHtml( )

Private

GenerateHtmlStructure( )

Private

GenerateXML( )

Overridable

GetAggregateValue( )

Private

GetCascadeACL( )

Private

GetComponentACL( )

Overridable

GetConnection( )

Callable

GetContainer( )

Callable

GetContentCount( )

Callable

GetContentIterator( )

Callable

GetContents( )

Callable

GetDataStream( )

Callable

GetFirstContent( )

Callable

GetFirstContentFrame( )

Callable

Chapter 1, The Actuate Foundation Class librar y

Class or method

Classification

GetFirstTocChild( )

Private

GetFullACL( )

Overridable

GetMinimumCellSize( )

Private

GetNextTocChild( )

Private

GetPage( )

Callable

GetPageRange( )

Private

GetPageIndex( )

Callable

GetPageList( )

Callable

GetReport( )

Callable

GetRowCount( )

Callable

GetTocEntry( )

Overridable

GetTocList( )

Private

GetXMLText( )

Overridable

HasContents( )

Callable

HasTocChildren( )

Private

IsBlocked( )

Private

IsContainer( )

Callable

IsFrame( )

Callable

IsLeaf( )

Callable

IsPageRangeValid( )

Private

IsVisual( )

Callable

NewDisplayVisitor( )

Private

NewHtmlGenerationVisitor( )

Private

NewHtmlTocVisitor( )

Private

NewHtmlVisitor( )

Private

NewPrinterVisitor( )

Private

NewReportView( )

Private

OnRow( )

Overridable

PrebuildFromRow( )

Private

SetTocEntry( )

Overridable

Start( )

Overridable

StartBuild( )

Private

Actuate Foundation Class Reference

Class or method

Classification

StartReport( )

Private

Terminate( )

Private

AcReport
Build( )

Private

BuildReport( )

Private

GenerateXML( )

Private

GenerateXMLDataFile( )

Callable

GetContent( )

Callable

GetCustomFormat( )

Overridable

GetFactoryLocale( )

Overridable

GetGlobalDHTMLCode( )

Overridable

GetHtmlDir( )

Overridable

GetLayoutOrientation( )

Overridable

GetPageList( )

Callable

GetPrintLocale( )

Overridable

GetTwipsPerPixel( )

Overridable

GetUserACL( )

Overridable

GetViewLocale( )

Overridable

HasPageSecurity( )

Overridable

IsTransientReport( )

Private

NewContent( )

Overridable

NewDisplayVisitor( )

Private

NewHtmlGenerationVisitor( )

Private

NewHtmlTocGenerationVisitor( )

Private

NewHtmlTocVisitor( )

Private

NewHtmlVisitor( )

Private

NewPageList( )

Overridable

NewPrinterVisitor( )

Private

NewReportView( )

Private

NewSecurePageMap( )

Private

NewViewer( )

Private

NewXMLDataVisitor( )

Private

Chapter 1, The Actuate Foundation Class librar y

Class or method

Classification

OnFinishViewer( )

Overridable

OnStartViewer( )

Overridable

RoiIsTemporary( )

Overridable

SetLayoutOrientation( )

Overridable

SetROIAgingProperties( )

Overridable

SetROWAgingProperties( )

Overridable

SuggestRoiName( )

Overridable

XMLDataProlog( )

Overridable

AcHtmlReport
Build( )

Private

CustomHtmlBody( )

Private

CustomHtmlHead( )

Private

GetRowFileName( )

Overridable

GetServerPrefix( )

Overridable

SetProperties( )

Private

WantHtml( )

Overridable

AcSection

AddContent( )

Callable

BuildFromRow( )

Private

BuildFromRowIntoFlow( )

Private

CommittedToFlow( )

Overridable

CommitRowToFlow( )

Private

DisableSubpage( )

Private

EnableSubpage( )

Private

FinishConnection( )

Overridable

FinishFlow( )

Overridable

FinishPage( )

Overridable

GetContents( )

Callable

GetCurrentRow( )

Callable

IsBlocked( )

Private

NewConnection( )

Private

NewPage( )

Overridable

Actuate Foundation Class Reference

Class or method

Classification

ObtainConnection( )

Overridable

PageBreakAfter( )

Overridable

PageBreakBefore( )

Overridable

SetSecurity( )

Overridable

StartFlow( )

Overridable

StartPage( )

Overridable

StartSubpage( )

Private

StopAfterCurrentFrame( )

Callable

StopAfterCurrentRow( )

Callable

StopNow( )

Callable

Terminate( )

Private

AcDataSection
AddFrameToPage( )

Private

BeginRow( )

Private

BuildRowContent( )

Private

BuildRowContentIntoFlow( )

Private

BuildSummaryList( )

Private

CanSpanCells( )

Private

CreateHtmlTablesAutomatically( )

Private

FinishContent( )

Private

FinishGroup( )

Private

FinishGroupIntoFlow( )

Private

GetAfter( )

Callable

GetBefore( )

Callable

GetCustomSummaryName( )

Private

GetDefaultSummaryName( )

Private

GetFirstPageFooter( )

Overridable

GetFirstPageHeader( )

Overridable

GetMinimumCellSize( )

Private

GetPageFooter( )

Callable

GetPageHeader( )

Callable

NewAfter( )

Overridable

NewBefore( )

Overridable
Chapter 1, The Actuate Foundation Class librar y

Class or method

Classification

NewContent( )

Overridable

NewPageFooter( )

Overridable

NewPageHeader( )

Overridable

OnEmptyGroup( )

Overridable

SetProperties( )

Private

ShowEmptyHtmlColumns( )

Private

StartGroup( )

Private

StartGroupIntoFlow( )

Private

Terminate( )

Private

AcReportSection
BuildIntoFlow( )

Private

BuildOnePass( )

Private

BuildTwoPass( )

Private

CreateSummary( )

Private

FinishBuild( )

Private

FinishDataStream( )

Overridable

GetAggregateValue( )

Private

GetDefaultSummaryName( )

Private

NewDataStream( )

Overridable

ObtainDataStream( )

Overridable

SetProperties( )

Private

SetSortKey( )

Overridable

StartBuild( )

Private

StartDataStream( )

Overridable

AcGroupSection

10

BuildFromRowIntoFlow( )

Private

GetAggregateValue( )

Private

GetDefaultSummaryName( )

Private

GetKey( )

Overridable

GetKeyString( )

Callable

IsSameKey( )

Overridable

SetTocEntry( )

Overridable

Actuate Foundation Class Reference

Class or method

Classification

AcConditionalSection
Build( )

Private

BuildFromRow( )

Private

ConditionIsTrue( )

Overridable

NewElse( )

Private

NewThen( )

Private

AcParallelSection
AddReport( )

Private

FillEmptyHtmlCells( )

Private

GetHtmlBorderWidth( )

Private

GetHtmlCell( )

Private

GetHtmlCellAlignment( )

Private

GetHtmlColumnCount( )

Private

GetHtmlRowCount( )

Private

GetHtmlTableColor( )

Private

NewContents( )

Private

AcSequentialSection
BuildFromRowIntoFlow( )

Private

BuildOneRow( )

Private

BuildOneRowIntoFlow( )

Private

NewContent( )

Overridable

SelectContent( )

Overridable

Page layout classes and methods


Use page layout classes and methods to customize building frames, flows, and
pages.
Class or method

Classification

AcPageList
ActivateFlow( )

Private

ActivateNextFlow( )

Private

ActivateSection( )

Private

Chapter 1, The Actuate Foundation Class library

11

12

Class or method

Classification

ActivateSections( )

Private

AddComponent( )

Private

AddComponentToFlow( )

Private

AddFrameToFlow( )

Private

AddSubpage( )

Private

AdjustFooter( )

Private

Checkpoint( )

Private

CommitSection( )

Private

CommitSections( )

Private

CreatePage( )

Private

DeactivateFlow( )

Private

DeactivateFlowTo( )

Private

DeactivatePage( )

Private

DeactivateSection( )

Private

EjectPage( )

Callable

EndACL( )

Private

FindFlowWithSpace( )

Private

GetActivePage( )

Private

GetCurrentFlow( )

Callable

GetCurrentPage( )

Callable

GetCurrentPageACL( )

Callable

GetEstimatedPageCount( )

Overridable

GetFirstPage( )

Callable

GetLastPage( )

Callable

GetPageCount( )

Callable

GetPageDepth( )

Private

IsFlowEmpty( )

Private

NeedHeight( )

Callable

NewPage( )

Overridable

PopPage( )

Private

PopPageFooter( )

Private

PopPageHeader( )

Private

Actuate Foundation Class Reference

Class or method

Classification

PopSection( )

Private

PopSubpage( )

Private

PrepareForOutput( )

Private

PushPageFooter( )

Private

PushPageHeader( )

Private

PushSection( )

Private

PushSubpage( )

Private

Restore( )

Private

SetActiveMode( )

Private

SetPassiveMode( )

Private

SetPendingPageBreak( )

Private

ShiftFooterUp( )

Private

StartACL( )

Private

SuspendBelow( )

Private

UseAcceleratedCheckpoints( )

Overridable

AcSimplePageList
NewPage( )

Private

AcLeftRightPageList
NewLeftPage( )

Overridable

NewPage( )

Private

NewRightPage( )

Overridable

SetProperties( )

Private

AcTitleBodyPageList
NewBodyPage( )

Overridable

NewPage( )

Private

NewTitlePage( )

Overridable

AcBaseFrame
Abandon( )

Private

AddToAdjustSize( )

Overridable

AddToPageList( )

Private

AdjustContentVerticalGeometry( )

Overridable

AdjustDependencies( )

Private

Chapter 1, The Actuate Foundation Class library

13

Class or method

Classification

BindToFlow( )

Overridable

ControlDependency( )

Private

FindContentByClass( )

Callable

FindContentByClassID( )

Callable

GetControl( )

Callable

GetControlValue( )

Callable

GetPageNumber( )

Callable

InitializeContentVariables( )

Private

IsFrame( )

Private

MakeContents( )

Overridable

RebindToFlow( )

Overridable

SetPageIndex( )

Private

SetProperties( )

Private

SplitContents( )

Callable

SplitFrame( )

Overridable

AcBasePage
BalanceFlowContent( )

Private

GetNextFlow( )

Private

NewPageState( )

Private

ShrinkToFit( )

Private

ResizeBy( )

Callable

AcSubPage
BindToFlow( )

Private

ComputeGeometry( )

Private

NewPageState( )

Private

RebindToFlow( )

Private

SetProperties( )

Private

ShrinkToFit( )

Private

AcPage

14

FormatPageNumber( )

Overridable

GetPageNumber( )

Callable

SetPageIndex( )

Private

Actuate Foundation Class Reference

Class or method

Classification

SetProperties( )

Private

AcDataFrame
BuildFromRowIntoFlow( )

Private

BuildIntoFlow( )

Private

AcFrame
AddToAdjustSizeList( )

Overridable

AddToFlow( )

Private

AddToPageList( )

Private

AdjustContentVerticalGeometry( )

Overridable

AutoSplitVertical( )

Overridable

CustomDHTMLFooter( )

Overridable

CustomDHTMLHeader( )

Overridable

GetBorderOrigin( )

Callable

GetBorderRect( )

Callable

GetBorderSize( )

Callable

NoSplitBottom( )

Overridable

NoSplitTop( )

Overridable

SplitMarginBottom( )

Overridable

SplitMarginTop( )

Overridable

SetProperties( )

Private

AcHtmlFrame
CanSpanCells( )

Private

GetBlankLineHeight( )

Private

SetProperties( )

Private

ShowEmptyHtmlColumns( )

Private

AcFlow
AddContent( )

Private

AddFooter( )

Private

AddFrame( )

Overridable

AddHeader( )

Overridable

Chapter 1, The Actuate Foundation Class library

15

Class or method

Classification

AddSubpage( )

Overridable

AdjustFooter( )

Overridable

BindFrame( )

Private

CanFitFrame( )

Callable

CanFitHeight( )

Overridable

GetFreeSpace( )

Overridable

GetInsideSize( )

Callable

IsEmpty( )

Overridable

PlaceFrame( )

Private

ReaddFrame( )

Private

ReleaseSpace( )

Overridable

ReserveSpace( )

Overridable

ResetSpace( )

Overridable

SetProperties( )

Private

ShiftFooterUp( )

Overridable

AcLinearFlow
AddHeader( )

Private

AddSubpage( )

Private

NewFactoryState( )

Private

ReaddFrame( )

Private

SetProperties( )

Private

AcTopDownFlow

16

AddFooter( )

Private

AlignFrame( )

Private

DetachContent( )

Private

PlaceFrame( )

Private

Actuate Foundation Class Reference

Control classes and methods


Use control classes and methods to manipulate the position and value of
visual controls.
Class or method

Classification

AcVisualComponent
AddMenuCommands( )

Overridable

AdjustSize( )

Overridable

AdjustVerticalGeometry( )

Overridable

AttachToPage( )

Private

ButtonSelect( )

Private

CanIncreaseHeight( )

Overridable

CanMoveUp( )

Overridable

CanReduceHeight( )

Overridable

CanSplitVertically( )

Overridable

ComputeLowestSplit( )

Overridable

CursorShape( )

Overridable

FindContainerByClass( )

Callable

FindLowestSplit( )

Overridable

FindPageContainerByClass( )

Overridable

GetBottom( )

Callable

GetFirstSlave( )

Overridable

GetFrame( )

Callable

GetFramePosn( )

Private

GetHeight( )

Callable

GetHtmlLinkTo( )

Callable

GetLastSlave( )

Overridable

GetLeft( )

Callable

GetLinkTo( )

Callable

GetMaster( )

Overridable

GetPage( )

Callable

GetPageContainer( )

Callable

Chapter 1, The Actuate Foundation Class library

17

18

Class or method

Classification

GetPageRange( )

Private

GetPixelSize( )

Private

GetRect( )

Callable

GetRight( )

Callable

GetTop( )

Callable

GetVisualComponent( )

Callable

GetWidth( )

Callable

HelpText( )

Callable

IsFirstSlave( )

Overridable

IsFrameDecoration( )

Overridable

IsHtmlFlowBreak( )

Private

IsMaster( )

Overridable

IsNormal( )

Overridable

IsSlave( )

Overridable

IsVisible( )

Overridable

IsVisual( )

Private

MaximumHeight( )

Overridable

MinimumHeight( )

Overridable

MoveBy( )

Callable

MoveByConstrained( )

Overridable

MoveTo( )

Callable

MoveToConstrained ( )

Overridable

OnActuate( )

Overridable

OnContextMenu( )

Overridable

OnCopyLink( )

Overridable

OnFollowLink( )

Overridable

OnHelp( )

Overridable

OnLButtonClick( )

Overridable

OnLButtonDblClick( )

Overridable

OnLButtonDown( )

Overridable

OnLButtonUp( )

Overridable

OnRButtonClick( )

Overridable

Actuate Foundation Class Reference

Class or method

Classification

OnRButtonDblClick( )

Overridable

OnRButtonDown( )

Overridable

OnRButtonUp( )

Overridable

ResizeBy( )

Callable

ResizeByConstrained( )

Overridable

ResizeTo( )

Callable

ResizeToConstrained( )

Overridable

Searchable( )

Overridable

SearchAlias( )

Overridable

Selectable( )

Overridable

SetLinkTo( )

Overridable

SetProperties( )

Private

ShowInHtml( )

Overridable

SplitVertically( )

Overridable

StatusText( )

Overridable

StreamComponentData( )

Private

TargetWindowName( )

Overridable

VerticalPosition( )

Overridable

VerticalSize( )

Overridable

AcControl
BalloonHelp( )

Overridable

Build( )

Private

BuildFromRow( )

Private

GetControlValue( )

Callable

GetHtmlText( )

Overridable

GetText( )

Overridable

GetValue( )

Callable

PageNo( )

Callable

PageNo$( )

Callable

SetDataValue( )

Callable

SetValue( )

Overridable

AcTextualControl

Chapter 1, The Actuate Foundation Class library

19

Class or method

Classification

No methods defined
AcBrowserScriptingControl
BrowserCode( )

Overridable

GetText( )

Overridable

AcDataControl
Build( )

Private

BuildFromRow( )

Private

FinishAggregate( )

Private

IsSummary( )

Overridable

Searchable( )

Private

Selectable( )

Private

SetProperties( )

Private

SetTocEntry( )

Overridable

AcCurrencyControl
SearchAttributeName( )

Private

SetProperties( )

Private

AcDateTimeControl
SearchAttributeName( )

Private

SetProperties( )

Private

AcDoubleControl
SearchAttributeName( )

Private

SetProperties( )

Private

AcIntegerControl
SearchAttributeName( )

Private

SetProperties( )

Private

AcTextControl
SearchAttributeName( )

Private

AcDynamicTextControl

20

BuildText( )
AcDynamicTextControl::BuildText
method

Overridable

GetAvailableHeight( )

Overridable

Actuate Foundation Class Reference

Class or method

Classification

GetAvailableWidth( )

Overridable

GetFixedWidthFontFaceName( )

Overridable

GetPlaintext( )

Overridable

GetTaggedText( )

Overridable

GetText( )

Overridable

KeepTaggedText( )

Overridable

LineHeightPadding( )

Overridable

LineSpacing( )

Overridable

LineWidthPadding( )

Overridable

MinimumLineHeight( )

Overridable

ProcessText( )

Overridable

SetTaggedText( )

Overridable

SpaceBetweenLines( )

Overridable

SpaceBetweenParagraphs( )

Overridable

TabPadding( )

Overridable

TabSpacing( )

Overridable

TextFormat( )

Overridable

WidowAndOrphanControl( )

Overridable

AcEllipseControl
SetProperties( )

Private

AcChart
CalculateEndingValue( )

Overridable

CalculateRangeUnit( )

Overridable

CalculateStartingValue( )

Overridable

CalculateTickInterval( )

Overridable

ComputeDualYMinMax( )

Overridable

ComputeLabels( )

Overridable

ComputeMinMax( )

Overridable

CustomDualYLabels( )

Overridable

FormatDualYLabel( )

Overridable

FormatXLabel( )

Overridable

FromatYLabel( )

Overridable

Chapter 1, The Actuate Foundation Class library

21

Class or method

Classification

GetSeriesKey( )

Overridable

AcDetailChart
AddPoint( )

Overridable

AddSeriesPoint( )

Overridable

CustomXLabels( )

Overridable

AcHLCChart
AddPoint( )

Overridable

GetCloseValue( )

Overridable

GetDateValue( )

Overridable

GetHighValue( )

Overridable

GetLabelValue( )

Overridable

GetLowValue( )

Overridable

GetOpenValue( )

Overridable

AcSummaryChart

22

ComputeCategoryRange( )

Overridable

ConvertCategoryExp( )

Overridable

CreateEmptyCategories( )

Overridable

PopulateCategoryIndex( )

Overridable

RoundToRange( )

Overridable

AcGraph

Overridable

CalculateEndingValue( )

Overridable

CalculateRange( )

Private

CalculateRangeUnit( )

Overridable

CalculateStartingValue( )

Overridable

CalculateTickIntervalUnit( )

Overridable

ComputeLabels( )

Callable

ComputeMinMax( )

Callable

ComputeXMinMax( )

Private

ComputeYMinMax( )

Private

ComputeYOverlayMinMax( )

Overridable

ComputeZMinMax( )

Private

ConvertRange( )

Private

CustomXLabels( )

Private

Actuate Foundation Class Reference

Class or method

Classification

CustomYLabels( )

Private

CustomYOverlayLabels( )

Overridable

CustomZLabels( )

Private

FormatXLabel( )

Overridable

FormatYLabel( )

Overridable

FormatYOverlayLabel( )

Overridable

FormatZLabel( )

Private

GetHitPoint( )

Callable

GetHitXValue( )

Callable

GetHitYValue( )

Callable

GetHitZValue( )

Private

GetHitSet( )

Callable

GetSeriesKey( )

Callable

RenderToFile( )

Private

SetProperties( )

Private

AcDetailGraph
AddSeriesPoint( )

Callable

CustomXLabels( )

Overridable

FindSeries( )

Private

GetZValue( )

Private

AcHLCGraph
AddPoint( )

Callable

GetCloseValue( )

Overridable

GetDateValue( )

Overridable

GetHighValue( )

Overridable

GetLabelValue( )

Overridable

GetLowValue( )

Overridable

GetOpenValue( )

Overridable

SetProperties( )

Private

AcSummaryGraph
ComputeCategoryRange( )

Overridable

ConvertCategoryKey( )

Overridable

Chapter 1, The Actuate Foundation Class library

23

Class or method

Classification

CreateEmptyCategories( )

Overridable

PopulateCategoryIndex( )

Overridable

RoundToRange( )

Overridable

AcImageControl
GetBaseImageName( )

Callable

GetFileName( )

Overridable

SetProperties( )

Private

AcHtmlImageControl
SetProperties( )

Private

AcHTMLObjectControl
No methods defined
AcHtmlAppletControl
HtmlParams( )

Overridable

IsHtmlFlowBreak( )

Private

SetParam( )

Callable

SetProperties( )

Private

AcHtmlPlugInControl
HtmlParams( )

Overridable

IsHtmlFlowBreak( )

Private

SetParam( )

Callable

SetProperties( )

Private

AcLabelControl
SetProperties( )

Private

AcLineControl
GetHtmlRuleHeight( )

Private

IsHtmlFlowBreak( )

Private

SetProperties( )

Private

AcHtmlRuleControl
GetHtmlRuleWidth( )

Private

SetProperties( )

Private

AcOleControl

24

Actuate Foundation Class Reference

Class or method

Classification

SetProperties( )

Private

AcOleContainerControl
CloseOrDeactivate( )

Overridable

CreateCloneFrom( )

Private

DoCloseOrDeactivate( )

Private

DoCreateCloneFrom( )

Private

DoFindOleClientItem( )

Private

DoGetKeyValues( )

Private

DoGetObject( )

Private

DoOleVerb( )

Private

DoVerb( )

Overridable

GetContainerItem( )

Private

GetKeyValues( )

Private

Object( )

Overridable

OnActivate( )

Overridable

OnCreate( )

Overridable

OnLButtonDblClk( )

Overridable

AcPageNumberControl( )
GetActualPageCount( )

Callable

GetActualPageNumber( )

Callable

GetFormattedPageNumber( )

Callable

GetVisiblePageCount( )

Callable

GetVisiblePageNumber( )

Callable

PageNOfM( )

Callable

AcRectangleControl( )
SetProperties( )

Private

Connection classes and methods


Use connection classes and methods to connect to a data source.
Class or method

Classification

AcConnection
Connect( )

Overridable
Chapter 1, The Actuate Foundation Class library

25

Class or method

Classification

Disconnect( )

Callable

IsConnected( )

Callable

RaiseError( )

Callable

AcDBConnection
DeleteConnection( )

Private

DoConnect( )

Private

DoDisconnect( )

Private

GetConnectionPtr( )

Private

GetGeneralError( )

Callable

GetGeneralErrorText( )

Callable

GetSpecificError( )

Callable

GetSpecificErrorText( )

Callable

InterfaceName( )

Private

MakeProcedureCall( )

Private

NewConnection( )

Private

Prepare( )

Callable

PutConnectionProperty( )

Private

RetrieveGeneralError( )

Private

RetrieveGeneralErrorText( )

Private

RetrieveSpecificError( )

Private

RetrieveSpecificErrorText( )

Private

SetConnectionProperty( )

Private

AcDB2Connection
InterfaceName( )

Private

SetProperties( )

Private

AcInformixConnection
InterfaceName( )

Private

SetProperties( )

Private

AcMSSQLConnection

26

InterfaceName( )

Private

SetProperties( )

Private

Actuate Foundation Class Reference

Class or method

Classification

AcODBCConnection
InterfaceName( )

Private

SetProperties( )

Private

AcOracleConnection
InterfaceName( )

Private

MakeProcedureCall( )

Private

SetProperties( )

Private

AcProgressConnection
InterfaceName( )

Private

SetProperties( )

Private

AcProgressSQL92Connection
AcSybaseConnection
InterfaceName( )

Private

SetProperties( )

Private

AcDBStatement
AllocateCursor( )

Callable

BindParameter( )

Callable

BindStatementParameter( )

Private

DefineProcedureInputParameter( )

Callable

DefineProcedureOutputParameter( )

Callable

DefineProcedureReturnParameter( )

Private

DeleteStatement( )

Private

DoDefineProcedureParameter( )

Private

DoExecute( )

Private

DoGetOutputParameter( )

Private

DoGetProcedureStatus( )

Private

DoPrepare( )

Private

Execute( )

Callable

GetOutputCount( )

Callable

GetOutputParameter( )

Callable

GetParameterCount( )

Callable

Chapter 1, The Actuate Foundation Class library

27

Class or method

Classification

GetProcedureStatus( )

Callable

GetStatementText( )

Callable

OpenCursor( )

Callable

Prepare( )

Callable

RetrieveStatementOutputCount( )

Private

RetrieveStatementParameterCount( )

Private

RetrieveStatementText( )

Private

AcDBCursor

28

BindColumn( )

Callable

BindParameter( )

Callable

CloseCursor( )

Callable

DefineProcedureInputParameter( )

Callable

DefineProcedureOutputParameter( )

Callable

DefineProcedureReturnParameter( )

Callable

DoAllocateCursor2( )

Private

DoBindCursorParameter( )

Private

DoBindOutput( )

Private

DoCloseCursor( )

Private

DefineProcedureParameter( )

Private

DefineProcedureReturnParameter( )

Private

DoDeleteCursor( )

Private

DoFetch( )

Private

DoOpenCursor( )

Private

DoStartNextSet( )

Private

Fetch( )

Callable

GetConnection( )

Callable

GetOutputParameter( )

Private

GetProcedureStatus( )

Private

GetStatement( )

Callable

IsOpen( )

Callable

OpenCursor( )

Callable

StartNextSet( )

Callable

Actuate Foundation Class Reference

Collection classes and methods


Use collection classes and methods to work with arrays.
Method

Classification

AcCollection
IsEmpty( )

Callable

GetCount( )

Callable

NewIterator( )

Overridable

RemoveAll( )

Callable

Remove( )

Callable

AcOrderedCollection
AddToHead( )

Callable

AddToTail( )

Callable

Copy( )

Callable

GetAt( )

Callable

GetHead( )

Callable

GetTail( )

Callable

RemoveHead( )

Callable

RemoveTail( )

Callable

AcList
AddToHead( )

Callable

Contains( )

Callable

Copy( )

Callable

GetIndex( )

Callable

InsertAfter( )

Callable

InsertBefore( )

Callable

RemoveHead( )

Callable

AcSingleList
Compare( )

Overridable

FindByValue( )

Callable

NewNode( )

Private

AcObjectArray
RemoveAt( )

Private

Chapter 1, The Actuate Foundation Class library

29

Method

Classification

RemoveEmptyEntries( )

Private

ResizeTo( )

Callable

SetAt( )

Callable

SetGrowthIncrement( )

Callable

AcIterator
GetItem( )

Callable

GetNext( )

Callable

GetPosition( )

Callable

HasMore( )

Callable

IsDone( )

Callable

MoveNext( )

Callable

MoveTo( )

Callable

Restart( )

Callable

SkipForwardTo( )

Callable

SkipTo( )

Callable

AcSingleListIterator
Copy( )

Private

GetNext( )

Private

HasMore( )

Private

New( )

Private

Restart( )

Private

SkipForwardTo( )

Private

Data stream classes and methods


Use data stream classes and methods to work with data rows, data sources,
and filters.
Class or method

Classification

AcDataRow

30

BuildBinding( )

Private

GetValue( )

Callable

OnRead( )

Overridable

Actuate Foundation Class Reference

Class or method

Classification

SetValue( )

Overridable

AcDataAdapter
AddRow( )

Callable

AddSortKey( )

Callable

CanSeek( )

Overridable

CanSortDynamically( )

Overridable

CloseConnection( )

Overridable

Fetch( )

Overridable

Finish( )

Overridable

FlushBuffer( )

Callable

FlushBufferTo( )

Overridable

GetConnection( )

Callable

GetPosition( )

Callable

IsStarted( )

Callable

NewConnection( )

Overridable

NewDataRow( )

Overridable

OpenConnection( )

Overridable

Rewind( )

Callable

SeekBy( )

Callable

SeekTo( )

Overridable

SeekToEnd( )

Callable

SetConnection( )

Callable

Start( )

Overridable

AcDataSource
HasFetchedLast( )

Callable

AcDatabaseSource
AllocateCursor( )

Private

BindDataRow( )

Overridable

BindStaticParameters( )

Overridable

GetCursor( )

Callable

GetDBConnection( )

Callable

OpenCursor( )

Callable

Chapter 1, The Actuate Foundation Class library

31

Class or method

Classification

AcQuerySource
AddSortKey( )

Callable

AdhocToSQL( )

Private

ConditionExpression( )

Private

GetStatementText( )

Callable

ObtainSelectStatement( )

Overridable

SetupAdHocParameters( )

Overridable

AcSqlQuerySource
ObtainSelectStatement( )

Overridable

SetAdHocParameter( )

Callable

AcTextQuerySource
AddDynamicOrderItems( )

Private

AddSortKey( )

Callable

ApplyAdHocExpression( )

Private

CanSortDynamically( )

Overridable

ObtainSelectStatement( )

Overridable

SetAdHocCondition( )

Callable

AcStoredProcedureSource
No methods defined
AcDataFilter
No methods defined
AcSingleInputFilter
Fetch( )

Overridable

GetInput( )

Callable

NewInputAdapter( )

Overridable

SetInput( )

Callable

AcMemoryBuffer

32

AddRowToBuffer( )

Callable

FlushBufferTo( )

Callable

GetBufferCount( )

Callable

GetBufferStart( )

Callable

Actuate Foundation Class Reference

Class or method

Classification

AcRecordBuffer
No methods defined
AcMemoryDataSorter
Compare( )

Overridable

CompareKeys( )

Callable

Sort( )

Private

SortArray( )

Private

AcMultipleInputFilter
NewInputAdapter( )

Overridable

Excel classes and methods


Use Excel classes and methods to generate Excel files.
Class or method

Classification

AcExcelApp
AddWorkbook( )

Public

DeleteWorkbook( )

Public

FindWorkbook( )

Public

New( )

Public

SetFontScalingFactor( )

Public

AcExcelCell
No methods defined
AcExcelColumn
GetColumnWidth( )

Public

SetColumnWidth( )

Public

AcExcelRange
GetBackgroundColor( )

Public

GetBorder( )

Public

GetFont( )

Public

GetHorizontalAlignment( )

Public

GetIndent( )

Public

Chapter 1, The Actuate Foundation Class library

33

Class or method

Classification

GetMergeCells( )

Public

GetNumberFormat( )

Public

GetValue( )

Public

GetValueAsDate( )

Public

GetVerticalAlignment( )

Public

GetWrapText( )

Public

SetBackgroundColor( )

Public

SetBorder( )

Public

SetFont( )

Public

SetHorizontalAlignment( )

Public

SetIndent( )

Public

SetMergeCells( )

Public

SetNumberFormat( )

Public

SetValue( )

Public

SetVerticalAlignment( )

Public

SetWrapText( )

Public

AcExcelRow
GetRowHeight( )

Public

SetRowHeight( )

Public

AcExcelWorkbook
AddWorksheet( )

Public

DeleteWorksheet( )

Public

FindWorksheet( )

Public

GetFullName( )

Public

Save( )

Public

SaveAs( )

Public

AcExcelWorksheet

34

Autofit( )

Public

GetCell( )

Public

GetColumn( )

Public

GetDisplayGridlines( )

Public

GetName( )

Public

Actuate Foundation Class Reference

Class or method

Classification

GetRange( )

Public

GetRow( )

Public

SetDisplayGridlines( )

Public

SetName( )

Public

Internal tools classes and methods


Use internal tools classes and methods to customize processing.
Class or method

Classification

AcPopUpMenu
AddCascade( )

Callable

AddItem( )

Callable

AddSeparator( )

Callable

CheckMenuItem( )

Callable

EnableMenuItem( )

Callable

MakeMenu( )

Overridable

Run( )

Callable

AcReportController
AttachReport( )

Callable

AttachToThisReport( )

Callable

FollowLink( )

Callable

p_ChangePage( )

Private

p_FollowLink( )

Private

p_GetThisViewer( )

Private

p_OpenReport( )

Private

ShowNextPage( )

Callable

ShowPage( )

Callable

ShowPrevPage( )

Callable

AcReportView
AddMenuItem( )

Private

CreatePopupMenu( )

Private

DeselectAll( )

Private

Chapter 1, The Actuate Foundation Class library

35

36

Class or method

Classification

DisplayHelp( )

Private

DisplayPage( )

Private

EndSelectionScan( )

Callable

FinishView( )

Private

GenerateHTML( )

Private

GenerateHTMLforComponent( )

Private

GenerateXMLData( )

Overridable

GetCurrentPageIndex( )

Private

GetNextSelection( )

Callable

GetPageCount( )

Private

GetPageByIndex( )

Private

GetSelectionCount( )

Callable

IsLandscape( )

Private

IsNextPageOK( )

Private

IsPageOK( )

Private

IsPrevPageOK( )

Private

IsSelected( )

Private

New( )

Private

NewMenu( )

Private

OnNewPage( )

Private

OnShowPage( )

Private

OnPrintPage( )

Private

p_AddMenuCascade( )

Private

p_AddMenuEntry( )

Private

p_AddSeparator( )

Private

p_CheckMenuItem( )

Private

p_CreatePopupMenu( )

Private

p_DeleteMenu( )

Private

p_DisplayMenu( )

Private

p_DoPrint( )

Private

p_DeleteMenu( )

Private

p_DeselectAll( )

Private

Actuate Foundation Class Reference

Class or method

Classification

p_EnableMenuItem( )

Private

p_EndSelectionScan( )

Private

p_GetSelectionCount( )

Private

p_GetNextSelection( )

Private

p_IsSelected( )

Private

p_PreparePage( )

Private

p_PreparePrint( )

Private

p_RunMenu( )

Private

PrintAllPages( )

Callable

PrintPage( )

Private

PrintPages( )

Callable

SelectComponent( )

Private

ShowFirstPage( )

Private

ShowLastPage( )

Private

ShowNextPage( )

Private

ShowPageByIndex( )

Private

ShowPreviousPage( )

Private

StartSelectionScan( )

Callable

StartView( )

Private

AcVisitor
VisitBaseFrame( )

Overridable

VisitBasePage( )

Overridable

VisitComponent( )

Overridable

VisitConditionalSection( )

Overridable

VisitContents( )

Overridable

VisitControl( )

Overridable

VisitCurrencyControl( )

Overridable

VisitDataControl( )

Overridable

VisitDataFrame( )

Overridable

VisitDataSection( )

Overridable

VisitDateTimeControl( )

Overridable

VisitDetailGraph( )

Overridable

Chapter 1, The Actuate Foundation Class library

37

38

Class or method

Classification

VisitDoubleControl( )

Overridable

VisitDynamicTextControl( )

Overridable

VisitEllipseControl( )

Overridable

VisitFlow( )

Overridable

VisitFrame( )

Overridable

VisitGraph( )

Overridable

VisitGroupSection( )

Overridable

VisitHLCGraph( )

Overridable

VisitHtmlAppletControl( )

Overridable

VisitHtmlImageControl( )

Overridable

VisitHtmlObjectControl( )

Overridable

VisitHtmlPlugInControl( )

Overridable

VisitHtmlReport( )

Overridable

VisitHtmlRuleControl( )

Overridable

VisitImageControl( )

Overridable

VisitIntegerControl( )

Overridable

VisitLabelControl( )

Overridable

VisitLeftRightPageList( )

Overridable

VisitLinearFlow( )

Overridable

VisitLineControl( )

Overridable

VisitOleControl( )

Overridable

VisitOleContainerControl( )

Overridable

VisitPage( )

Overridable

VisitPageList( )

Overridable

VisitPageNumberControl( )

Overridable

VisitParallelSection( )

Overridable

VisitRectangleControl( )

Overridable

VisitReport( )

Overridable

VisitReportSection( )

Overridable

VisitSequentialSection( )

Overridable

VisitSimplePageList( )

Overridable

VisitSubpage( )

Overridable

Actuate Foundation Class Reference

Class or method

Classification

VisitSummaryGraph( )

Overridable

VisitTextControl( )

Overridable

VisitTextualControl( )

Overridable

VisitTitleBodyPageList( )

Overridable

VisitVisualComponent( )

Overridable

AcXMLDataVisitor
EndElement( )

Callable

GenerateAttribute( )

Callable

GenerateEmptyElement( )

Callable

GenerateText( )

Callable

GenerateXML( )

Callable

StartElement( )

Callable

Chapter 1, The Actuate Foundation Class library

39

40

Actuate Foundation Class Reference

Chapter

2
AFC data types

Chapter 2

This chapter lists the AFC data types.

Chapter 2, AFC data types

41

About the AFC data types


AFC data types are either typedefs or structures:


A typedef is an alias for the Basic data types, typically an Integer. The AFC
framework uses typedefs to create a type that has additional rules beyond
what a simple Integer provides. These rules include a limited range, special
display formatting, and a set of related constants. For example, colors
(AcColor) can be in the range 0 to hexadecimal FFFFFF.

A structure is a group of variables that together describe a property. The


structure members can be Basic data types, such as an Integer, or other AFC
defined structures. In some cases structures are nested.

Some types are intended to be enumerations (enums). An enum is one whose


value can only be one of the associated constants. For example, a Boolean can
only be True or False. Other types can have constants also. In this case, the
constant provides a convenient shorthand for certain values.

AFC data
types

42

AcAutoSplit
AcBitmapStyle
AcChartAxisOrigin
AcChartBarGrouping
AcChartBarOrientation
AcChartBorderStyle
AcChartHLCBarStyle
AcChartLegendPosition
AcChartLinePen
AcChartLineStyle
AcChartPointLabelStyle
AcChartRoundTo
AcChartTickStyle
AcChartType
AcChartUnitType
AcChartXAxisPosition
AcChartXValueSet
AcChartXLabelStyle
AcChartYAxisPosition
AcChartYLabelStyle
AcChartYOrientation
AcColor
AcControlValueType
AcCursorShape
AcExcelBorder
AcExcelBorderType

Actuate Foundation Class Reference

AcExcelBorderName
AcExcelHorizontalAlignment
AcExcelVerticalAlignment
AcFlowPlacement
AcFont
AcGraphAxisStyle
AcGraphBarGrouping
AcGraphBarOrientation
AcGraphBorderStyle
AcGraphLabelStyle
AcGraphLegendPosition
AcGraphLineStyle
AcGraphPoint
AcGraphPointLabelStyle
AcGraphTickStyle
AcGraphType
AcGraphXAxisPosition
AcGraphXValueSet
AcGraphYAxisPosition
AcGraphYOrientation
AcGroupOnType
AcHtmlBackgroundStyle
AcHtmlFrameStyle
AcHtmlHorizontalAlignment
AcHtmlImageAlignment
AcHtmlImageMapType
AcHtmlPlugInUnits
AcHtmlTableCaptionStyle
AcHtmlTableStyle
AcHtmlTextAlignment
AcHtmlTextVertAlignment
AcHtmlTocStyle
AcHtmlUnits
AcImageEmbedType
AcLinePen
AcLineStyle
AcMargins
AcOffset
AcPageNumberStyle
AcPercentage
AcPoint
AcRectangle
AcRounding
AcSearchType

Chapter 2, AFC data types

43

AcAutoSplit

AcShiftKeyState
AcSize
AcTextClipStyle
AcTextFormat
AcTextJustify
AcTextPlacement
AcTextVerticalPlacement
AcTOCNodeType
AcVerticalPosition
AcVerticalSize
AcWordWrapStyle
AcXMLType
ViewContext

AcAutoSplit
AcAutoSplit is an Integer that specifies how a dynamic text control or a frame
containing a dynamic text control is split.

44

Constant

Value

Description

DefaultSplitting

The frame or control is split only if it


contains a dynamic text control. In
this case, the frame is split to
maximize use of space within a flow.

DoNotSplit

The frame or control is not split.

SplitIfNecessary

The frame or control is split if it


cannot fit as the first non-decoration
frame within a flow.

SplitIfPossible

The frame or control is split when


possible, to maximize use of space
within a flow.

Actuate Foundation Class Reference

AcBitmapStyle

AcBitmapStyle
AcBitmapStyle specifies how a bitmap is displayed.
Constant

Value

Description

StretchToFit

Stretches to fit (both horizontal and


vertical)

KeepAspectRatio 1

Keeps aspect ratio and sizes the


bitmap to fit within the control

KeepOriginal
Size

Shows the original size and clips the


parts of the bitmap that do not fit
within the control

AcChartAxisOrigin
AcChartAxisOrigin is an Integer that specifies how to display the x-axis for a
chart.
Constant

Value

Description

ChartZero
Origin

Displays the x-axis originating with


zero

ChartAuto
Origin

Displays the x-axis originating with


the smallest value present in the data
set

ChartCustom
Origin

Displays the x-axis according to


values specified in the chart design

AcChartBarGrouping
AcChartBarGrouping is an Integer that specifies how bars are grouped in bar
charts.
Constant

Value

Description

ChartBarNo
Grouping

Produces a bar chart with no


grouping

ChartBarCluster

Produces a cluster bar chart

Chapter 2, AFC data types

45

AcChartBarOrientation

Constant

Value

Description

ChartBarStack

Produces a stacked bar chart

ChartBarStack
Percentage

Produces a stacked percentage bar


chart

AcChartBarOrientation
AcChartBarOrientation is an Integer that specifies the orientation for bar
charts.
Constant

Value

Description

ChartBarVertical

Produces a vertical bar chart

ChartBar
Horizontal

Produces a horizontal left-based


chart

ChartBarHorizon 2
talReversed

Produces a horizontal right-based


chart

AcChartBorderStyle
AcChartBorderStyle is an Integer that specifies the style of the border around
the chart.

46

Constant

Value

Description

ChartNoBorder

Displays no border

ChartSolid
Border

Displays a solid border

ChartDrop
Shadow

Displays a shadow border

ChartShadow
AndBorder

Displays a shadow and border


combination

Actuate Foundation Class Reference

AcChartHLCBarStyle

AcChartHLCBarStyle
AcChartHLCBarStyle is an Integer that specifies how the chart displays high,
low, and close tick marks.
Constant

Value

Description

ChartHLCAll
Bars

Displays all tick marks

ChartHLCNo
Close

Does not display the close tick marks

ChartHLCNo
Bars

Displays no tick marks

ChartHLCNo
HighLowBars

Does not display the high and low


tick marks

AcChartLegendPosition
AcChartLegendPosition is an Integer that specifies the position of the legend
within a chart.
Constant

Value

Description

ChartLegend
None

Displays no legend

ChartLegend
Top

Displays the legend at the top of the


chart

ChartLegend
TopRight

Displays the legend at the top right


of the chart

ChartLegend
TopLeft

Displays the legend at the top left of


the chart

ChartLegend
Left

Displays the legend at the left of the


chart

ChartLegend
Right

Displays the legend at the right of


the chart

ChartLegend
BottomLeft

Displays the legend at the bottom


left of the chart

Chapter 2, AFC data types

47

AcChartLinePen

Constant

Value

Description

ChartLegend
Bottom

Displays the legend at the bottom of


the chart

ChartLegend
BottomRight

Displays the legend at the bottom


right of the chart

AcChartLinePen
AcChartLinePen is an Integer that specifies the style of line to draw. Note that
although these styles mimic the Windows line styles, they are not meant to
duplicate Windows values and do not have a direct numeric mapping to
Windows styles.
Constant

Value

Description

ChartSingleLine

Draws a single solid line

ChartDashLine

Draws a dashed line

ChartDotLine

Draws a line in the format:


-- -- -- -- -- -- -- -- --

ChartDashDot
Line

Draws a line the format:


----- -- ----- --

ChartDashDot
DotLine

Draws a line in the format:


----- -- -- ----- -- --

ChartNullLine

Does not draw a line

AcChartLineStyle
AcChartLineStyle is an Integer that specifies the line style of a line chart.

48

Constant

Value

Description

ChartDefault
Lines

Displays the chart using the default


line styles

ChartPattern
Lines

Displays the chart using the value of


the LineStylesList property

ChartThickLines

Displays the chart using thick line


styles

Actuate Foundation Class Reference

AcChartPointLabelStyle

AcChartPointLabelStyle
AcChartPointLabelStyle is an Integer that specifies how to display point labels
in charts.
Constant

Value

Description

ChartNoPoint
Labels

Displays no labels

ChartTextLabels

Displays text labels for a data point.


The text is the string label associated
with a data point.

ChartNumeric
Labels

Displays numeric labels. The


numbers are based on the y values of
the data point.

ChartColored
TextLabels

Displays text labels in color. The text


is the string label associated with a
data point.

ChartColored
NumericLabels

Displays numeric labels in color. The


numbers are based on the y values of
the data point. The color is the same
as the series color.

AcChartRoundTo
AcChartRoundTo is an Integer that specifies how data is rounded.
Constant

Value

Description

ChartRoundTo
Interval

Rounds data based on the


TickInterval unit

ChartRoundTo
Range

Rounds data based on the RangeUnit

Chapter 2, AFC data types

49

AcChartTickStyle

AcChartTickStyle
AcChartTickStyle is an Integer that specifies the tick marks for a chart axis.
Constant

Type

Description

ChartNoTicks

Displays no tick marks

ChartAutoTicks

Displays tick marks computed


automatically

ChartCustom
TickMarks

Displays custom tick marks

AcChartType
AcChartType is an Integer that specifies the type of chart to render.

50

Constant

Value

Description

Chart2DArea

Renders a two-dimensional area


chart

Chart3DArea

Renders a three-dimensional
representation of an area chart

Chart2DBar

Renders a two-dimensional bar chart

Chart3DBar

Renders a three-dimensional
representation of a bar chart

Chart2DPie

Renders a two-dimensional pie chart

Chart3DPie

Renders a three-dimensional
representation of a pie chart

ChartCandle
Stick

Renders a candlestick chart

ChartHLC

Renders a High-Low-Close chart

ChartLine

Renders a line chart

ChartOHLC

10

Renders an Open-High-Low-Close
chart

ChartScatter

11

Renders a scatter plot chart

ChartTape

12

Renders a tape chart

Actuate Foundation Class Reference

AcChartUnitType

AcChartUnitType
AcChartUnitType is an Integer that specifies the unit used for the Range.
Constant

Value

Description

ChartDayUnit

Displays the range in days

ChartDefault
Unit

The system calculates the Range and


RangeUnit and ignores the value of
Range

ChartHourUnit

Displays the range in hours

ChartMinuteUnit 3

Displays the range in minutes

ChartMonthUnit

Displays the range in months

ChartNumber
Unit

Displays the range in numbers

ChartQuarter
Unit

Displays the range in quarters

ChartWeekUnit

Displays the range in weeks

ChartYearUnit

Displays the range in years

AcChartXAxisPosition
AcChartXAxisPosition is an Integer that specifies where to display the x-axis.
Constant

Value

Description

ChartXAxis
Auto

Dynamically determines where to


display the x-axis

ChartXAxisTop

Displays the x-axis at the top of the


chart

ChartXAxis
Bottom

Displays the x-axis at the bottom of


the chart

ChartXAxis
None

Displays no x-axis

Chapter 2, AFC data types

51

AcChartXValueSet

AcChartXValueSet
AcChartXValueSet is an Integer that specifies the number of available x values.
Constant

Value

Description

ChartDefaultX
Values

Uses the value scale inherent to each


chart type

ChartXValuePer
DataSet

All points share one set of x values

ChartXValuePer
Point

Each point has its own x value

AcChartXLabelStyle
AcChartXLabelStyle is an Integer that specifies the source of the x-axis labels.
Constant

Value

Description

ChartNoXLabels

Displays no labels

ChartAutoX
Labels

Displays labels computed


automatically

ChartCustomX
Labels

Displays custom labels based on the


value of the XLabelsList property

ChartExpression
XLabels

Displays labels computed from an


expression specified in the LabelExp
property

AcChartYAxisPosition
AcChartYAxisPosition is an Integer that specifies where to display the y-axis.

52

Constant

Value

Description

ChartYAxisAuto

Dynamically determines where to


display the y-axis

ChartYAxisLeft

Displays the y-axis at the left of the


chart

Actuate Foundation Class Reference

AcChartYLabelStyle

Constant

Value

Description

ChartYAxisRight

Displays the y-axis at the right of the


chart

ChartYAxisNone

Displays no y-axis

AcChartYLabelStyle
AcChartYLabelStyle is an Integer that specifies the source of the y-axis labels.
Constant

Value

Description

ChartNoYLabels

Displays no labels

ChartAutoY
Labels

Displays labels computed


automatically

ChartCustomY
Labels

Displays custom labels based on the


value of the YLabelsList property

ChartIntervalY
Labels

Displays labels based on the value of


the YTickInterval property

AcChartYOrientation
AcChartYOrientation is an Integer that specifies the orientation of the y-axis
title.
Constant

Value

Description

ChartYLabelUp

Displays the y-axis title vertically


from bottom to top

ChartYLabel
Horiz

Displays the y-axis title horizontally

ChartYLabel
Down

Displays the y-axis title vertically


from top to bottom

Chapter 2, AFC data types

53

AcColor

AcColor
AcColor is an Integer that contains a color expressed as a standard Windows
RGB value. The AFC supports the standard Windows 16 million colors. The
AFC framework defines the following constants for common Windows colors.
Constant

RGB Value

Black

&H00

Blue

&HFF0000

Cyan

&HFFFF00

DarkGray

&H404040

Forest

&H7F00

Gray

&H808080

Green

&HFF00

LightGray

&HC0C0C0

Magenta

&HFF00FF

Maroon

&H7F

Navy

&H7F0000

Olive

&H7F7F

Purple

&H7F007F

Red

&HFF

Teal

&H7F7F00

White

&HFFFFFF

Yellow

&HFFFF

Considerations for HTML reports


AcColor adds a new color symbol for use with HTML reports.

54

Constant

Description

TransparentColor

Specifies that the object use the color previously


specified in the HTML file. For example, if you create a
table and you want the table background color to be the
same as the background color of the report, specify
TransparentColor as the tables background color.

Actuate Foundation Class Reference

AcControlValueType

AcControlValueType
AcControlValueType is an Integer that determines whether the control takes a
single value or multiple values based on the expression in the ValueExp
property or independent of the ValueExp property.
Constant

Description

AutoValueControl The control takes a single value or multiple values


based on the expression in the ValueExp property.
PerRowControl

The control takes a single value, independent of the


ValueExp property.

SummaryControl

The control takes multiple values, independent of the


ValueExp property.

AcCursorShape
AcCursorShape is an Integer that contains the cursor shape. The following
constants define the cursor shape for AcCursorShape.
Constant

Description

ArrowCursor

Default arrow cursor

ActiveCursor

Actuate active cursor for elements that are selectable

IBeamCursor

Windows I-beam cursor

WaitCursor

Windows wait cursor (usually an hourglass)

CrossCursor

Windows cross cursor (cross-hair)

UpArrowCursor

Windows up-arrow cursor (vertical)

SizeCursor

Windows resize cursor (cross with arrows in 4


directions)

IconCursor

Windows icon cursor

SizeNWSE
Cursor

Windows NWSE cursor (slanting top-left to bottomright)

SizeNESW
Cursor

Windows NESW cursor (slanting top-right to bottomleft)

SizeWECursor

Windows horizontal resize arrow

SizeNSCursor

Windows vertical resize arrow

Chapter 2, AFC data types

55

AcExcelBorder

Constant

Description

SizeAllCursor

NT cursor. Not available in Windows 3.1

NoCursor

NT No cursor (circle with backward slanting bar). Not


available in Windows 3.1

AppStarting
Cursor

NT Application starting cursor (arrow with hour glass).


Not available in Windows 3.1

HandCursor

Actuate hyperlink cursor, shaped like a hand

QuestionCursor

Actuate help cursor, shaped like a question mark

AcExcelBorder
AcExcelBorder is a structure that describes characteristics of the border.
Member Name

Type

Description

Style

AcExelBorderType

The style of the border

Color

AcColor

The color of the border

AcExcelBorderType
AcExcelBorderType specifies the line style of the border.

56

Constant

Value Description

ExcelBorderNone

No border

ExcelBorderThin

A thin line

ExcelBorderMedium

A medium line

ExcelBorderDashed

A dashed line

ExcelBorderDotted

A dotted line

ExcelBorderThick

A thick line

ExcelBorderDouble

A double line

ExcelBorderHair

A hairline

ExcelBorderMediumDashed

A dashed-line of
medium thickness

ExcelBorderDashDot

A dash-dot line

Actuate Foundation Class Reference

AcExcelBorderName

Constant

Value Description

ExcelBorderMediumDashDot

10

ExcelBorderDashDotDot

11

A dash-dot line of
medium thickness
A dash-dot-dot line

ExcelBorderMediumDashDotDot 12

A dash-dot-dot line of
medium thickness

ExcelBorderSlantedDashDot

A slanted dash-dot line

13

AcExcelBorderName
AcExcelBorderName specifies the side of the border.
Constant

Value Description

ExcelBorderTop

The top border

ExcelBorderBottom

The bottom border

ExcelBorderLeft

The left border

ExcelBorderRight

The right border

AcExcelHorizontalAlignment
AcExcelHorizontalAlignment specifies the horizontal alignment of data in
cells.
Constant

Value Description

ExcelHAlignGeneral 0

The default alignment:


 Aligns text at the left edge of
the cell
 Aligns numbers, dates, and
times at the right edge of the
cell
 Centers logical and error
values

ExcelHAlignLeft

Aligns data at the left edge of the


cell

ExcelHAlignCenter

Centers data in the cell

Chapter 2, AFC data types

57

AcExcelVerticalAlignment

Constant

Value Description

ExcelHAlignRight

Aligns data at the right edge of the


cell

ExcelHAlignFill

Repeats characters in the left-most


cell in the selection across the
selected range

ExcelHAlignJustify

Adjusts the spacing between


words so that all lines are as wide
as the cell

ExcelHAlignCenter
AcrossSelection

Centers data of the left-most cell


across the selection in a range

AcExcelVerticalAlignment
AcExcelVerticalAlignment specifies the vertical alignment of data in cells.
Constant

Value Description

ExcelVAlignTop

Aligns data at the top of the cell

ExcelVAlignCenter

Aligns data at the center of the cell

ExcelVAlignBottom 2

Aligns data at the bottom of the


cell

ExcelVAlignJustify

Adjusts the spacing between lines


so that all lines are as tall as the
cell

AcFlowPlacement
AcFlowPlacement is an Integer that describes how a frame appears within a
flow when the frame is narrower than the flow.

58

Constant

Value Description

FlowAlignCenter

Aligns a frame in the center of a flow

FlowAlignLeft

Aligns a frame to the left of a flow

Actuate Foundation Class Reference

AcFont

Constant

Value Description

FlowAlignRight

Aligns a frame to the right of a flow

FlowAlignCustom

Aligns frames in the flow at the


position given by the frames
Position.X member

AcFont
AcFont is a structure that describes a font in a device-independent way.
Member Name

Type

Description

Bold

Boolean

True = bold text

Color

AcColor

Color of the text

FaceName

String

Font name of the text

Italic

Boolean

True = italic text

Size

Integer

Size of the text in points

StrikeThrough

Boolean

True = strike through text

Underline

Boolean

True = underlined text

Considerations for HTML reports


HTML provides limited support for choosing fonts. AFC maps the AcFont
type into corresponding HTML font commands as shown in the following
table.
Font Property

HTML Tag

Comments

FaceName

<Font Face=
name>
<PlainText>
</PlainText >

Sets the font face name. There are


two special names: Default, Fixed
that map to the browsers default
fonts

Bold

<B> </B>

Sets bold text

Color

<Font Color=
color>

Sets the font color

Italic

<I> </I>

Sets italic text

Chapter 2, AFC data types

59

AcGraphAxisStyle

Font Property

HTML Tag

Comments

Size

<Font Size=n>

Sets the font size. The size is set in


the Design Editor in points, but is
mapped to a relative size when the
report generates HTML

StrikeThrough

<S> </S>

Sets strike-through text

Underline

<U> </U>

Sets underline text

In HTML, a page can set different font options independently, and the options
remain in effect until changed later down the page. In Actuate, each control
has its own font specification. Therefore, AFC generates a complete set of font
commands for each individual control, and settings for one control do not
affect adjacent controls. In practice, to reduce the size of the generated report,
AFC generates HTML for the font only when an attribute changes.

AcGraphAxisStyle
AcGraphAxisStyle is an Integer that specifies how to display the x-axis for
graphs.

60

Constant

Value

Description

GraphZero
Origin

Displays the x-axis originating with


zero

GraphAuto
Origin

Displays the x-axis originating with


the smallest values present in the
data set

GraphCustom
Origin

Displays the x-axis according to


values you specify

Actuate Foundation Class Reference

AcGraphBarGrouping

AcGraphBarGrouping
AcGraphBarGrouping is an Integer that specifies how bars are to be grouped
in bar graphs.
Constant

Value

Description

GraphBarNo
Grouping

Produces a bar graph with no


grouping

GraphBarCluster

Produces a cluster bar graph

GraphBarStack

Produces a stacked bar graph

GraphBarStack
Percentage

Produces a stacked percentage bar


graph

GraphBar
ClusterZ

Produces a three-dimensional cluster


bar graph

AcGraphBarOrientation
AcGraphBarOrientation is an Integer that specifies the orientation for bar
graphs.
Constant

Value

Description

GraphBarVertical 0

Produces a vertical bar graph

GraphBar
Horizontal

Produces a horizontal left-based


graph

GraphBar
Horizontal
Reversed

Produces a horizontal right-based


graph

Chapter 2, AFC data types

61

AcGraphBorderStyle

AcGraphBorderStyle
AcGraphBorderStyle is an Integer that specifies the style of a title in a graph.
Constant

Value

Description

GraphNoBorder

Displays no border

GraphSolid
Border

Displays a solid border

GraphDrop
Shadow

Displays a shadow

GraphShadow
AndBorder

Displays a shadow and border


combination

GraphRaised
Border

Displays a raised border

GraphLowered
Border

Displays a sunken border

AcGraphLabelStyle
AcGraphLabelStyle is an Integer that specifies the source of axis labels.
Constant

Value

Description

GraphNoLabels

Displays no labels

GraphAuto
Labels

Displays labels computed


automatically

GraphCustom
Labels

Displays custom labels based on the


information you enter in the
XLabelsList property

GraphExpression 3
Labels

62

Actuate Foundation Class Reference

Displays labels computed from an


expression you specify in the
LabelExp property

AcGraphLegendPosition

AcGraphLegendPosition
AcGraphLegendPosition is an Integer that specifies the position of the legend
within a graph.
Constant

Value

Description

GraphLegend
None

Displays no legend

GraphLegend
Top

Displays the legend at the top of the


graph

GraphLegend
TopRight

Displays the legend at the top right


of the graph

GraphLegend
TopLeft

Displays the legend at the top left of


the graph

GraphLegend
Left

Displays the legend at the left of the


graph

GraphLegend
Right

Displays the legend at the right of


the graph

GraphLegend
BottomLeft

Displays the legend at the bottom


left of the graph

GraphLegend
Bottom

Displays the legend at the bottom of


the graph

GraphLegend
BottomRight

Displays the legend at the bottom


right of the graph

AcGraphLineStyle
AcGraphLineStyle is an Integer that specifies the style of the lines in a line
graph.
Constant

Value

Description

GraphDefault
Lines

Displays the graph using the default


line styles

GraphPattern
Lines

Displays the graph using the line


styles defined in patterns

GraphThickLines 2

Displays the graph using thick line


styles

Chapter 2, AFC data types

63

AcGraphPoint

AcGraphPoint
AcGraphPoint contains the data maintained for each data point in a graph.
Member Name

Type

Description

Double

The x value of the data point

Double

The y value of the data point

Double

The z value of the data point

Label

String

The label associated with the data


point

AcGraphPointLabelStyle
AcGraphPointLabelStyle is an Integer that specifies how to display point
labels for graphs.

64

Constant

Value

Description

GraphNoPoint
Labels

Does not display labels

GraphTextLabels

Displays text labels. This is the string


label associated with each point

GraphNumeric
Labels

Displays numeric labels. This is the y


value of the point adjacent to the
point

GraphColored
TextLabels

Displays text labels in color. This is


the string label associated with each
point

GraphColored
NumericLabels

Displays numeric labels in color. This


is the y value of the point adjacent to
the point

Actuate Foundation Class Reference

AcGraphTickStyle

AcGraphTickStyle
AcGraphTickStyle is an Integer that specifies the tick marks for a graph axis.
Constant

Type

Description

GraphNoTicks

Displays no tick marks

GraphAutoTicks

Displays tick marks computed


automatically

GraphCustom
Ticks

Displays custom tick marks

AcGraphType
The AcGraphType is an Integer that specifies the graph type.
Constant

Value

Description

Graph2DArea

Renders a two-dimensional area


graph

Graph3DArea

Renders a three-dimensional area


graph

Graph2DBar

Renders a two-dimensional bar


graph

Graph3DBar

Renders a three-dimensional bar


graph

Graph2DPie

Renders a two-dimensional pie


graph

Graph3DPie

Renders a three-dimensional pie


graph

GraphCandle
Stick

Renders a candlestick graph

GraphHLC

Renders a High-Low-Close graph

GraphLine

Renders a line graph

GraphOHLC

10

Renders an Open-High-Low-Close
graph

GraphScatter

11

Renders a scatter plot graph

GraphTape

12

Renders a tape graph

Chapter 2, AFC data types

65

AcGraphXAxisPosition

AcGraphXAxisPosition
AcGraphXAxisPosition is an Integer that specifies where to display the x-axis.
Constant

Value

Description

GraphXAxis
Auto

Dynamically determines where to


display the x-axis

GraphXAxisTop

Always displays the x-axis at the top


of the graph

GraphXAxis
Bottom

Always displays the x-axis at the


bottom of the graph

GraphXAxis
None

Displays no x-axis

AcGraphXValueSet
AcGraphXValueSet is an Integer that specifies the number of x values
provided.

66

Constant

Value

Description

GraphDefaultX
Values

X values are implied by graph type

GraphXValues
PerDataSet

There is one set of x values shared by


all points

GraphXValue
PerPoint

Each point has its own x value

Actuate Foundation Class Reference

AcGraphYAxisPosition

AcGraphYAxisPosition
AcGraphYAxisPosition is an Integer that specifies where to display the y-axis.
Constant

Value

Description

GraphYAxisAuto 0

Dynamically determines where to


display the y-axis

GraphYAxisLeft

Always displays the y-axis at the left


of the graph

GraphYAxis
Right

Always displays the y-axis at the


right of the graph

GraphYAxis
None

Displays no y-axis

AcGraphYOrientation
AcGraphYOrientation is an Integer that specifies the orientation of the graph
y-axis title.
Constant

Value

Description

GraphYLabelUp

Displays the y-axis title vertically,


from bottom to top

GraphYLabel
Horiz

Displays the y-axis title horizontally

GraphYLabel
Down

Displays the y-axis title vertically,


from top to bottom

AcGroupOnType
AcGroupOnType defines how to group data in a group section.
Constant

Value

Description

GroupOnEveryValue 0

Group on the full key

GroupOnPrefix

Group on the first n characters of text

GroupOnYear

Group data by year

Chapter 2, AFC data types

67

AcHtmlBackgroundStyle

Constant

Value

Description

GroupOnQuarter

Group data by calendar quarter

GroupOnMonth

Group data by month

GroupOnWeek

Group data by week

GroupOnDay

Group data by full date

GroupOnHour

Group data by hour

GroupOnMinute

Group data by minute

GroupOnInterval

Group on option for group section


keys having data types other than
Currency, Date/Time, Double,
Integer, Single, or String

GroupOnCustom

10

Group based on key value set in the


GetGroupKey method

AcHtmlBackgroundStyle
AcHtmlBackgroundStyle sets the style of an image that appears as the
background of a web page.
Constant

HTML Option

Description

ScrollableBack
ground

(Default)

Scrolls the background image with


the contents of the report

FixedBack
ground

BGProperties=
Fixed

Keeps the background image in a


fixed position as the contents of the
report scroll

AcHtmlFrameStyle
AcHtmlFrameStyle enumerates the options for formatting text in an HTML
report.

68

Constant

HTML Option

Description

HtmlBodyText

(Default)

Default text style

HtmlHeading1

H1

Level 1 heading

HtmlHeading2

H2

Level 2 heading

Actuate Foundation Class Reference

AcHtmlHorizontalAlignment

Constant

HTML Option

Description

HtmlHeading3

H3

Level 3 heading

HtmlHeading4

H4

Level 4 heading

HtmlHeading5

H5

Level 5 heading

HtmlHeading6

H6

Level 6 heading

HtmlHeading7

H7

Level 7 heading

HtmlHeading8

H8

Level 8 heading

HtmlHeading9

H9

Level 9 heading

HtmlDefinition
List

DL

Definition list

HtmlBulletedList UL

Bulleted list. Items are prefixed by a


bullet character

HtmlOrderedList OL

Ordered list. Items are prefixed by a


number

HtmlTable

The frame is arranged using an


HTML table to preserve some of the
two-dimensional flavor of an
Actuate frame

TABLE...

AcHtmlHorizontalAlignment
AcHtmlHorizontalAlignment enumerates the options for aligning objects on
the horizontal plane.
Constant

HTML Option

Description

HtmlHoriz
Default

(Default)

Aligns the objects according to the


default alignment specified by the
browser

HtmlLeftAlign

align=left

Aligns the object with the left margin

HtmlCenter
Align

align=center

Centers the object horizontally


within the margins

HtmlRightAlign

align=right

Aligns the object with the right


margin

Chapter 2, AFC data types

69

AcHtmlImageAlignment

AcHtmlImageAlignment
AcHtmlImageAlignment enumerates the options for aligning images or
applets relative to surrounding text.

70

Constant

HTML Option

Description

HtmlAlignImage
None

(Default)

Uses the default image alignment

HtmlAlignImage
Top

Align=top

Aligns the top of the image with the


top of the tallest image, item, or
character in the surrounding text

HtmlAlignImage
Middle

Align=middle

Aligns the center of the image with


the baseline of the surrounding text

HtmlAlignImage
Bottom

Align=bottom

Aligns the bottom of the image with


the bottom of the lowest descending
image, item, or character in the
surrounding text

HtmlAlignImage
TextTop

Align=texttop

Aligns the top of the text with the top


of the tallest character in
surrounding text

HtmlAlignImage
AbsMiddle

Align=
absmiddle

Aligns the center of the image with


the center of surrounding text

HtmlAlignImage
AbsBottom

Align=
absbottom

Aligns the center of the image with


the bottom of the lowest descender
in surrounding text

HtmlAlignImage
Left

Align=left

Left-justifies the image. Surrounding


text flows around the image

HtmlAlignImage
Right

Align=right

Right-justifies the image.


Surrounding text flows around the
image

HtmlAlignImage
Center

Align=center

Centers the image on a line that


contains only the image

Actuate Foundation Class Reference

AcHtmlImageMapType

AcHtmlImageMapType
AcHtmlImageMapType enumerates the options for associating an image map
with an image in an HTML report.
Constant

HTML Option

Description

HtmlNoImage
Map

N/A

No image map for an image

HtmlClientSide
Map

IsMap
Map=filename

The image uses a client-side image


map

HtmlServerSide
Map

IsMap

The image uses a server-side image


map

AcHtmlPlugInUnits
AcHtmlPlugInUnits defines how the size of plug-in windows are measured.
Constant

HTML Option

Description

HtmlPlugIn
Percent

attrib=nn%

Measurements are expressed as a


percent of the overall height or width

HtmlPlugInEns

attrib= nn

Measurements are expressed in units


of ens, the width of an n in the
current font

AcHtmlTableCaptionStyle
AcHtmlTableCaptionStyle specifies the placement of a table caption.
Constant

HTML Option

Description

HtmlNoCaption

N/A

The table has no caption

HtmlCaption
Above

<Caption
VAlign=top>

Places a caption above an HTML


table

HtmlCaption
Below

<Caption
VAlign=bottom>

Places a caption below an HTML


table

Chapter 2, AFC data types

71

AcHtmlTableStyle

AcHtmlTableStyle
AcHtmlTableStyle specifies how to create a table in an HTML report.
Constant

Description

HtmlAutomatic
Table

The AFC decides how to create a table (default


behavior). If the total number of frames in the section is
less than a maximum (the default is 500), AFC creates a
table for the section

HtmlNotTable

Do not create a table for the section

HtmlCreateTable

Create a table for the section, regardless of the number of


frames in the section

AcHtmlTextAlignment
AcHtmlTextAlignment enumerates the options for aligning text horizontally
in an HTML frame.
Constant

HTML Option

Description

HtmlTextAlign
Left

(Default)

Left justifies text in a frame

HtmlTextAlign
Center

<Center>

Centers the text in a frame

AcHtmlTextVertAlignment
AcHtmlTextVertAlignment specifies how objects are aligned vertically within
a table cell.

72

Constant

HTML Option

Description

HtmlTextVert
Default

(Default)

Aligns the objects according to the


default alignment specified by the
browser

HtmlTextTop

Valign=top

Aligns the object with the top of the


surrounding text or space

HtmlTextMiddle

Valign=center

Centers the object vertically

Actuate Foundation Class Reference

AcHtmlTocStyle

Constant

HTML Option

Description

HtmlTextBottom

Valign=bottom

Aligns the object with the bottom


edge of the surrounding text or space

HtmlTextBase
line

Valign=baseline

Aligns the object with the baseline of


surrounding text

AcHtmlTocStyle
AcHtmlTocStyle enumerates the options for including a TOC in an HTML
report.
Constant

HTML Option

Description

HtmlNoToc

N/A

The report has no TOC

HtmlTocIn
Header

N/A

Places the TOC at the top of the


report

HtmlTocInFrame

N/A

Places the TOC in a separate HTML


frame

AcHtmlUnits
AcHtmlUnits defines how object sizes are measured.
Constant

HTML Option

Description

HtmlPercent

attrib=nn%

Measurements are expressed as a


percent of the overall height or width

HtmlPixels

attrib= nn

Measurements are expressed in


absolute pixels

Chapter 2, AFC data types

73

AcImageEmbedType

AcImageEmbedType
AcImageEmbedType defines when to include the image in the report.
Constant

Value

Description

ImageViewTime

Include image when the Viewer,


View/Print Process displays the
report

ImageDesignTime

Include image at compile time

ImageFactoryTime

Include image when the Factory


builds the report

AcLinePen
AcLinePen is an Integer that specifies the style of line to draw. Note that
although these mimic the Windows line styles, they are not meant to duplicate
their values or have a direct numeric mapping to Windows styles.

74

Constant

Value

Description

DashDotDotLine

Draws a line in the format:


----- -- -- ----- -- --

DashDotLine

Draws a line in the format:


----- - ----- - ----- -

DashLine

Draws a dashed line

DotLine

Draws a dotted line

DoubleLine

Draws a double solid line

InsideFrame
Border

Draws a solid line inside the frame


or control

NullLine

Does not draw a line

ShortDotLine

Draws a line using very small dots

SingleLine

Draws a single solid line

Actuate Foundation Class Reference

AcLineStyle

AcLineStyle
AcLineStyle is a structure that describes characteristics of a line.
Member Name

Type

Description

Color

AcColor

The color of the line

Pen

AcLinePen

The style of the line

Width

AcTwips

The width of the line in twips

AcMargins
AcMargins is a structure that describes the amount of space to reserve outside
of the enclosing rectangle.
Member Name

Type

Description

Bottom

AcTwips

The amount of space, measured in


twips, to reserve along the bottom of
a rectangle

Left

AcTwips

The amount of space, measured in


twips, to reserve along the left of a
rectangle

Right

AcTwips

The amount of space, measured in


twips, to reserve along the right of a
rectangle

Top

AcTwips

The amount of space, measured in


twips, to reserve along the top of a
rectangle

Chapter 2, AFC data types

75

AcOffset

AcOffset
AcOffset is a structure that describes the offset coordinates from some origin
as defined by the client.
Member Name

Type

Description

AcTwips

The horizontal location of the point


measured from the left of the origin

AcTwips

The vertical location of the point


measured from the top of the origin

AcPageNumberStyle
AcPageNumberStyle is an Integer that determines how to calculate and
display page numbers.

76

Constant

Description

ActualPageCount

The total number of pages (visible


and invisible to the user) in the
report

ActualPageNofM

The current page number relative to


the total pages in the report
displayed in the form: Page N of M.
Includes both visible and invisible
pages.

ActualPageNumber

The current page number


considering all the pages (both
visible and invisible to the user) in
the report

FormattedPageNumber

Page number is presented using the


format string specified in the
PageNumberFormat property. The
value presented here does not
consider page security

VisiblePageCount

The total number of pages in the


report that the user can see
considering page security

Actuate Foundation Class Reference

AcPercentage

Constant

Description

VisiblePageNofM

The current page number relative to


the total pages in the report
displayed in the form: Page N of M.
Considers page security

VisiblePageNumber

The current page number in the


report that the user can see
considering page security

AcPercentage
AcPercentage is a double precision floating point number that displays
numbers as percentages in property sheets.

AcPoint
AcPoint is a structure that describes the offset coordinates from some origin as
defined by the client.
Member Name

Type

Description

AcTwips

The horizontal location of the point


measured from the left of the origin

AcTwips

The vertical location of the point


measured from the top of the origin

Chapter 2, AFC data types

77

AcRectangle

AcRectangle
AcRectangle is a structure that describes a rectangle relative to the origin of an
enclosing rectangle by giving the bounding points (corners) of the rectangle.
Member Name

Type

Description

Bottom

AcTwips

The location of the bottom of the


rectangle measured relative to the
top of the enclosing rectangle

Left

AcTwips

The location of the left of the


rectangle measured relative to the
left of the enclosing rectangle

Right

AcTwips

The location of the right of the


rectangle measured relative to the
left of the enclosing rectangle

Top

AcTwips

The location of the top of the


rectangle measured relative to the
top of the enclosing rectangle

AcRounding
AcRounding is a structure that describes the characteristics of a rectangle with
round corners.

78

Member Name

Type

Description

AcTwips

The focus of the rounding, measured


in twips, from the left and right side
of the rectangle

AcTwips

The focus of the rounding, measured


in twips, from the top and bottom of
the rectangle

Actuate Foundation Class Reference

AcSearchType

AcSearchType
AcSearchType is an Integer that determines whether users can search for the
component using values for the DataValue property.
Constant

Description

NotSearchable

Component cannot be searched for


by the user

SearchableNoIndex

Component can be searched for by


the user. The client viewing software
searches the entire report.

SearchableWithIndex

Component can be searched for


using a high-performance indexed
search

AcShadow
AcShadow is a structure that describes the format of a shadow for a rectangle.
Member Name

Type

Description

Color

AcColor

Shadow color

Height

AcTwips

Height of the shadow in twips

Width

AcTwips

Width of the shadow in twips

Chapter 2, AFC data types

79

AcShiftKeyState

AcShiftKeyState
AcShiftKeyState is an Integer that contains the flags for keys pressed during
mouse actions. The settings in AcShiftKeyState match the settings of the Shift
bit field used in Visual Basic for MouseUp and MouseDown events. The actual
value can be a combination of the values below, depending on the keys
pressed.
Constant

Value

Description

NoKeys

No modifier keyboard keys were


pressed when the mouse event
occurred

ShiftKey

The Shift key was pressed when the


mouse event occurred

ControlKey

The Control key was pressed when


the mouse event occurred

AltKey

The Alt key was pressed when the


mouse event occurred

AcSize
AcSize is a structure that describes the width and height of a rectangle.
Member Name

Type

Description

Height

AcTwips

The vertical size of the rectangle in


twips

Width

AcTwips

The horizontal size of the rectangle


in twips

AcTextClipStyle
AcTextClipStyle is an Integer that specifies how to handle text that is too long
for its enclosing rectangle. Leading truncation removes the first part of the
string, while trailing truncation removes the end part. There is also an option

80

Actuate Foundation Class Reference

AcTextFormat

to use overflow characters to show truncation. AcTextClipStyle applies only to


single-line controls.
Constant

Value

Description

ClipLeading

Clips the leftmost characters of the


text. Displays an ellipsis (...) before
the truncated text, when the Ellipsis
property of AcTextPlacement is set to
True

ClipTrailing

Clips the rightmost characters of the


text. Displays an ellipsis (...) after the
truncated text, when the Ellipsis
property of AcTextPlacement is set to
True

ShowOverflow
Char

Displays overflow characters (*)


when text is too long to display

AcTextFormat
AcTextFormat is an Integer that indicates the tagging format of text.
Constant

Value

Description

TextFormatHTM
L

The text contains HTML tags.

TextFormatPlain

The text is not tagged.

TextFormatRTF

The text contains RTF tags.

AcTextJustify
AcTextJustify is an Integer that specifies how text is aligned.
Constant

Value

Description

TextAlignCenter

Aligns text in the center of the


control

TextAlignLeft

Aligns text at the left of the control

TextAlignRight

Aligns text at the right of the control

Chapter 2, AFC data types

81

AcTextPlacement

AcTextPlacement
AcTextPlacement is a structure that describes the placement of text in a frame
or control.
Member Name

Type

Description

Clip

AcTextClipStyle

Defines how to clip text that is too


large to fit into the control. Applies
to single-line controls only

Ellipsis

Boolean

If set to True, places an ellipsis before


or after a text control if the value is
truncated. Applies to single-line
controls only

FillPattern

String

Determines the fill pattern to use if


there is extra room in the controls
container

Horizontal

AcTextJustify

Defines horizontal text justification

MultiLine

Boolean

Determines whether the control


contains one or more lines of text

Vertical

AcTextVertical
Placement

Determines vertical text placement.


Applies to single-line controls only

WordWrap

AcWordWrap
Style

Defines how to wrap text from one


line to the next. Values are:
0 = Word wrap
2 = Character wrap
3 = Truncate lines

AcTextVerticalPlacement
AcTextVerticalPlacement is an Integer that specifies how single lines of text
align vertically within the enclosing rectangle.

82

Constant

Value

Description

TextAlignTop

Aligns text at the top of a control

TextAlignMiddle

Aligns text in the vertical middle of a


control

TextAlignBottom

Aligns text at the bottom of a control

Actuate Foundation Class Reference

AcTOCNodeType

AcTOCNodeType
AcTOCNodeType is an Integer that determines whether the component
appears in the reports table of contents.
Constant

Description

TOCAlwaysAdd

Always add the component to the table of


contents

TOCIfAllVisible

Add component name to the table of


contents only if the user can view at least
one page generated from the component
based on page security

TOCIfAnyVisible

Add component to table of contents even if


the user cannot view any of the pages
generated from the component based on
page security

TOCSkip

Never add the component to the table of


contents. Use this to hide components such
as parallel or sequential sections, or detail
frames from the user

AcTwips
AcTwips is an Integer that specifies the basic unit of measurement in the AFC
framework.
Constant

Value

Description

OneCM

567

A distance of 1 centimeter

OneInch

1440

A distance of 1 inch

OneMM

57

A distance of 1 millimeter

OnePoint

20

A distance of 1 printers
point (1/20)

Chapter 2, AFC data types

83

AcVerticalPosition

AcVerticalPosition
AcVerticalPosition is an Integer that specifies how a visual object is positioned
vertically.

84

Constant

Value

Description

VerticalPositionDefa
ult

If the top of the object is at or below


the midpoint of the reference object,
the behavior of
VerticalPositionDefault is the same
as VerticalPositionBottom.
Otherwise, the object is not moved.

VerticalPositionTop

The object is repositioned vertically


to keep the distance between its top
and the bottom of the reference
object constant. If the top of the
object is above the bottom of the
reference object, it is not moved.

VerticalPositionBotto 2
m

The object is repositioned vertically


to keep the distance between its
bottom and the bottom of the
reference object constant. If the top of
the object is above the top of the
reference object, it is not moved.

VerticalPositionFram
eTop

The object is not moved.

VerticalPositionFram
eBottom

The object is repositioned vertically


to keep the distance between its
bottom and the bottom of the frame
constant.

Actuate Foundation Class Reference

AcVerticalSize

AcVerticalSize
AcVerticalSize is an Integer that specifies how a visual object is resized.
Constant

Value

Description

VerticalSizeFixed

The object is not resized.

VerticalSizeRelati 1
ve

If the top of the object is at or above


the top of the reference object and its
bottom is at or below the bottom of
the reference object, the objects size
is increased as follows to give the
greatest height increase:
 the distance between the objects
bottom and the bottom of the
reference object is kept constant.
 the object height is increased by
the same amount as the reference
objects height increase.
If the top of the object is below the
top of the reference object or its
bottom is above the bottom of the
reference object, the object is moved
according to the setting of its
VerticalPosition property.

VerticalSizeFram
eRelative

The object is resized to keep the


distance between its bottom and the
bottom of the frame constant.

AcWordWrapStyle
AcWordWrapStyle is an Integer that specifies the actions for lines in a multiline control when a line is longer than the size of the control.
Constant

Value

Description

TextWordWrap

Wraps text from one line to the next


breaking the text at a word boundary

ObsoleteWord
Wrap

Placeholder

Chapter 2, AFC data types

85

AcXMLType

Constant

Value

Description

TextCharacter
Wrap

Wraps text from one line to the next


breaking the text at a character
boundary

TextTruncate
Lines

Truncates any lines that do not fit

AcXMLType
AcXMLType is an Integer that specifies the type of XML to create for the
component.
Constant

Description

XMLAttribute

Converts component to an XML


attribute

XMLCustom

Custom XML to be generated by


AcXMLDataVisitor class functions

XMLElement

Converts component to an XML


element

XMLEmptyElement

Converts component to an empty


XML element

XMLIgnore

Does not convert the component into


XML

XMLText

Converts component into XML text

ViewContext
ViewContext is an Integer that indicates which viewing environment is used.

86

Constant

Description

ActivePortalContext

The viewing environment is Active Portal.

ReportCastContext

The viewing environment is ReportCast.

Actuate Foundation Class Reference

Chapter

3
AFC classes

Chapter 3

This chapter provides an alphabetical listing of the Actuate Foundation


Classes. Each class entry includes a general description of the class and a
summary of its variables, properties, and methods followed by an alphabetical
listing of methods for that class.
Be aware that the class documentation generally does not include repeated
descriptions of inherited variables, properties, and methods. For example, the
OnRow( ) method is described only in the AcReportComponent base class
where the method is defined.
A method, however, is described in a superclass as well as its subclass if the
implementation details are significantly different or enhanced. For example,
BuildFromRow( ) is described in several class entries, including
AcReportComponent, AcReportSection, AcDataFrame, and AcDataControl.

Chapter 3, AFC classes

87

Class AcBaseFrame

Class AcBaseFrame
An abstract base class that defines the core logic common to pages and frames.
AcComponent
AcReportComponent
AcVisualComponent
AcBaseFrame

Description

AcBaseFrame is the abstract base class for pages and frames. It provides the
core logic for creating and working with contents in a page or a frame. The
contents of a page can include flows and controls, and the contents of a frame
can include other frames and controls.
The framework instantiates the contents of a frame or page using Start( ).
Start( ), in turn, calls MakeContents( ) to instantiate each of the contents in the
order in which they were added in the Design Editor.
AcBaseFrame defines methods for accessing the contents of a frame or page.
The FindContentByClass( ), FindContentByClassID( ), and GetControl( )
methods locate the specified content in a frame or a page, and the
GetControlValue( ) method returns the value of a data control contained in a
frame. AcBaseFrame also defines methods for adjusting the contents of
frames. The SplitContents( ) and SplitFrame( ) methods help you distribute the
contents of frames across pages.
AcBaseFrame also defines page-specific methods, such as GetPageNumber( ),
that are not applicable to frames. If you call these methods in a frame, Actuate
displays an error.

Factory protocol

88

Method

Task

Start( )

Instantiates and starts the contents of the frame or


the page.

Build( )

Builds the contents for frames that are not


dependent on data.

BuildFromRow( )

Populates the contained frames, graphs, and


controls with data.

Finish( )

Finishes each of the content objects.

Actuate Foundation Class Reference

Class AcBaseFrame

Preparing the frame or page


The Start( ) method instantiates all the contents of the frame or page by calling
MakeContents( ) on each of the frames contents.
Start( ) is part of the frameworks core protocol. Override Start( ) in the
AcFrame class if you want to perform some special processing in the frame
that is unrelated to its contents. For example, you might want to conditionally
change the background color of the frame. Always call Super::Start( ) before
making your own programming changes to Start( ).

Building the frame or page


The frames Build( ) method is called (instead of the BuildFromRow( )
method) by its containers Build( ) method when the frame is placed in a slot
where it does not receive any data rows. The following list includes some of
the situations when the frames Build( ) method is called:


The frame is placed in a sequential or conditional section that is placed


directly within the report component

The frame is placed directly on a page

The frame is nested within any of the frames described in the previous
bullets

The frames Build( ) method, in turn, calls the Build( ) method for each of the
controls it contains.
You can override a frames or a pages Build( ) method to perform custom
processing, such as conditionally adding or deleting frame or page contents, or
setting the values or properties of the contents.

Subclassing AcBaseFrame
Because AcBaseFrame is an abstract base class, you generally do not derive
directly from it.

Variables
Variable

Type

Description

BackgroundColor

AcColor

The color with which the frame is


filled before displaying its contents.
The default is TransparentColor.

Border

AcLineStyle

The style, thickness, and color of the


border. The default is no border.

Chapter 3, AFC classes

89

Class AcBaseFrame

Properties
Property

Type

Description

BackgroundColor

AcColor

The color with which the frame is


filled before displaying its contents.
The default is TransparentColor.

Border

AcLineStyle

The style, thickness, and color of the


border. The default is no border.

Method

Type

Description

AddToAdjustSize
List( )

N/A

Adds an object to its containers list of


objects to be resized.

AdjustContent
VerticalGeometry()

N/A

Provides automatic resizing and


repositioning.

BindToFlow( )

N/A

Called when the framework places


the frame into a flow on the page.

FindContentBy
Class( )

N/A

Locates one of the frames content


components given the class name of
that component.

FindContentBy
ClassID( )

N/A

Locates one of the frames content


components given the class ID of that
component.

GetControl( )

AcControl

Locates a named control.

GetControlValue( )

Variant

Returns the value of a data control


within the frame.

GetPageNumber( )

String

Returns the formatted page number


for a page.

MakeContents()

N/A

Creates the frame contents.

RebindToFlow( )

N/A

Called by the framework for controls


that appear within a subpage.

SplitContents( )

N/A

Moves part of the contents of the


current frame to a different frame.

SplitFrame( )

AcFrame

Splits the contents of the current


frame across frames.

Methods

Example

90

The following example shows how a flow on the first page is changed to teal
while the flow on the other pages use the color set at design time.

Actuate Foundation Class Reference

AcBaseFrame::AddToAdjustSizeList method

GetContentIterator( ) is overridden to create an iterator to find the flow.


Build( ) is overridden to change the color of the flow. GetPageIndex( ) is used
to identify the first page:
' First, override the pages GetContentIterator( ) method to iterate
' over the contents in the page.
Function GetContentIterator( ) As AcIterator
Dim contents As AcOrderedCollection
Set contents = GetContents( )
If contents Is Nothing Then
Set contents = New AcSingleList
End If
Set GetContentIterator = contents.NewIterator( )
End Function
' Override the pages Build( ) method to find the flow and change
' its background color to teal only on the first page.
Sub Build( )
Super::Build( )
Dim flow As AcFlow
Set flow = FindContentByClass( "Flow" )
If GetPageIndex( ) = 1 Then
flow.BackgroundColor = teal
End If
End Sub

AcBaseFrame::AddToAdjustSizeList method
Adds an object to its containers list of objects to be resized.

Syntax
Parameter
Description

Sub AddToAdjustSizeList( component As AcVisualComponent )


component
The object to add.
The AddToAdjustSizeList( ) method adds an object to its containers list of
objects to be resized and causes the objects AdjustSize( ) method to be called.
To make an object resizable, you must add a call to AddToAdjustSizeList( ) to
that objects Start( ) method.

Chapter 3, AFC classes

91

AcBaseFrame::AdjustContentVerticalGeometry method

AcBaseFrame::AdjustContentVerticalGeometry
method
Provides automatic resizing and repositioning.

Syntax

Provides automatic resizing and repositioning.

Syntax

Sub AdjustContentVerticalGeometry( )

Description

The AdjustContentVerticalGeometry( ) method provides automatic resizing


and repositioning.

AcBaseFrame::BindToFlow method
Called when the framework places the frame into a flow on the page.

Syntax
Parameter
Description

Sub BindToFlow( flow As AcFlow )


flow
The flow that contains the component.
The framework calls BindToFlow( ) for a frame when the framework places
the frame into a flow on the page. You can override this method to perform
actions based on where the control is in a flow. For example, the flow can keep
track of an alternating color for its frames, and the frame can ask the flow for
the proper color in this method.
If you override this method, you must call Super::BindToFlow( ).

Example

The following example shows how you override BindToFlow( ) to assign a


different color to every alternate frame in a flow. The code example assumes
the following variables are declared for the frame: AlternateColor,
AlternateLines, MostRecentContainer, MostRecentFlow, and RowNumber:
Sub BindToFlow( flow As AcFlow )
Super::BindToFlow( flow )
' If the current flow is different from the
' previous flow, then reset the color.
If Not MostRecentFlow Is flow Then
RowNumber = 0
Set MostRecentFlow = flow
End If
' If the container is different, this frame is for

92

Actuate Foundation Class Reference

AcBaseFrame::FindContentByClass method

' a different group than the previous one; therefore,


' reset the color.
If Not MostRecentContainer Is Container Then
RowNumber = 0
Set MostRecentContainer = Container
End If
' Choose one of the two colors. AlternateLines and AlternateColor
' are user-defined properties that can be set in the Component Editor
RowNumber = RowNumber + 1
If RowNumber > AlternateLines * 2 Then
RowNumber = 1
End If
If RowNumber > AlternateLines Then
BackgroundColor = AlternateColor
End If
End Sub

AcBaseFrame::FindContentByClass method
Locates one of the frames content components given the class name of that
component.

Syntax

Function FindContentByClass( className As String ) As AcVisualComponent

Parameter

className
The class name of the component to find. You can specify a fully qualified class
name or just the class name. For example, you can use the names
MyDesign::MyFrame::MyControl, MyFrame::MyControl, or just MyControl to
find a control called MyControl. If you want to specify the control as a global
class, prefix the name with a double colon, for example, ::GlobalControl.

Description

Returns

You can uniquely identify a content within a frame or page by its class name.
This capability makes it easy to access and manipulate contents, for example,
conditionally add or remove controls in a frame. To access a content
component, call the FindContentByClass( ) method.
A reference to the component if found.
Nothing if the component was not found.

Example

In the following example, FindContentByClass( ) is used to find a control on a


page. Once found, the control is deleted from the first page:
' First, override the pages GetContentIterator( ) method to iterate
' over the contents in the page.
Function GetContentIterator( ) As AcIterator

Chapter 3, AFC classes

93

AcBaseFrame::FindContentByClassID method

Dim contents As AcOrderedCollection


Set contents = GetContents( )
If contents Is Nothing Then
Set contents = New AcSingleList
End If
Set GetContentIterator = contents.NewIterator( )
End Function
' Override the pages Finish( ) method to remove the control
' from the first page.
Sub Finish( )
Super::Finish( )
Dim iter As AcIterator
Dim content As AcReportComponent
Set iter = GetContentIterator( )
Do while iter.HasMore()
Set content = iter.GetNext( )
Dim control As AcControl
Set control = FindContentByClass( "LabelControl" )
If GetPageIndex( ) = 1 Then
GetContents( ).Remove(control)
End If
Loop
End Sub

See also

AcBaseFrame::FindContentByClassID method
AcBaseFrame::GetControl method

AcBaseFrame::FindContentByClassID method
Locates one of the frames content components given the class ID of that
component.

Syntax
Parameter
Description

Returns

Function FindContentByClassID( classID As Integer ) As AcVisualComponent


classID
The integer class ID of the component to find.
You can uniquely identify a content within a frame or page by its class ID. This
capability makes it easy to access and manipulate contents, for example,
conditionally add or remove controls in a frame. Accessing the component
using its class ID is faster than accessing the component by class name. Use the
Actuate Basic function, GetClassID to identify the class ID for the component.
For information about GetClassID, see the Actuate Basic Language Reference.
A reference to the component if found.
Nothing if the component was not found.

94

Actuate Foundation Class Reference

AcBaseFrame::GetControl method

See also

AcBaseFrame::FindContentByClass method
AcBaseFrame::GetControl method

AcBaseFrame::GetControl method
Locates a named control.

Syntax
Parameter
Description

Returns

Function GetControl( controlName As String ) As AcControl


controlName
The name of the control.
Use GetControl to obtain a reference to a control within a frame.You specify
the control by giving either just the last part of the controls name (such as
PriceControl), or using its fully qualified name (such as
OrdersReport::ItemFrame::PriceControl). GetControlValue( ) finds the control,
then calls that controls GetValue( ) method to obtain the value.
A reference to the control if the control exists.
Nothing if the control does not exist.

See also

AcBaseFrame::FindContentByClass method
AcBaseFrame::FindContentByClassID method

AcBaseFrame::GetControlValue method
Returns the value of a specified data control within the frame.

Syntax

Function GetControlValue( controlName As String ) As Variant


controlName
The name of the control for which you want the value.

Description

Use the GetControlValue( ) method to get the value of a specified data control
within a frame. You specify the control by giving either just the last part of the
controls name (such as PriceControl), or using its fully qualified name (such
as OrdersReport::ItemFrame::PriceControl). GetControlValue( ) finds the
control, then calls that controls GetValue( ) method to obtain the value.
If you call this method from BuildFromRow( ), then you must be aware of the
order in which controls are built. Generally, the controls of a frame are built in
the same order that they appear in the structure pane. If you call
GetControlValue( ) to get the value of a control that is not created,
GetControlValue( ) returns Null.

Chapter 3, AFC classes

95

AcBaseFrame::GetPageNumber method

Returns

The value of the control if the control exists.


Null if the control does not exist.

See also

AcControl::GetControlValue method

AcBaseFrame::GetPageNumber method
Returns the page number.

Syntax
Description

Returns

Function GetPageNumber( ) As String


The page number is a formatted string that represents the page number as it
appears in the generated report. It can be the same as the page index or
different. Call GetPageNumber( ) from a page only; this method does not
apply to frames.
The page number of a page.

AcBaseFrame::MakeContents method
Creates the frame contents.

Syntax
Description

Sub MakeContents( )
The MakeContents( ) method creates the frame contents.

AcBaseFrame::RebindToFlow method
Called by the framework for controls that appear within a subpage.

Syntax

Sub RebindToFlow( flow As AcFlow )

Parameter

flow
The flow that contains the component.

Description

96

The framework calls RebindToFlow( ) for controls that appear within a


subpage if that subpage has its BalanceFlows property set to True.
RebindToFlow( ) informs the control that the flow that contains that control
changed as a result of the rebalancing. If you override this method, you must
call the superclass implementation.

Actuate Foundation Class Reference

AcBaseFrame::SplitContents method

AcBaseFrame::SplitContents method
Moves part of the contents of the current frame to a different frame.

Syntax
Parameter

Sub SplitContents( newFrame As AcFrame, window As AcRectangle, offset


As AcSize )
newFrame
A new frame.
window
A rectangular window that delimits the area of the current frame to be moved.
For information on the AcRectangle structure, see AcRectangle.
offset
The offset (in twips) of the controls in the new frame. For information about
AcSize structure, see AcSize data type.

Description

Example

Call SplitContents to help you move controls from the current frame to a new
frame. Usually, you call SplitContents from the SplitFrame method to split the
contents of two frames. SplitContents keeps the contents that are contained in
the window area in the current frame. The contents outside the window move
to the new frame. SplitContents uses the offset to adjust the position of the
controls in the new frame. You specify a negative offset to move the controls in
the new frame to the left or toward the top of the frame.
For an example of SplitContents, see the example shown for
AcBaseFrame::SplitFrame method.

AcBaseFrame::SplitFrame method
Splits the contents of the current frame across frames.

Syntax
Parameter

Description

Function SplitFrame( visible As AcSize ) As AcFrame


visible
The length and height of the area (expressed in twips) that includes the
controls to be retained in the current frame. The visible area starts at the upperleft corner of the current frame. For more information, see AcSize.
Override SplitFrame to split large frames across two or more pages. The
visible area delimits the area that remains in the current frame. The Factory
calls SplitFrame to split frames that do not fit into the current flow. To add a
frame to the current page flow, the Factory takes the following actions:

Chapter 3, AFC classes

97

AcBaseFrame::SplitFrame method

1 Checks if the frame fits in the flow.


2 If the frame does not fit, the Factory starts a new flow.
3 The Factory checks if the frame fits in the new flow.
4 If the frame does not fit, the Factory calls the frames SplitFrame method.
5 The Factory adds the frame to the flow.
6 If SplitFrame returns a new frame, steps 1 through 6 are repeated for the
new frame.
Always call Start and Finish methods for any controls added in the override to
SplitFrame.

Returns

A reference to the new frame.


Nothing if no new frame is created.

Example

This example report shows you how to override SplitFrame to create a new
frame, dynamically create controls, and finally to adjust the content of the
frames using the SplitContents method. The report presents laboratory test
results. A variable number of test results are presented in each frame. The
results from Test Group 8 are shown in the following excerpt from the report.

SplitFrame handles the variable number of controls in the following ways:




98

Fills flows horizontally to show any number of test results

Actuate Foundation Class Reference

AcBaseFrame::SplitFrame method

Splits the resulting frames

Adds label and data controls to the continuation frames as shown in the
report results for Test Group 8

Moves the controls that do not fit in the current frame to the new frame by
calling SplitContents:
Function SplitFrame( visible As AcSize ) As AcFrame
Dim newFrame As ContentFrame
Dim label As TestGroupNameControl
Dim newLabel As TestGroupNameControl
Dim oldCount As Integer
Dim shiftRect As AcRectangle
Dim shiftSize As AcSize
Dim shiftCount As Integer
Dim shiftBy As Integer
Dim contLabel As AcLabelControl
oldCount = RowCount
RowCount = Int( ( visible.Width - 360 ) / Offset )
shiftBy = RowCount * Offset
shiftCount = oldCount - RowCount
shiftRect.Top = 0
shiftRect.Bottom = GetBottom( )
shiftRect.Right = GetRight( )
shiftRect.Left = shiftBy + 180
shiftSize.Width = -shiftBy
shiftSize.Height = 0
' Create the new frame.
Set newFrame = New Persistent ContentFrame
Container.AddContent( newFrame )
' Start the frame, but avoid creating the contents.
newFrame.AcVisualComponent::Start( )
newFrame.Offset = Offset
newFrame.RowCount = shiftCount
' Add a group label control.
Set label = FindContentByClass( "TestGroupNameControl" )
Set newLabel = New Persistent TestGroupNameControl
newFrame.AddContent( newLabel )
newLabel.Start( )
newLabel.DataValue = label.DataValue
Set contLabel = New Persistent ContinuedLabel
newframe.AddContent( contLabel )
contLabel.Start( )

Chapter 3, AFC classes

99

AcBaseFrame::SplitFrame method

contLabel.Text = "(Cont.)"
newFrame.Finish( )
' Move the non-visible controls from the current frame
' to the new frame.
SplitContents( newFrame, shiftRect, shiftSize )
Size.Width = Size.Width - shiftCount * Offset
' Return the new frame.
Set SplitFrame = newFrame
End Function

To see the example in a fuller context, review the report design, Ltor.rod, in
Actuate6\Erdpro\Examples\Ltorflow directory.

100

Actuate Foundation Class Reference

Class AcBasePage

Class AcBasePage
An abstract base class that defines the logic for instantiating the contents of
pages.
AcComponent
AcReportComponent
AcVisualComponent
AcBaseFrame
AcBasePage

Description

AcBasePage is the abstract base class for the two types of page components
used in a report design: AcPage and AcSubPage.
AcPage describes the physical attributes, such as size and page numbering, of
the pages in a report.
AcSubpage lets you introduce a subpage within a page. Subpages exist in
flows, and are used to add a different set of flows within a page, for example,
to combine a one-column flow with a two-column flow on a single page.
Because AcBasePage is an abstract base class, you generally do not derive
directly from it.

Properties
Property

Type

Description

BalanceFlows

Boolean
function

Ensures that the contents of the flows on


the subpage are even.

CanShrink

Boolean

Whether to allow the page to shrink


smaller than the size that you draw it in
the Design Editor. The default is False.

MinimumHeight Integer

If you allow the control to shrink, this


property specifies the minimum flow
height. The default is zero.

ResizeRegion

The amount, in twips, by which to


decrease the size of the region that a
control must span for it to be resized
when the subpage is resized.

Integer

Chapter 3, AFC classes

101

AcBasePage::ResizeBy method

Methods
Method

Type

Description

ResizeBy( )

N/A

Changes the size of the subpage by a


given amount.

AcBasePage::ResizeBy method
Changes the size of the current page by a given amount.

Syntax
Parameter

Sub ResizeBy( deltaWidth As Integer, deltaHeight As Integer )


deltaWidth
The change in width for the page, in twips.
deltaHeight
The change in height for the page, in twips.

Description

102

Call ResizeBy to change the size of the current page. ResizeBy takes the
following actions to resize the page:


Iterates over the contents of the page and repositions its content.

Resizes the content in light of the resized page.

Changes the size of the page.

Actuate Foundation Class Reference

Class AcBrowserScriptingControl

Class AcBrowserScriptingControl
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl

AcBrowserScriptingControl

Lets you insert custom browser code into a report design.

Description

Use AcBrowserScriptingControl class to insert custom browser code into your


report design. Custom browser code can be any code interpreted by a web
browser, for example:


HTML

JavaScript

Java applets

VBScript

Any characters in the AcBrowserScriptingControl that have special meaning


for the web browser are not converted by the DHTML converter as for other
controls. Instead, the DHTML converter creates a block of HTML code called
the context block. The web browser then interprets the code in the
BrowserCode property when the report user views the report in DHTML
format.

Chapter 3, AFC classes

103

Class AcBrowserScriptingControl

Properties

104

AlternateText

String

Specifies the string to show when


printing the report in PDF format from
a web browser. Can also be used in a
custom converter.
In the client Actuate Viewer, the value
of AlternateText is always displayed.
If the value of the AlternateText is
displayed, all TextPlacement
properties apply.

BrowserClipping

Enum

Controls the clipping of custom


browser code output in a web browser:
 AutoScrollbar
In Microsoft Internet Explorer,
shows scroll bars when necessary.
In Netscape Navigator, clips the
output to control size.
 Scrollbars
In Microsoft Internet Explorer,
always shows scroll bars. In
Netscape Navigator, clips the
output to control size.
 ClipToControlSize
Clips output to control size.
 NoClipping
The output is not clipped.
The default is NoClipping.

BrowserCode

String

The custom browser code.

DebugOption

Boolean

Used to check custom browser code for


errors. True displays the value of the
AlternateText property in the web
browser. False interprets the custom
browser code.
The default is False.

Actuate Foundation Class Reference

AcBrowserScriptingControl::BrowserCode method

Property

Type

Description

TextPlacement

AcText
Placement

Determines how custom browser code


output is aligned:
 Horizontal
 Vertical
The DHTML converter ignores the
following values of the TextPlacement
property:
 Clip
 Ellipsis
 FillPattern
 MultiLine
 WordWrap

Methods
Method

Type

Description

BrowserCode( )

String

Retrieves the value of the


BrowserCode property.

GetText( )

String

Retrieves the value of the


AlternateText property.

AcBrowserScriptingControl::BrowserCode method
Retrieves the value of the BrowserCode property.

Syntax
Description

Function BrowserCode( ) As String


The BrowserCode( ) method retrieves the value of the BrowserCode property.
Override BrowserCode( ) to generate DHTML code dynamically.

AcBrowserScriptingControl::GetText method
Retrieves the value of the AlternateText property.

Syntax

Function GetText( ) As String

Chapter 3, AFC classes

105

AcBrowserScriptingControl::GetText method

Description

The GetText( ) method retrieves the value of the AlternateText property.


Override GetText( ) to generate the string for PDF output dynamically.

106

Actuate Foundation Class Reference

Class AcBTree

Class AcBTree
A collection class that describes objects organized in a balanced tree. A
balanced tree is a sorted list of objects. An attribute of the object contains the
objects key. Each key is unique.

Description

Use the AcBTree collection class when you need to create a list of objects sorted
by one of the objects attributes. You create objects using the CreateNode or
Insert methods. You locate objects by calling the Find or FindOrCreate
methods to compare a key specified as an argument to the keys of the objects
in the balanced tree. Objects can be located with speed comparable to a simple
binary search. To keep the storage needed small, the key is contained in the
object only.

Subclassing AcBTree
To create a balanced tree collection, perform the following steps:
1 Subclass AcBTree.
2 Specify the NodeSize as an integer equal to the maximum number of
objects in the balanced tree.
3 Override the GetKey method to specify how to determine an objects key.

Methods

See also

Method

Type

Description

CreateNode( )

N/A

Adds a new node.

Find( )

AnyClass

Finds the object with the specified


key.

FindOrCreate( )

AnyClass

Locates a node or creates it if the


key does not exist in the collection.

GetKey( )

Variant

Returns the key for an object.

Insert( )

AnyClass

Adds an object to the collection.

Class AcCollection
Class AcList
Class AcObjectArray
Class AcSingleList

Chapter 3, AFC classes

107

AcBTree::CreateNode method

AcBTree::CreateNode method
Adds an object to the collection.

Syntax
Parameter
Description

See also

Sub Insert( obj As AnyClass )


obj
The object in the collection.
Call Insert( ) to add an object to the collection. The logic to determine the
objects key in the GetKey method override must be able to handle the objects
data type. Also, you must ensure that the objects key does not already exist in
the collection. If an object with the same key already exists in the collection, the
method returns an Actuate Basic error. If you do not know if the objects key is
unique, call FindOrCreate to add the object.
AcBTree::FindOrCreate method
AcBTree::GetKey method
AcBTree::Insert method

AcBTree::Find method
Finds an object in the collection with the specified key.

Syntax
Parameter
Description

Returns

Function Find( key As Variant ) As AnyClass


key
The key of the object to be located.
Call Find to locate an object in the collection with the specified key. Before you
call Find to locate objects, you must override the GetKey method to tell
Actuate how to determine the objects key.
An object.
Nothing if the object does not exist.

See also

108

AcBTree::FindOrCreate method
AcBTree::GetKey method

Actuate Foundation Class Reference

AcBTree::FindOrCreate method

AcBTree::FindOrCreate method
Finds an object in the collection with the specified key or creates an object if
none exists.

Syntax
Parameter
Description

Returns
See also

Function FindOrCreate( key As Variant ) As AnyClass


key
The key of the object to be located.
Call FindOrCreate to locate an object in the collection with the specified key. If
no object with the specified key exists, FindOrCreate adds a new object to the
collection with the specified key. Use FindOrCreate when you need to add an
object, but you do not know if the object already exists in the collection. By
using FindOrCreate, you eliminate the need to first locate the object using Find
and then add the object using the CreateNode method. Before you call
FindOrCreate, you must override the GetKey method to describe how to
determine an objects key.
An object. Nothing if no object exists.
AcBTree::GetKey method

AcBTree::GetKey method
Returns the key for the object.

Syntax
Parameter
Description
Returns
Example

Function GetKey( obj As AnyClass ) As Variant


obj
The object in the collection.
Override GetKey( ) to define the logic that determines the objects key.
The key stored as a variant data type.
In the following example, the objects in the collection are text controls in a
report. The objects key is the text controls DataValue property. The following
code shows how the GetKey method is overridden to determine the key:
Function GetKey( obj As AnyClass ) As Variant
Dim textCntl As AcTextControl
Set textCntl = obj
GetKey = textCntl.DataValue
End Function

Chapter 3, AFC classes

109

AcBTree::Insert method

AcBTree::Insert method
Adds an object to the collection.

Syntax
Parameter
Description

See also

110

Sub Insert( obj As AnyClass )


obj
The object in the collection.
Call Insert( ) to add an object to the collection. The key determination logic in
the GetKey method override must be able to handle the objects data type.
Also, you must ensure that the objects key does not already exist in the
collection. If an object with the same key already exists in the collection, the
method returns an Actuate Basic error. If you do not know if the objects key is
unique, call FindOrCreate to add the object.
AcBTree::FindOrCreate method
AcBTree::GetKey method

A ctu ate Fo und ation Cla ss Re fe re nc e

Class AcChart

Class AcChart
An abstract base class that defines the core characteristics of all chart types.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcChart

Description

AcChart provides the interface to the Actuate chart engine. It defines the
properties of charts, such as the type and general format of the chart, x-axis
and y-axis attributes, legend information, and so on. It also defines the
methods that compute x and y values and format chart labels.
You use the following subclasses of AcChart to implement the methods for
building charts from data rows:


AcDetailChart, which maps each data row to a single data point in a chart.

AcSummaryChart, which summarizes multiple data rows for a category to


a single data point.

AcHLCChart, which displays data an a high-low-close chart, for example a


daily high-low-close stock price.

HTML reports treat charts as .JPEG images and DHTML reports treat charts as
.GIF images.

General properties and variables


Property

Type

Description

BackgroundColor

AcColor

The background color of the chart.


The default is TransparentColor.

ChartBackground
Color

AcColor

The background color of the


rectangle around the chart.
The default is TransparentColor.

Chapter 3, AFC classes

111

Class AcChart

112

Property

Type

Description

ChartBorderStyle

AcChartBorderSt
yle

The style of the border around the


chart:
 ChartDropShadow: Displays a
shadow border.
 ChartNoBorder (default):
Displays no border.
 ChartShadowAndBorder:
Displays a shadow and border
combination.
 ChartSolidBorder: Displays a
solid border.

GridColor

AcColor

The color of the grid lines


superimposed over the chart.
The default is Black.

PointLabelFont

AcColor

The font of the point labels.

PointLabel
Orientation

AcChartLabel
Orientation

Specifies how point labels are


displayed:
 ChartAuto (default): The
system determines how labels
are displayed.
 ChartHorizontal: The labels are
displayed horizontally.
 ChartVertical: The labels are
displayed vertically.

PointLabelStyle

AcChartPoint
LabelStyle

The style of the labels displayed


for each point:
 ChartColoredNumericLabels
 ChartColoredTextLabels
 ChartNoPointLabels (default)
 ChartNumericLabels
 ChartTextLabels

ValuesColorList

String

A comma-separated list of color


names or RGB values used to
identify different data series.

A ctu ate Fo und ation Cla ss Re fe re nc e

Class AcChart

Title properties and variables


Property

Type

Description

TitleBackground
Color

AcColor

The background color of the rectangle


enclosing the title.
The default is TransparentColor.

TitleBorderStyle

AcChart
BorderStyle

The style of the border around the title:


 ChartDropShadow: Displays a
shadow border.
 ChartNoBorder (default): Displays
no border.
 ChartShadowAndBorder: Displays a
shadow and border combination.
 ChartSolidBorder: Displays a solid
border.

TitleFont

AcFont

The font of the chart title.

TitleText

String

The title that appears above the chart.

X-axis properties and variables


Property

Type

Description

XAxisColor

AcColor

The color of the x-axis lines.


The default is Black.

XAxisOrigin

AcChartAxis
Origin

Determines how origin is calculated:


 ChartAutoOrigin: The system
calculates the origin.
 ChartCustomOrigin: The origin is
based on the value of the XMin
property.
 ChartZeroOrigin (default): The
origin is 0.

Chapter 3, AFC classes

113

Class AcChart

Property

Type

Description

XAxisPosition

AcChartXAxis
Position

The position of the x-axis:


 ChartXAxisAuto (default): The
system determines where to display
the x-axis.
 ChartXAxisBottom: The x-axis is
displayed at he bottom.
 ChartXAxisNone: The x-axis is not
displayed.
 ChartXAxisTop: The x-axis is
displayed at the top.

XLabelCount

Integer

The number of x-axis labels in the


XLabels( ) array. (Variable only)

XLabelFont

AcFont

The font of the x-axis labels.

XLabel
Format

String

The format string used to create custom


x-axis labels.

XLabels

String

XLabelsList

XLabelStyle

114

The x-axis labels. (Variable only)


A comma-separated list of quoted
x-axis values. Used only when the
XLabelStyle property is set to
ChartCustomXLabels. (Property only)

AcChartXLabel
Style

A ctu ate Fo und ation Cla ss Re fe re nc e

The type of labels to show along the xaxis:


 ChartAutoXLabels (default): The
system calculates the labels.
 ChartCustomXLabels: The labels
are based on the value of the
XLabelsList property. If the
XLabelsList property is empty, the
labels are based on the value of the
CategoryLabel property.
 ChartExpressionXLabels: The labels
are based on the expression
specified in the CategoryLabel
property.
 ChartNoXLabels: The labels are not
displayed.

Class AcChart

Property

Type

XMajorGrid
Style

AcChartLinePen

XMajorTick
Count

Integer

XMajorTickStyle

AcChartTickStyle

Description
The line style of the major grid lines:
ChartDashDotDotLine
 ChartDashDotLine
 ChartDashLine
 ChartDotLine
 ChartNullLine (default)
 ChartSingleLine


For charts with x values, the number of


ticks to display.
The default is 0.
The type of tick marks to include:
ChartAutoTicks: The system
calculates the tick marks.
 ChartCustomTicks: The tick marks
are based on the value of the
XMajorTickCount property.
 ChartNoTicks (default): The tick
marks are not displayed.


XMax

Double

The maximum x-axis limit. This value


is computed when the chart is
displayed. When the chart is being
designed, this value is used for
displaying sample data.
The default is 100.

XMin

Double

The minimum x-axis limit. This value


is computed when the chart is
displayed. When the chart is being
designed, this value is used for
displaying sample data.
The default is 0.

XMinorGrid
Style

AcChartLinePen

The line style of the minor grid lines:


ChartDashDotDotLine
 ChartDashDotLine
 ChartDashLine
 ChartDotLine
 ChartNullLine (default)
 ChartSingleLine


Chapter 3, AFC classes

115

Class AcChart

116

Property

Type

Description

XShowMinorTicks

Boolean

If True, the chart displays minor tick


marks. In this case, five minor tick
marks are displayed between major
tick marks, except on category scales.
The default is False.

XTitle

String

The text of the x-axis title.

XTitleBackground
Color

AcColor

The background color of the x-axis title.


The default is TransparentColor.

XTitleBorder
Style

AcChartBorder
Style

The style of the rectangle around the xaxis title:


 ChartDropShadow: Displays a
shadow border.
 ChartNoBorder (default): Displays
no border.
 ChartShadowAndBorder: Displays
a shadow and border combination.
 ChartSolidBorder: Displays a solid
border.

XTitleFont

AcFont

The font of the x-axis title.

XTitleOrientation

AcGraphY
Orientation

The orientation of the x-axis title text:


 ChartYLabelDown: The text reads
from top to bottom.
 ChartYLabelHoriz (default): The
text reads from left to right.
 ChartYLabelUp : The text reads
from bottom to top.

A ctu ate Fo und ation Cla ss Re fe re nc e

Class AcChart

Property

Type

Description

XValueSet

AcChartXValueSet

The number of x values available in the


Points( ) array:
 ChartDefaultXValues (default): No
x values are available, the chart
should provide default spacing
along the x-axis.
 ChartXValuePerDataSet: One set of
x values is provided in the points
for the first (or only) data set that
apply to all points.
 ChartXValuePerPoint: Each point
has its own x value.

XLabelOrientation

AcChartLabel
Orientation

Specifies how x-axis labels are


displayed:
 ChartAuto (default): The labels are
rotated to prevent overlapping
labels.
 ChartHorizontal: The labels are
displayed horizontally.
 ChartVertical: The labels are
displayed vertically.

Y-axis properties and variables


Property

Type

Description

YAxisColor

AcColor

The color of the y-axis lines.


The default is Black.

YAxisOrigin

AcGraphAxis
Style

The location of the chart


origin:
 ChartAutoOrigin: The
system calculates the
origin.
 ChartCustomOrigin: The
origin is based on the value
of the YMin property.
 ChartZeroOrigin (default):
The origin is 0.

Chapter 3, AFC classes

117

Class AcChart

Property

Type

Description

YAxisPosition

AcChartYAxis
Position

The position of the y-axis:


 ChartYAxisAuto (default):
The system determines
where to display the y-axis.
 ChartYAxisLeft: The y-axis
is displayed at the left of
the chart.
 ChartYAxisNone: The yaxis is not displayed.
 ChartYAxisRight: The yaxis is displayed at the
right of the chart.

YLabelCount

Integer

The number of y-axis labels in


the YLabels( ) array. (Variable
only)

YLabelFont

AcFont

The font of the y-axis labels.

YLabelFormat

String

The format string used to


create custom and interval yaxis labels.

YLabels( )

String

The set of custom y-axis labels.


If used, must be of the size
specified by YMajorTickCount
+ 1. (Variable only)

YLabelsList

118

A ctu ate Fo und ation Cla ss Re fe re nc e

A comma-separated list of
quoted y-axis values. Used
only when the YLabelStyle
property is set to
ChartCustomYLabels.
(Property only)

Class AcChart

Property

Type

Description

YLabelStyle

AcChartYLabel
Style

The type of labels to show


along the y-axis:
 ChartAutoYLabels
(default): The system
calculates the labels.
 ChartCustomYLabels: The
labels are based on the
value of the YLabelsList
property.
 ChartIntervalYLabels: The
labels are based on the
value of the YTickInterval
property.
 ChartNoYLabels: The
labels are not displayed.

YMajorGridStyle

AcChartLinePen

The line style of the major grid


lines:
 ChartDashDotLine
 ChartDashLine
 ChartDashDotDotLine
 ChartDotLine
 ChartNullLine (default)
 ChartSingleLine

YMajorTickCount

Integer

The number of ticks to display.


Used only if YMajorTickStyle
property is set to
ChartCustomTicks or if
CustomLabels is set.
The default is 0.

Chapter 3, AFC classes

119

Class AcChart

120

Property

Type

Description

YMajorTickStyle

AcChartTickStyle

The type of tick marks to


include:
 ChartAutoTicks: The
system calculates the tick
marks.
 ChartCustomTicks: The
tick marks are based on the
value of the
YMajorTickCount property.
 ChartNoTicks (default):
The tick marks are not
displayed.

YMax

Double

The maximum y-axis limit.


This value is computed when
the chart is displayed. When
the chart is being designed,
this value is used for
displaying sample data.
The default is 100.

YMin

Double

The minimum y-axis limit.


This value is computed when
the chart is displayed. When
the chart is being designed,
this value is used for
displaying sample data.
The default is 0.

YMinorGridStyle

AcChartLinePen

The line style of the minor grid


lines:
 ChartDashDotDotLine
 ChartDashDotLine
 ChartDashLine
 ChartDotLine
 ChartNullLine (default)
 ChartSingleLine

Actuate Foundation Class Reference

Class AcChart

Property

Type

Description

YShowMinorTicks

Boolean

If True, the chart displays


minor tick marks. In this case,
five minor tick marks are
always displayed between
major tick marks. The minor
tick marks are displayed for
both the base chart and the
dual chart, if any.
The default is False.

YTickInterval

Integer

The number of units between


tick marks of the y-axis.
The default is 1.
To compute labels based on
YTickInterval, the YLabelStyle
property must be set to
ChartIntervalYLabels.

YTitle

String

The text of the y-axis title.

YTitleBackground
Color

AcColor

The background color of the yaxis title.


The default is
TransparentColor.

YTitleBorderStyle

AcChartBorder
Style

The style of the rectangle


around the y-axis title:
 ChartDropShadow:
Displays a shadow border.
 ChartNoBorder (default):
Displays no border.
 ChartShadowAndBorder:
Displays a shadow and
border combination.
 ChartSolidBorder: Displays
a solid border.

YTitleFont

AcFont

The font of the y-axis title.

Chapter 3, AFC classes

121

Class AcChart

Property

Type

Description

YTitleOrientation

AcChartY
Orientation

The orientation of the y-axis


title text:
 ChartYLabelDown: The
text reads from top to
bottom.
 ChartYLabelHoriz: The
text reads from left to right.
 ChartYLabelUp (default):
The text reads from bottom
to top.

YLabelOrientation

AcChartLabel
Orientation

Specifies how y-axis labels are


displayed:
 ChartAuto (default): The
labels are rotated to
prevent overlapping labels.
 ChartHorizontal: The
labels are displayed
horizontally.
 ChartVertical: The labels
are displayed vertically.

Dual y-axis properties and variables

122

Property

Type

Description

DualYAxisColor

AcColor

The color of the dual y-axis.


The default is Black.

DualYAxisOrigin

AcChartAxisOrigin

The location of the dual chart


origin:
 ChartAutoOrigin: The
system calculates the
origin.
 ChartCustomOrigin: The
origin is based on the
DualYMin and DualYMax
values.
 ChartZeroOrigin (default):
The origin is 0.

Actuate Foundation Class Reference

Class AcChart

Property

Type

Description

DualYDisplay

Boolean

If True, the dual chart is


drawn. If False, the dual chart
is not drawn. Must be set to
True for the DualY-Axis
properties to take effect. If the
base chart is not of a
supported type, the
DualYDisplay property is
ignored.
The default is False.

DualYKeyValue

String

The value of the series key that


corresponds to the dual chart.
The default is an empty string
which indicates that the last
series in the chart is the dual
chart data.

DualYLabelFont

AcFont

The font of the dual chart


labels.

DualYLabelFormat

String

The format of the dual chart


label.

DualYLabelStyle

AcChartYLabel
Style

The type of the dual chart


label:
 ChartAutoYLabels
(default): The system
calculates the labels.
 ChartCustomYLabels: The
labels are based on the
value of the YLabelsList
property.
 ChartIntervalYLabels: The
labels are computed based
on the value of the
DualYTickInterval
property.
 ChartNoYLabels: The
labels are not displayed.

DualYLineColor

AcColor

The color of the dual chart


line.
The default is Black.

Chapter 3, AFC classes

123

Class AcChart

124

Property

Type

Description

DualYLinePattern

AcChartLinePen

The pattern of the dual chart


line:
 ChartDashDotDotLine
 ChartDashDotLine
 ChartDashLine
 ChartDotLine
 ChartNullLine
 ChartSingleLine (default)

DualYLineThickness

Integer

The thickness of the dual chart


line.
The default is 1.

DualYMajorTick
Count

Integer

The number of ticks to display


on the dual axis.
The default is 0.

DualYMajorTickStyle

AcChartTickStyle

The type of tick marks to show


on the dual axis:
 ChartAutoTicks
 ChartCustom Ticks
 ChartNoTicks (default)

DualYMax

Double

The maximum y-axis limit of


the dual chart. This value is
computed when the chart is
displayed. When the chart is
being designed, this value is
used for displaying sample
data.
The default is 100.

DualYMin

Double

The minimum y-axis limit of


the dual chart. This value is
computed when the chart is
displayed. When the chart is
being designed, this value is
used for displaying sample
data.
The default is 0.

DualYShowLine

Boolean

If True (default), lines


connecting the points of the
dual chart are shown.

Actuate Foundation Class Reference

Class AcChart

Property

Type

Description

DualYTickInterval

Integer

The number of units between


tick marks of the dual axis.
The default is 1.
To compute labels based on
DualYTickInterval, the
DualYLabelStyle property
must be set to
ChartIntervalYLabels.

DualYTitle

String

The text of the dual axis title.

DualYTitleBackgroun
dColor

AcColor

The background color of the


dual axis title.
The default is
TransparentColor.

DualYTitleBorder
Style

AcChartBorderStyle The style of the rectangle


around the dual axis title:
 ChartDropShadow:
Displays a shadow border.
 ChartNoBorder (default):
Displays no border.
 ChartShadowAndBorder:
Displays a shadow and
border combination.
 ChartSolidBorder: Displays
a solid border.

DualYTitleFont

AcFont

DualYTitleOrientation AcGraphY
Orientation

The font of the dual chart title.


The orientation of the dual
axis title text:
 ChartYLabelDown: The
text reads from top to
bottom.
 ChartYLabelHoriz: The
text reads from left to right.
 ChartYLabelUp (default):
The text reads from bottom
to top.

Chapter 3, AFC classes

125

Class AcChart

Property

Type

Description

DualYLabel
Orientation

Boolean

Specifies how dual axis labels


are displayed:
 ChartAuto (default): The
labels are rotated to
prevent overlapping labels.
 ChartHorizontal: The
labels are displayed
horizontally.
 ChartVertical: The labels
are displayed vertically.

DualYShowSymbols

Boolean

If True (default), symbols are


shown for each point of the
dual chart.

Legend properties and variables

126

Property

Type

Description

LegendBackground
Color

AcColor

The background color of the legend.


The default TransparentColor.

LegendBorderStyle

AcChart
BorderStyle

The style of the rectangle around the


legend:
 ChartDropShadow: Displays a
shadow border.
 ChartNoBorder (default):
Displays no border.
 ChartShadowAndBorder:
Displays a shadow and border
combination.
 ChartSolidBorder: Displays a
solid border.

LegendColorText

Boolean

If True, legend entries are the same


color as the series they identify. If
False (default), all legend entries are
the color set by LegendFont.Color.

LegendFont

AcFont

The font of the legend labels.

LegendLabelCount

Integer

The number of labels in the


LegendLabels( ) array. (Variable only)

Actuate Foundation Class Reference

Class AcChart

Property

Type

Description

LegendLabels( )

String

The set of legend labels. The size of


this array is DataSetCount. (Variable
only)

LegendLabelsList

LegendPosition

A comma-separated list of quoted


legend labels that you provide to
create custom legend labels.
AcChartLege
ndPosition

The position of the legend:


ChartLegendBottom: Displays the
legend at the bottom of the chart.
 ChartLegendBottomLeft: Displays
the legend at the bottom left of the
chart.
 ChartLegendBottomRight:
Displays the legend at the bottom
right of the chart.
 ChartLegendLeft: Displays the
legend at the left of the chart.
 ChartLegendRight (default):
Displays the legend at the right of
the chart.
 ChartLegendNone: Displays no
legend.
 ChartLegendTop: Displays the
legend at the top of the chart.
 ChartLegendTopLeft Displays the
legend at the top left of the chart.
 ChartLegendTopRight: Displays
the legend at the top right of the
chart.


Chapter 3, AFC classes

127

Class AcChart

Time series properties and variables

128

Property

Type

Description

Range

Integer

The total number of units to display


along the x-axis.
This property is validated at run time.
The default is 1.

RangeUnit

AcChartUnit
Type

The unit used for Range:


ChartDayUnit: Range is in days.
 ChartDefaultUnit (default): The
system calculates the Range and
RangeUnit and ignores the value of
Range.
 ChartHourUnit: Range is in hours.
 ChartMinuteUnit: Range is in
minutes.
 ChartMonthUnit: Range is in
months.
 ChartNumberUnit: Range is in
numbers.
 ChartQuarterUnit: Range is in
quarters.
 ChartWeekUnit: Range is in weeks.
The week starts on a Sunday.
 ChartYearUnit: Range is in years.


RoundTo

AcChart
RoundTo

Specifies how data is rounded:


 ChartRoundToInterval (default):
Rounding is based on the
TickInterval unit.
 ChartRoundToRange: Rounding is
based on the RangeUnit.

TickInterval

Integer

The number of units, specified in


TickIntervalUnit, between tick marks.
The number of tick marks is calculated
by dividing the Range by the
TickInterval.
This property is validated at run time.
The default is 1.

Actuate Foundation Class Reference

Class AcChart

Property

Type

Description

TickIntervalUnit

AcChartUnit
Type

TimeSeries

Boolean

The unit used for the TickInterval:


ChartDayUnit: TickInterval is in
days.
 ChartDefaultUnit (default): For
AcDetailChart, the system calculates
the interval. For AcSummaryChart,
the system sets TickIntervalUnit to
ChartMonthUnit.
 ChartHourUnit: TickInterval is in
hours.
 ChartMinuteUnit: TickInterval is in
minutes.
 ChartMonthUnit: TickInterval is in
months. This is the default for
AcSummaryChart.
 ChartNumberUnit: TickInterval is in
numbers.
 ChartQuarterUnit: TickInterval is in
quarters.
 ChartWeekUnit: TickInterval is in
weeks. The week starts on a Sunday.
 ChartYearUnit: The interval is years.
Determines whether the chart is a time
series chart or not. Must be set to True to
display correct labels. If True, the labels
are always drawn on the x-axis.
The default is False.

Chapter 3, AFC classes

129

Class AcChart

Chart type-specific properties and variables

130

Property

Type

Description

BarGrouping

AcChartBar
Grouping

Bar chart only.


Specifies how data is grouped in a bar
chart:
 ChartBarCluster: Produces a cluster
bar chart.
 ChartBarNoGrouping (default):
Produces a bar chart with no
grouping.
 ChartBarStack: Produces a stacked
bar chart.
 ChartBarStackPercentage: Produces
a stacked percentage bar chart.

BarOrientation

AcChartBar
Orientation

Bar chart only.


Specifies how bars are drawn on the bar
chart:
 ChartBarHorizontal
 ChartBarHorizontalReversed
 ChartBarVertical (default)

ChartType

AcChartType

Specifies the chart type:


 Chart2DArea
 Chart3DArea
 Chart2DBar
 Chart3DBar
 Chart2DPie
 Chart3DPie
 ChartCandleStick
 ChartHLC
 ChartLine
 ChartOHLC
 ChartScatter
 ChartTape

Actuate Foundation Class Reference

Class AcChart

Property

Type

Description

HLCBarStyle

AcChartHLC
BarStyle

HLC and OHLC charts only.


Specifies how the chart displays high,
low, and close tick marks:
 ChartHLCAllBars (default)
 ChartHLCNoBars
 ChartHLCNoClose
 ChartHLCNoHighLowBars

LineStyle

AcChartLine
Style

Line, scatter, and pie charts only.


Specifies the type of lines used to plot
the data:
 ChartCustomPatterns
 ChartDashDotDotPattern
 ChartDashDotPattern
 ChartDashPattern
 ChartDotPattern
 ChartSolidPattern (default)

LineStylesList

Line, scatter, and pie charts only.


A comma-separated list of line styles:
 ChartDashDotDotPattern
 ChartDashDotPattern
 ChartDashPattern
 ChartDotPattern
 ChartSolidPattern

LineThickness

Integer

Line, scatter, and pie charts only.


The line thickness in chart-specific
units. LineThickness applies regardless
of the setting of the LineStyle property
The default is 1.

PointsArePercent

Boolean

Area charts only.


If True, the numbers in the points are
percentage figures. If False (default), the
points are absolute numbers.

Chapter 3, AFC classes

131

Class AcChart

Property

Type

Description

ShowAsPercent

Boolean

Area charts and pie charts only.


If True, the chart is drawn showing the
percentage of each data point as the
sum of all points in that data set. The
area always fills the full chart height.
The default is False.

ShowLines

Boolean

Line, scatter, and pie charts only.


If True, lines are shown connecting the
points.
The default is False.

ShowSticks

Boolean

Line charts only.


If True, lines are shown from the y-axis
to each point.
The default is False.

ShowSymbols

Boolean

Line and scatter charts only.


If True, symbols are shown for each
point.
The default is False.

Methods

132

Method

Type

Description

CalculateEndingValue( )

Variant

Returns the ending date of the


chart.

CalculateRangeUnit( )

N/A

Calculates a new range unit if a


default value was set.

CalculateStartingValue( )

Variant

Returns the starting date of the


chart.

CalculateTickIntervalUnit( )

N/A

Calculates a new tick interval unit


if a default value has been set.

ComputeDualYMinMax( )

N/A

Computes the minimum and


maximum values for the y-axis of
the dual chart.

ComputeLabels( )

N/A

Computes the labels.

ComputeMinMax( )

N/A

Computes the x and y minimum


and maximum values.

Actuate Foundation Class Reference

AcChart::CalculateEndingValue method

Method

Type

Description

CustomDualYLabels( )

N/A

Calculates the y labels of the dual


axis.

FormatDualYLabel( )

N/A

Formats a dual axis label.

FormatXLabel( )

String

Formats an x label value.

FormatYLabel( )

String

Formats a y label value.

GetSeriesKey( )

Variant

If an expression is entered in the


SeriesExp property, returns the
Key code of the data row.
Otherwise, returns nothing.

AcChart::CalculateEndingValue method
Returns the ending date of the chart.

Syntax
Description

Function CalculateEndingValue( ) As Variant


The CalculateEndingValue( ) method returns the ending point of the chart.
CalculateEndingValue( ) is called by the CustomXLabels( ) method.
Override CalculateEndingValue( ) to change the calculation of the ending date.

AcChart::CalculateRangeUnit method
Calculates a new range unit.

Syntax
Description

Sub CalculateRangeUnit( )
The CalculateRangeUnit( ) method calculates a new range unit if the default
value has been set. CalculateRangeUnit( ) uses the tick interval values to
determine the correct unit.
CalculateRangeUnit( ) is called by the CalculateStartingValue( ) method.

AcChart::CalculateStartingValue method
Returns the starting date of the chart.

Syntax

Function CalculateStartingValue( ) As Variant

Chapter 3, AFC classes

133

AcChart::CalculateTickIntervalUnit method

Description

The CalculateStartingValue( ) method returns the starting point of the chart.


CalculateStartingValue( ) is called by the CustomXLabels( ) method.
Override CalculateStartingValue( ) to change the calculation of the starting
date.

AcChart::CalculateTickIntervalUnit method
Calculates a new tick interval unit.

Syntax
Description

Sub CalculateTickIntervalUnit( )
The CalculateTickIntervalUnit( ) method calculates a new tick interval unit if
the default value was set. For AcDetailChart, CalculateTickIntervalUnit( ) uses
the largest and smallest data points to determine the best units to use so that 5
to 7 labels are displayed in the chart.
CalculateTickIntervalUnit( ) is called by the CalculateStartingValue() method.

AcChart::ComputeDualYMinMax method
Computes the minimum and maximum values for the dual axis.

Syntax
Description

Sub ComputeDualYMinMax( )
The ComputeDualYMinMax( ) method computes the minimum and
maximum values for the dual axis. These values are used by the
CustomDualYLabels( ) method to calculate the best fitting labels.
ComputeDualYMinMax( ) is called by the ComputeMinMax( ) method.

AcChart::ComputeLabels method
Computes the labels for the x-axis and y-axis.

Syntax
Description

134

Sub ComputeLabels( )
The framework calls the ComputeLabels( ) method to calculate the labels of
the x- and y-axis. The processing that ComputeLabels( ) performs depends on
the value of the XLabelStyle and YLabelStyle properties. If the value of these
properties is ChartCustomLabels, ComputeLabels( ) calls FormatXLabel( ) and
FormatYLabel( ), respectively, to format the labels. If the value of XLabelStyle
and YLabelStyle is not ChartCustomLabels, ComputeLabels( ) does nothing
and the framework generates default labels.

Actuate Foundation Class Reference

AcChart::ComputeMinMax method

If you set the TimeSeries property, this method calls the CustomXLabels( )
method.
Override ComputeLabels( ) to change the way labels are computed. To change
the way labels are formatted, override FormatXLabel( ) or FormatYLabel( ).

See also

AcChart::FormatXLabel method
AcChart::FormatYLabel method

AcChart::ComputeMinMax method
Computes the minimum and maximum values for each axis.

Syntax
Description

Sub ComputeMinMax( )
The ComputeMinMax( ) method computes the minimum and maximum
values for each axis if no values are specified. To have ComputeMinMax( )
compute these values, you must set the properties appropriately:


Set XValueSet to a value other than ChartDefaultXValues, except for scatter


charts.

Set YAxisOrigin to ChartCustomOrigin.

AcChart::CustomDualYLabels method
Calculates the y-labels of the dual axis.

Syntax
Description

Sub CustomDualYLabels( )
The CustomDualYLabels( ) method computes the labels of the dual axis. To
compute the labels, CustomDualYLabels( ) divides the difference between
DualYMax and DualYMin by the number of tick marks and creates the labels
at each mark.
CustomDualYLabels( ) is called by the ComputeLabels( ) method.
Override CustomDaulYLabels( ) to change the way labels are computed. If
you want to change the way labels are formatted, override
FormatDualYLabel( ).

See also

AcChart::FormatDualYLabel method

Chapter 3, AFC classes

135

AcChart::FormatDualYLabel method

AcChart::FormatDualYLabel method
Formats a dual axis label.

Syntax
Parameter
Description

Function FormatDualYLabel( y As Double ) As String


y
The number of the dual axis label to format.
The FormatDualYLabel( ) method formats a dual axis label.
FormatDualYLabel( ) calls the Format$( ) function and uses the format
argument specified in the DualYLabelFormat property. FormatDualYLabel( )
is called by the CustomDualYLabels( ) method.
Override this method to change the way labels on the dual axis are formatted.

Returns
See also

The formatted label.


AcChart::CustomDualYLabels method
Format$( ) function in Actuate Basic Language Reference.

AcChart::FormatXLabel method
Formats a custom x-axis label.

Syntax
Parameter
Description

Function FormatXLabel( x As Double ) As String


x
The number of the x-axis label to format.
If you set the XLabelStyle property to ChartCustomLabels, the
ComputeLabels( ) method calls the FormatXLabel( ) method to format each
label on the x-axis. By default, the FormatXLabel( ) method calls the Format$( )
function and uses the format argument specified in the XLabelFormat
property.
Override this method to change the way labels on the x-axis are formatted.

Returns
See also

136

The formatted string.


AcChart::ComputeLabels method
AcChart::FormatYLabel method
Format$( ) function in Actuate Basic Language Reference.

Actuate Foundation Class Reference

AcChart::FormatYLabel method

AcChart::FormatYLabel method
Formats a custom y-axis label.

Syntax
Parameter
Description

Function FormatYLabel( y As Double ) As String


y
The number of the y-axis label to format.
If you set the YLabelStyle property to ChartCustomLabels, the
ComputeLabels( ) method calls the FormatYLabel( ) method to format each
label on the y-axis. By default, the FormatYLabel( ) method calls the Format$( )
function and uses the format argument specified in the YLabelFormat
property.
Override this method to change the way labels on the y-axis are formatted.

Returns
See also

The formatted string.


AcChart::ComputeLabels method
AcChart::FormatXLabel method

AcChart::GetSeriesKey method
If an expression in the SeriesExp is entered, returns the Key code of the data
row.

Syntax
Parameter
Description

Returns

Function GetSeriesKey( row As AcDataRow ) As Variant


row
The data row for which to return the Key code.
By default, the GetSeriesKey( ) method returns nothing. It is overridden in
code generation when the user enters an expression in the SeriesExp property.
In this case, calling GetSeriesKey( ) returns the Key code of the data row
passed.
The Key code of the data row.

Chapter 3, AFC classes

137

Class AcCollection

Class AcCollection
The abstract base class for the Actuate collection classes.

Description

Collections hold objects of any type. The methods on collections pass


references to these objects as a special type called AnyClass. You must assign
the object reference to a handle of your derived class to access the methods on
your object.
You must take care to store the correct kind of objects in each of your
collections. For example, if you create a collection of controls, you can also
store a data adapter in that collection. However, if your code expects all the
objects in the collection to be controls, a run-time error occurs when you try to
assign the data adapter to an object reference variable for a control.

Subclassing AcCollection
Because AcCollection is an abstract base class, you generally do not derive
directly from it.

Methods

See also

138

Method

Type

Description

NewIterator( )

AcIterator

Creates an iterator for the


collection.

RemoveAll( )

N/A

Removes all contents from the


collection.

Remove( )

N/A

Removes a specified item from the


collection.

IsEmpty( )

Boolean

Reports whether the collection is


empty or not.

GetCount( )

Integer

Returns the number of objects in


the collection.

Class AcIterator
Class AcOrderedCollection

Actuate Foundation Class Reference

AcCollection::NewIterator method

AcCollection::NewIterator method
Creates an iterator for the collection.

Syntax
Description

Returns
Example

Function NewIterator( ) As AcIterator


Use NewIterator( ) to create an iterator over a collection. The iterator lets you
access each item in the collection. If the collection is ordered, the iterator
accesses each item in the order you established previously.
A reference to the iterator.
In the following example, a frames GetContentIterator( ) method is
overridden to create an iterator to access the frames contents. NewIterator( ) is
called to instantiate the iterator:
Function GetContentIterator( ) As AcIterator
Dim contents As AcOrderedCollection
Set contents = GetContents( )
If contents Is Nothing Then
Set contents = New AcSingleList
End If
Set GetContentIterator = contents.NewIterator( )
End Function

See also

Class AcIterator

AcCollection::RemoveAll method
Removes all contents from the collection.

Syntax
Description

Sub RemoveAll( )
Use RemoveAll( ) to delete all the contents from a collection. To remove a
single object from a collection, use Remove( ).
Actuate automatically deletes objects if they are transient and their reference
count goes to zero.

See also

AcCollection::Remove method

Chapter 3, AFC classes

139

AcCollection::Remove method

AcCollection::Remove method
Removes a specified item from the collection.

Syntax
Parameter
Description

Sub Remove( item As AnyClass )


item
The object in the collection to delete.
Use Remove( ) to delete an object from the collection. If you specify an object
that is not in the collection, Remove( ) does nothing. To remove all objects in a
collection, use RemoveAll( ).
Actuate automatically deletes objects if they are transient and their reference
count goes to zero.

Example

The following example shows how to:




Override a pages GetContentIterator( ) method to create an iterator to


access controls on the page.

Override the pages Build( ) method to locate a specific control and delete it
with Remove( ):
Function GetContentIterator( ) As AcIterator
Dim contents As AcOrderedCollection
Set contents = GetContents( )
If contents Is Nothing Then
Set contents = New AcSingleList
End If
Set GetContentIterator = contents.NewIterator( )
End Function
Sub Build( )
Super::Build( )
Dim iter as AcIterator
Dim content as AcReportComponent
Set iter = GetContentIterator( )
Do while iter.HasMore( )
Set content = iter.GetNext( )
Dim control As AcControl
Set control = FindContentByClass( "EllipseControl" )
GetContents( ).Remove( control )
Loop
End Sub

See also

140

AcCollection::RemoveAll method

Actuate Foundation Class Reference

AcCollection::IsEmpty method

AcCollection::IsEmpty method
Reports whether the collection is empty or not.

Syntax
Description
Returns

Function IsEmpty( ) As Boolean


Use IsEmpty( ) to determine if a collection contains objects. To determine the
number of objects in a collection, use GetCount( ).
True if the collection contains no objects.
False if the collection contains at least one object.

See also

AcCollection::GetCount method

AcCollection::GetCount method
Returns the number of objects in the collection.

Syntax
Description
Returns
See also

Function GetCount( ) As Integer


Use GetCount( ) to determine the number of objects in a collection. To
determine if a collection contains objects, use IsEmpty( ).
The number of objects in the collection.
AcCollection::IsEmpty method

Chapter 3, AFC classes

141

Class AcComponent

Class AcComponent
The principal base class for the Actuate Foundation Classes (AFC).

Description

AcComponent serves as the root for the AFC framework. All classes that
appear in the structure pane of the Design Editor are derived from
AcComponent. AcComponent defines the mechanism for creating objects
within container objects.
Within the AFC framework, most classes are derived from AcComponent.
However, several classes are not derived from AcComponent because they are
not part of the report structure, rather they are classes that provide services to
the report. Such classes include AcDBCursor, AcDBStatement, and AcIterator.

Subclassing AcComponent
Because AcComponent is the foundation for the AFC framework, you
generally do not derive directly from AcComponent.

Properties
Property

Type

Description

DisplayName

String

Not used by e.Report Designer


Professional. Provided for
compatibility with Actuate
e.Report Designer.

Method

Type

Description

Delete( )

N/A

Destructor.

GetContentName( )

String

Returns the name of the


component in a specified slot.

IsPersistent( )

Boolean

Returns whether the component is


persistent (True) or transient
(False).

New( )

N/A

Constructor.

Methods

142

Actuate Foundation Class Reference

AcComponent::Delete method

See also

Method

Type

Description

NewComponent( )

AcComponent

Specifies the logic for creating


transient objects.

NewPersistent
Component( )

AcComponent

Specifies the logic for creating


persistent objects.

Class AcConnection
Class AcReport
Class AcReportComponent

AcComponent::Delete method
The Basic destructor. In derived classes, Actuate Basic calls Delete( ) when
deleting transient objects that are no longer needed.

Syntax
Description

Sub Delete( )
Actuate Basic calls Delete( ) to destroy transient objects when they have
completed their tasks. The destructor for the most derived class is called first,
followed by all the destructors in the ancestor classes in order of their position
in the class hierarchy.
In derived classes, you can override Delete( ) to perform clean up tasks such as
closing files. To do this, call Super::Delete( ) as the last line of your method.

See also

AcComponent::New method

AcComponent::GetContentName method
Returns the name of the component in a specified slot.

Syntax

Function GetContentName( rel As String ) As String


or
Function GetContentName( rel As String, index As Integer ) As String

Parameter

rel
The name of a structure relationship as it appears in the structure pane of the
Design Editor or in this reference manual.

Chapter 3, AFC classes

143

AcComponent::IsPersistent method

index
If the structure relationship is a list, use the second form of this method and
specify the list location (starting with 1) of the component you want to query.

Description

Use GetContentName( ) to find what component (if any) exists in a particular


slot for a component. The function returns an empty string if either the
relationship name is invalid, or if nothing exists in that slot. The index lets you
query list relationships, such as Content for a frame, that can have multiple
contents. You can also specify an index location that you want to query.
You can determine the number of items in the list by writing a loop to query
the components starting at index 1. The method will return an empty string
which means that the current index is one past the end of the list.
You use the first form (without the index) for single relationships, such as the
Before slot of a report section. The form without the index is equivalent to
calling the second form with an index of 1. (That is, a single relationship looks
like a list with 0 or 1 elements.)

Returns

The name of the component.

AcComponent::IsPersistent method
Returns whether the component is persistent or transient.

Syntax
Description
Returns

Function IsPersistent( ) As Boolean


Use IsPersistent( ) to determine whether the component is persistent (stored in
the .roi file) or transient (deleted from memory when the report is finished).
True if the component is persistent.
False if the component is transient.

AcComponent::New method
Constructor. In derived classes, called by Actuate Basic after the object is
instantiated.

Syntax
Description

Sub New( )
New( ) initializes all the properties set through the Component Editor.
In derived classes, you typically override New( ) to initialize user-defined
variables. If you override New( ), you must call Super::New( ) as the first line
of your method so that SetProperties( ) can initialize property values.

144

Actuate Foundation Class Reference

AcComponent::NewComponent method

AcComponent::NewComponent method
Specifies the logic for creating transient objects.

Syntax

Function NewComponent( rel As String ) As AcComponent


or
Function NewComponent( rel As String, index As Integer ) As AcComponent

Parameter

rel
The name of the relationship between the objects in the structure pane. The
name of the relationship is shown in the Properties list. For example, if a report
uses a data stream, the generated code is:
NewComponent( "DataStream" )
index
The contents position in the structure pane if the container object creates and
holds multiple objects.

Description

Returns

Derived classes call NewComponent( ) to create transient objects as they are


represented in the Design Editors structure pane. For example, a data source
calls NewComponent( ) to create a data row.
A reference to the created object in derived classes.
Nothing if the object was not created.

See also

AcComponent::NewPersistentComponent method

AcComponent::NewPersistentComponent method
Specifies the logic for creating persistent objects.

Syntax

Function NewPersistentComponent( rel As String ) As AcComponent


Function NewPersistentComponent( rel As String, index As Integer ) As
AcComponent

Parameter

rel
The name of the relationship between the objects in the structure pane. The
name of the relationship is shown in the Properties list. For example, if a group
section uses a PageHeader, the generated code is:
NewComponent( "PageHeader" )

Chapter 3, AFC classes

145

AcComponent::NewPersistentComponent method

index
The contents position in the structure pane if the container object creates and
contains multiple objects. The following figure illustrates the objects index
values.

Index 1
Index 2
Index 3

Description

Derived classes call NewPersistentComponent( ) to create persistent objects


contained within them. For example, a frame calls
NewPersistentComponent( ) to create each of its contained controls.
Generally, you do not need to override NewPersistentComponent( ).

Returns

In derived classes, a reference to the created object.


Nothing if the object is not created.

See also

146

AcComponent::NewComponent method

Actuate Foundation Class Reference

Class AcConditionalSection

Class AcConditionalSection
A class you use in the report design to instantiate a component in a section,
depending on a specified condition.
AcComponent
AcReportComponent
AcSection
AcConditionalSection

Description

Use the conditional section to conditionally instantiate one of several


components in a section. For example, you can use a conditional section to
print a different frame for credit card or cash transactions.
The three general steps to set up a conditional section are:
1 Specify a Boolean expression in the conditional sections IfExp property.
2 Place a component in the conditional sections Then slot.
3 Place a component in the conditional sections Else slot.
If the IfExp expression evaluates to True, then the conditional section builds
the component in its Then slot; otherwise, it builds the component in the Else
slot.
At times you may want to create a case-statement type of structure, in which
your report chooses from one of a group of possible components to generate.
Perform these steps to create this type of structure:
1 Add a sequential section to your report to represent the entire set of
possible components.
2 Add conditional sections to the sequential section where each conditional
section represents one of these cases.
3 For each conditional section, specify an IfExp value to describe the case.
4 For each conditional section, place a component in the Then slot. This
component is instantiated when the IfExp value is True.
With this structure, you can choose your If expressions so that the cases do not
overlap, or you can let the cases overlap to instantiate multiple components
depending on the condition.
Do not override the AcConditionalSection::Build or
AcConditionalSection::BuildFromRow methods. These methods are private on
this class.

Chapter 3, AFC classes

147

AcConditionalSection::ConditionIsTrue method

Variables
Variable

Type

Description

KeyValue

Variant

The value of the key column for the group.

Properties
Property

Type

Description

IfExp

Expression

A Boolean expression. If the expression


evaluates to True, then the section builds
the component in the Then slot;
otherwise, it builds the component in the
Else slot. If you enter nothing in this slot,
then the default value for the condition
is True.

Then

AcReportComponent
slot

Builds this component if IfExp is True. If


you enter nothing in this slot and the
condition is True, Actuate does not build
content for the conditional section.

Else

AcReportComponent
slot

Builds this component if IfExp is False. If


you enter nothing in this slot and the
condition is False, Actuate does not
build content for the conditional section.

Methods
Method

Type

Description

ConditionIsTrue( )

Boolean

Returns the True/False


condition value.

AcConditionalSection::ConditionIsTrue method
Returns the True or False condition value.

Syntax
Parameter

148

Function ConditionIsTrue( row As AcDataRow ) As Boolean


row

Actuate Foundation Class Reference

AcConditionalSection::ConditionIsTrue method

The data row, if any, associated with this component. This is the data row
passed to the BuildFromRow( ) method of the conditional section. The row
returns Nothing if the container component calls Build( ) instead.

Description

The ConditionIsTrue( ) method returns True or False depending on whether


the conditional section should instantiate the component in the Then or Else
slot accordingly. You can think of the condition as follows:
If ConditionIsTrue( row ) Then
instantiate Then component
Else
instantiate Else component
End If

Actuate generates this method for you based on the value you enter in the
IfExp property. However, if the expression you want to evaluate is more
complex than that property can handle, you can override this method to do the
work instead.

Returns

True if the conditional section should instantiate the component in the Then
slot.
False if the conditional section should instantiate the component in the Else
slot.

Chapter 3, AFC classes

149

Class AcConnection

Class AcConnection
An abstract base class that defines the core protocol for all connection
components.
AcComponent
AcConnection

Description

AcConnection defines the core protocol for connecting to and disconnecting


from an input source. Classes derived from AcConnection redefine the
methods to perform tasks specific to a database connection.
Actuate provides connection classes to connect to the following databases:
DB2, Informix, Microsoft SQL, ODBC, Oracle, Progress, and Sybase. If you
need a connection to any other type of input source, subclass AcConnection to
create the connection.
The IsOpen variable contains the current state of the connection. If you derive
your own connection classes, keep IsOpen up to date in addition to other work
you need to perform.

Variables
Variable

Type

Description

IsOpen

Boolean

True establishes a valid connection.

Method

Type

Description

Connect( )

Boolean

An empty method for derived classes to


override to perform the actual connection to
a database.

Disconnect( )

N/A

An empty method for derived classes to


override to disconnect from a database.

IsConnected( )

Boolean

Returns whether a database connection is


established.

RaiseError( )

N/A

Produces an appropriate error message.

Methods

150

Actuate Foundation Class Reference

AcConnection::Connect method

AcConnection::Connect method
Attempts to connect to the database.

Syntax
Description

Function Connect( ) As Boolean


The Connect( ) method attempts to open the database by establishing a
connection. You must have previously set the variables needed to describe the
connection.
Derived classes override this method to perform the actual connection to the
database.

Returns

True if the connection is established.


False if the connection is not established.

See also

AcConnection::Disconnect method
AcConnection::IsConnected method

AcConnection::Disconnect method
Disconnects from the database.

Syntax
Description
See also

Sub Disconnect( )
Disconnect( ) disconnects from the database if there was a valid connection.
Derived classes override this method to perform the actual disconnect.
AcConnection::Connect method
AcConnection::IsConnected method

AcConnection::IsConnected method
Determines whether or not the connection is established.

Syntax
Description
Returns

Function IsConnected( ) As Boolean


Use IsConnected( ) in a control structure to execute tasks depending on
whether a connection is opened or closed.
True if the connection is established.
False if the connection is not established.

Chapter 3, AFC classes

151

AcConnection::RaiseError method

See also

AcConnection::Connect method
AcConnection::Disconnect method

AcConnection::RaiseError method
An abstract method that derived classes override to produce error messages.

Syntax
Description

Sub RaiseError( )
Raises a Basic error that describes the database error. Derived classes should
override this method to obtain error information from the database
connection, then raise the error.
Relational databases usually report error conditions through their connection
interface.

152

Actuate Foundation Class Reference

Class AcControl

Class AcControl
An abstract base class that defines the core characteristics of all controls.
AcComponent
AcReportComponent
AcVisualComponent
AcControl

Description

A control is the primary visual component in a report. You typically place


controls in frames to display labels, data, images, drawing elements, and so
on. You can also place controls directly on a page, for example, to display the
page number or date.
There are two types of controls: constant and data controls. AcControl is the
base class for both types of controls:


Constant controls, such as labels, lines, and rectangles, are fully defined at
design time and need no additional data in the Factory. You can, however,
write code to change the attributes of a constant control in the Factory. For
example, you can adjust the size of a line based on the dollar amount of a
data row field, or change the color of a label to red to show that a particular
customer is 60 days past due. To accomplish these tasks, you can override
the enclosing frames OnRow( ) method or the controls BuildFromRow( )
method to add the code.

Data controls, such as text, integer, and date/time controls, display values
from data rows processed in the Factory. For more information about data
controls, see the description of the AcDataControl class.

Like other visual components, controls can respond to viewing events, such as
mouse clicks, in the Viewer. You can override a controls viewing methods,
inherited from AcVisualComponent, to specify how users interact with
controls at view time.

Subclassing AcControl
Typically, you derive a new control from one of the more specialized
subclasses of AcControl, such as AcDoubleControl. Do not derive directly
from AcControl.

Chapter 3, AFC classes

153

Class AcControl

Factory protocol
When you place a control on a report design using the Design Editor, Actuate
automatically subclasses the appropriate derived control. The following table
describes AcControls protocol that defines the tasks that all controls perform.
Method

Task

New( )

Initializes the control.

Start( )

Initializes the control.

Build( )

Called if the enclosing frame does not have access to a


data row.

BuildFromRow( )

Called if the enclosing frame has access to a data row.


Sets the value of the control from the data row.

Finish( )

Completes the control.

Properties
Property

Type

Description

BalloonHelp

String

The text to be displayed when the user


holds the cursor over a control.

Methods

154

Method

Type

Description

BalloonHelp( )

String

Returns the text to be displayed when the


user holds the cursor over a control.

GetControlValue( )

Variant

Returns the value of another control


within the same frame.

GetHtmlText( )

String

Converts a controls text to HTML.

GetText( )

String

Returns the text of the control, if any,


formatted for display.

GetValue( )

Variant

Returns the value of the control.

PageNo( )

AcPage

Returns the current page number as an


integer.

PageNo$( )

String

Returns the formatted current page


number as a string.

Actuate Foundation Class Reference

AcControl::BalloonHelp method

Method

Type

Description

SetDataValue( )

N/A

Assigns a value to a data control.

SetValue( )

N/A

Implements the ValueExp property for a


data control.

AcControl::BalloonHelp method
Returns the text to be displayed when the user holds the cursor over a control.

Syntax
Description

Function BalloonHelp( ) As String


The BalloonHelp( ) method returns the text to be displayed when the user
holds the cursor over a control. By default, this is the value of the BalloonHelp
property. If you want to display a different value, override the BalloonHelp( )
method to display any other fixed or calculated value. You can specify the text
programmatically, use the value of the HelpText property, or display the
formatted value of a control.
If you override the BalloonHelp( ) method, the return value of the method is
displayed instead of the value of the Balloon Help property.
The BalloonHelp( ) method is available for all classes derived from AcControl
except those listed below:


AcLineControl

AcHTMLPlugInControl

AcHtmlRuleControl

AcHtmlImageControl

AcHtmlAppletControl

Returns

The string to be displayed.

See also

AcControl::GetText method

AcControl::GetControlValue method
Returns the value of another control within the same frame.

Syntax
Parameter

Function GetControlValue( controlName As String ) As Variant


controlName

Chapter 3, AFC classes

155

AcControl::GetHtmlText method

The name of the control for which you want the value. Specify the control with
its fully qualified name (for example, OrdersReport::ItemFrame::PriceControl)
or just the controls name (for example, PriceControl).

Description

Use GetControlValue( ) to get the value of another control within the same
frame. If, for example, you want to change the value or property of one control
depending on the value of another control, you can call GetControlValue( )
from the first control to get the value of the second control.
GetControlValue( ) first finds the control, then calls that controls GetValue( )
method to obtain the value. If you call GetControlValue( ) to get the value of a
control before its value is set, GetControlValue( ) returns Null.
If you use GetControlValue( ) in a custom implementation of SetValue( ), you
must be aware of the order in which controls are built. Generally, the controls
of a frame are built in the same order that they appear in the structure pane.

Returns

The value of the specified control.


Null if the specified controls value is not set.

Example

In the following example, a label controls OnRow( ) method is overridden so


that the labels font color is set to red when the value of an integer control,
DaysOverdue, is greater than 30. GetControlValue( ) returns the value of the
DaysOverdue integer control. Both the label and integer controls are in the
same frame:
Sub OnRow( row As AcDataRow )
Super::OnRow( row )
If GetControlValue("DaysOverdue") > 30 Then
Font.Color = Red
End If
End Sub

See also

AcBaseFrame::GetControlValue method

AcControl::GetHtmlText method
Formats a controls text for display in HTML.

Syntax
Description

See also

156

Function GetHtmlText( ) As String


GetHtmlText( ) uses the GetText( ) method to get the text for a control, then
converts the text to HTML using the Actuate Basic function ConvertToHtml( ).
Override this method to have control of HTML text formatting in your HTML
reports.
ConvertToHtml in Actuate Basic Language Reference.

Actuate Foundation Class Reference

AcControl::GetText method

AcControl::GetText method
Formats a controls value for display.

Syntax
Description

Function GetText( ) As String


The framework calls GetText( ) to format the data value of data controls and
the text value of label controls. In derived classes, such as AcTextControl or
AcIntegerControl, GetText( ) formats a controls data value by calling the
Actuate Basic Format$ function and using the format pattern you specified in
the controls Format property.
You can override a controls GetText( ) method to perform additional
formatting, for example, to translate a numeric value into a string of words for
printing on a check.

Returns

The text to display in the control.

See also

AcDataControl::Format method

AcControl::GetValue method
Returns the value of the control.

Syntax
Returns

Function GetValue( ) As Variant


The value of the DataValue property if the control is a data control.
Null if the control is not a data control.

See also

AcDataRow::GetValue method

AcControl::PageNo method
Returns the page index of the control.

Syntax
Description

Function PageNo( ) As Integer


PageNo( ) returns the position of the page in the report, starting from one. For
example, to show the page number in a control, set the value of the control to
PageNo( ).

Chapter 3, AFC classes

157

AcControl::PageNo$ method

This method can be used for a control directly on a page, or for a control in a
frame in a PageHeader or PageFooter slot. It is not applicable to other frames
because the page is not known when the value of the control is set.
PageNo( ) raises an error if it is called before the frame holding this control is
added to a page.

Returns
See also

An integer indicating the page index of this control.


AcControl::PageNo$ method
AcVisualComponent::GetPage method

AcControl::PageNo$ method
Returns the formatted page number of the control.

Syntax
Description

Function PageNo$( ) As String


The PageNo$() method returns the formatted page number of the control as a
string. For example, to show the formatted page number such as vi, 107, or
12-5 in a control, set the value of the control to PageNo$.
This method can be used for a control directly on a page, or for a control in a
frame in a PageHeader or PageFooter slot. It is not applicable to other frames
because the page is not known when the value of the control is set.
PageNo$( ) raises an error if it is called before the frame holding this control is
added to a page.

Returns
See also

A string containing the formatted page number of this control.


AcControl::PageNo method
AcVisualComponent::GetPage method

AcControl::SetDataValue method
Sets the value for a data control.

Syntax
Parameter
Description

158

Sub SetDataValue( newValue As Variant )


newValue
The value of the control.
Call SetDataValue( ) to program a general solution to assigning a value to a
data control within the same frame. SetDataValue() simplifies coding by

Actuate Foundation Class Reference

AcControl::SetValue method

providing a way to assign values to controls that work with AcDataControl or


any subclass derived from AcDataControl.

Example

In this example, you see how SetDataValue simplifies the coding required to
set the value of a control. The first code snippet shows how you set the value
of a control in Actuate Basic without using the SetDataValue method:
Dim control As AcControl
Dim textControl As AcTextControl
Dim intControl As AcIntegerControl
Set control = GetControl(Foo)
Set textControl = control
textControl.DataValue = Text Value
Set control = GetControl(Bar)
Set intControl = control
intControl.DataValue = 10

The second code snippet shows you how to use SetDataValue to perform the
same task:
GetControl(Foo).SetDataValue(Text Value)
GetControl(Bar).SetDataValue( 10 )

Using SetDataValue removes the requirement to refer to the specific


subclasses.

See also

AcBaseFrame::GetControl method
AcControl::SetValue method

AcControl::SetValue method
Implements the ValueExp property for a data control.

Syntax
Parameter
Description

Sub SetValue( row As AcDataRow )


row
The current data row.
Override SetValue( ) to implement custom code to assign a value to a data
control. The Factory calls SetValue to assign the expression entered in the
ValueExp property to the data control.
Controls fall into the following three categories, depending on their
relationship to a data row:


Need no data. Some controls, such as graphic images and lines, require no
data from the data row. These controls are called constant controls.

Chapter 3, AFC classes

159

AcControl::SetValue method

Use data from a single row. The most common control is a data control that
displays data from a single data row.

Use data from multiple rows. Some controls summarize data from a set of
rows. These controls are called aggregate controls.

The following table summarizes how SetValue( ) is called.


If the number of rows
the control uses is

SetValue( ) is called

Once with row = Nothing

Once with a single row

n times, each time with a different row

You only override SetValue( ) when you need to take control of the process for
setting values. If you override SetValue( ), you do not need to call
Super::SetValue( ).

160

Actuate Foundation Class Reference

Class AcCurrencyControl

Class AcCurrencyControl
A class you use in the report design to display a currency number.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl
AcDataControl
AcCurrencyControl

Description

Use the currency control to store and display a currency number. While you
can use the double control to display monetary values, the currency control
provides a greater level of precision, that is, the currency type is not subject to
rounding errors.
AcCurrencyControl defines a DateValue variable to store the currency value.
The framework generates SetValue( ) to set the value in DataValue. SetValue( )
uses the value expression you assign to the ValueExp property to generate the
value. Override SetValue( ) if you want to take control of setting the controls
data value.

Variables
Variable

Type

Description

DataValue

Currency

Holds the currency value. The default is Null.

Chapter 3, AFC classes

161

Class AcDataAdapter

Class AcDataAdapter
An abstract base class that defines the logic of classes that form a data stream.
The data stream collects, processes, and delivers data to the report. The parts
of a data stream are called data adapters.
AcComponent
AcDataAdapter

Description

AcDataAdapter is the abstract base class for the two types of data adapter base
classes: AcDataSource and AcDataFilter.
Data sources collect data from an input source, such as a database or a
spreadsheet. Data filters process the collected data. Both work together to
produce and deliver formatted data, called data rows, to the report. You can
limit the number of data rows a data adapter retrieves by using the FetchLimit
property. This feature is useful for testing and debugging report designs,
especially those that generate large numbers of pages.
AcDataAdapter defines the core logic for how data adapters work with
connections and data rows. It also defines the basic algorithms for random
access to data.

Factory protocol
The following table describes AcDataAdapters protocol that defines the tasks
that all data adapters perform.

162

Method

Task

New( )

Initializes the data adapter.

Start( )

Opens the data adapter. For a data source, this method opens
the input source from which data is to be read. For a data
filter, this method opens the input adapter(s). An input
adapter is the data adapter that supplies data rows to the
data filter.

Fetch( )

Reads one row from the data adapter.

Finish( )

Closes the data adapter. For a data source, this method closes
the input source. For a data filter, this method closes the
input adapter(s).

Actuate Foundation Class Reference

Class AcDataAdapter

Subclassing AcDataAdapter
You typically derive from one of AcDataAdapters more specialized
subclasses.

Variables
Variable

Type

Description

FetchLimit

Integer

The number of data rows the data adapter


retrieves.

IsOpen

Boolean

True when the data adapter is open. The IsOpen


variable is set to True in Start( ) and is set to False
in Finish( ). Use IsStarted( ) to obtain the value of
this variable.

Position

Integer

The current input position. Position is set to 1 in


Start( ) and is incremented on each call to
AddRow( ). You must maintain Position in your
other overridden methods. Use GetPosition( ) to
obtain the value of this variable.

Properties
Property

Type

Description

Connection

AcConnection
Structure
Reference

Identifies the connection to use for the


data adapter.

DataRow

AcDataRow
Structure
Reference

Identifies the data row to use with the


data adapter.

FetchLimit

Integer

The number of data rows the data


adapter retrieves. The capability to limit
the number of data rows is useful for
testing and debugging report designs
when you need a small data sample.

Chapter 3, AFC classes

163

Class AcDataAdapter

Methods

164

Method

Type

Description

AddRow( )

N/A

Adds a row to the data adapter.

AddSortKey( )

N/A

Adds a dynamic sort key column.

CanSeek( )

Boolean

Returns True if the data adapter


supports random access.

CanSortDynamically( ) Boolean

Determines if the data adapter


supports dynamic ordering.

CloseConnection( )

N/A

Closes the connection.

Fetch( )

AcDataRow

Reads the row (if any) at the


position identified by
GetPosition( ).

Finish( )

N/A

Closes a data adapter.

FlushBuffer( )

N/A

Flushes all buffered rows.

FlushBufferTo( )

N/A

Flushes all buffered rows up to the


row specified.

GetConnection( )

AcConnection Returns the connection associated


with the data adapter.

GetPosition( )

Integer

Returns the position of the next


row that will be fetched.

IsStarted( )

Boolean

Returns True if the data adapter is


open.

NewConnection( )

AcConnection Instantiates the connection


specified in the data adapters
Connection slot.

NewDataRow( )

AcDataRow

Instantiates a data row based on


the DataRow property.

OpenConnection( )

Boolean

Opens a connection.

Rewind( )

N/A

Moves the fetch position to the


beginning of the input set.

SeekBy( )

N/A

Moves the fetch position by a


given amount relative to the
current position.

SeekTo( )

N/A

Moves the fetch position to a given


location.

SeekToEnd( )

N/A

Moves the fetch position to one


past the end of the input set.

Actuate Foundation Class Reference

AcDataAdapter::AddRow method

See also

Method

Type

Description

SetConnection( )

N/A

Suggests a connection to be used


unless the data adapter already has
its own connection.

Start( )

Boolean

Opens the data adapter.

Class AcDataRow
Class AcDataSource
Class AcMultipleInputFilter
Class AcSingleInputFilter

AcDataAdapter::AddRow method
Adds a row to the data adapter.

Syntax
Parameter
Description

Sub AddRow( row As AcDataRow )


row
The newly created data row.
If you override the Fetch( ) method, call AddRow( ) after you instantiate the
data row and set its variables.
AddRow( ) performs these tasks:

See also

Sets the rows RowNumber variable to the current input position.

Advances the input position.

Calls the OnRead( ) method for the data row so the row can compute its
computed column values.

AcDataAdapter::Fetch method
AcDataRow::OnRead method

AcDataAdapter::AddSortKey method
Adds a dynamic sort key column.

Syntax
Parameter

Sub AddSortKey( keyName As String, sortSense As AcSortSense )


keyName
The name of one of the columns in the SELECT clause.

Chapter 3, AFC classes

165

AcDataAdapter::CanSeek method

sortSense
The direction of the sort. Specify either SortAscending or SortDescending.

Description

Group sections provide the ability to automatically update the ORDER BY


clause of the SELECT statement for a SQL query source to match the sequence
needed by your report. The group sections inform the data source of the
preferred sort order by calling AddSortKey( ) and passing the group sections
Key property value.
If you write code that uses a data source, your custom code can call
AddSortKey( ) to customize the sort order of the data. If you create a custom
data adapter, you can optionally override this method to support custom runtime sorting.
Unless a subclass specifically overrides this method, the base AcDataAdapter
class assumes that dynamic sorting is not supported, and if the application
calls this method, it will raise a run-time error.

See also

AcDataAdapter::CanSortDynamically method

AcDataAdapter::CanSeek method
Determines whether or not the data adapter supports random access to data.

Syntax
Description
Returns

Function CanSeek( ) As Boolean


CanSeek( ) returns False by default. In derived classes, you can override this
method to return True if you want support for random access.
True if the data adapter supports random access.
False if the data adapter does not support random access.

AcDataAdapter::CanSortDynamically method
Determines if the data adapter supports dynamic ordering.

Syntax
Description

Function CanSortDynamically( ) As Boolean


AcDataAdapter assumes that the adapter does not support dynamic sorting,
so by default, CanSortDynamically( ) returns False. If your custom data
adapter supports sorting, you can override this method to return True, and
then override AddSortKey( ) to accept the sort columns.
You should call CanSortDynamically( ) to ensure that a data adapter supports
custom sorting before calling AddSortKey( ).

166

Actuate Foundation Class Reference

AcDataAdapter::CloseConnection method

Returns

True if the data adapter supports dynamic ordering.


False if the data adapter does not support dynamic ordering.

See also

AcDataAdapter::AddSortKey method

AcDataAdapter::CloseConnection method
Closes the connection returned by NewConnection( ).

Syntax
Parameter
Description

See also

Sub CloseConnection( connection As AcConnection)


connection
The connection to close.
If NewConnection( ) returns a local connection, then the data adapter calls
CloseConnection( ) to close the connection. For information about overriding
this method, see AcDataAdapter::OpenConnection method.
AcDataAdapter::GetConnection method
AcDataAdapter::NewConnection method
AcDataAdapter::OpenConnection method
AcDataAdapter::SetConnection method

AcDataAdapter::Fetch method
Reads the row (if any) at the position identified by GetPosition( ).

Syntax
Description

Function Fetch( ) As AcDataRow


Fetch( ) reads one row from the data adapter. Specifically, Fetch( ) reads the
row (if any) at the position identified by GetPosition( ). Fetch( ) then advances
the position by one, unless the current position was past the end of the input
set; in which case, Fetch( ) returns Nothing.
If you create a custom data source or filter, you must override this method to
fetch a row. You must handle repeated calls to Fetch( ), even after Fetch( ) has
reached the end of the input set. Also, your override should call AddRow( )
each time it instantiates a new row.
If you write a custom Fetch( ) method for a data filter, and your Fetch( )
method simply passes along rows created by an input adapter, then you
should not call AddRow( ) because it was already called by the input adapter.
Instead, increment Position directly.

Chapter 3, AFC classes

167

AcDataAdapter::Fetch method

When you override a data adapters Fetch( ) method, the FetchLimit property
value has no effect. You need to write code if you want to limit the number of
data rows to retrieve.

Returns

A reference to the data row fetched.


Nothing if the current position was past the end of the input set.

Example

The following example shows you how to roll up the projected and actual cost
figures for each month, and graph the accumulated results, when the data is
not normalized. To view the code used in this example in a fuller context, open
Actuate6\Erdpro\Examples\Dataxfrm\Budgrpt.rod, highlight the data filter,
SumGraphDataFilter, and examine its Fetch( ) method.
To graph this data, the report must receive the data as one amount per row. For
example, one row for January Budget, one row for January Actual, and so on.
Use a data filter to normalize the data returned from the query.
The following code in the Fetch( ) method of the filter receives a data row from
the data source SqlQuerySource, which contains the database query.
Each time Fetch( ) is called, the data filter splits off another amount field and
returns it to the report. The dollars are accumulated each month. For example,
the budget amount for March shows the sum of January, February, and March
budgets:
Function Fetch( ) As AcDataRow
Dim aFltrDataRow As FilterDataRow
' Get the row returned from the SQL Query
If queryDataRow is Nothing Then
Set queryDataRow = InputAdapter.Fetch()
If queryDataRow Is Nothing Then
Exit Function
End If
dataPointCount = 0
actualTotal = 0.0
planTotal = 0.0
End If
' Run through each of the twelve monthly fields on the query data row and
' return one row for each month/amount combination to the report
Set aFltrDataRow = New FilterDataRow
aFltrDataRow.month = ( dataPointCount \ 2 ) + 1
aFltrDataRow.amountType = dataPointCount MOD 2
'Type of 0 = actual, 1 = plan
dataPointCount = dataPointCount + 1
If dataPointCount = 25 Then

168

Actuate Foundation Class Reference

AcDataAdapter::Fetch method

Exit Function
End If
Select Case dataPointCount
Case 1
aFltrDataRow.amntToGrph = queryDataRow.aJanDollars
Case 2
aFltrDataRow.amntToGrph = queryDataRow.bJanDollars
Case 3
aFltrDataRow.amntToGrph = queryDataRow.aFebDollars
Case 4
aFltrDataRow.amntToGrph = queryDataRow.bFebDollars
Case 5
aFltrDataRow.amntToGrph = queryDataRow.aMarDollars
Case 6
aFltrDataRow.amntToGrph = queryDataRow.bMarDollars
Case 7
aFltrDataRow.amntToGrph = queryDataRow.aAprDollars
Case 8
aFltrDataRow.amntToGrph = queryDataRow.bAprDollars
Case 9
aFltrDataRow.amntToGrph = queryDataRow.aMayDollars
Case 10
aFltrDataRow.amntToGrph = queryDataRow.bMayDollars
Case 11
aFltrDataRow.amntToGrph = queryDataRow.aJunDollars
Case 12
aFltrDataRow.amntToGrph = queryDataRow.bJunDollars
Case 13
aFltrDataRow.amntToGrph = queryDataRow.aJulDollars
Case 14
aFltrDataRow.amntToGrph = queryDataRow.bJulDollars
Case 15
aFltrDataRow.amntToGrph = queryDataRow.aAugDollars
Case 16
aFltrDataRow.amntToGrph = queryDataRow.bAugDollars
Case 17
aFltrDataRow.amntToGrph = queryDataRow.aSepDollars
Case 18
aFltrDataRow.amntToGrph = queryDataRow.bSepDollars
Case 19
aFltrDataRow.amntToGrph = queryDataRow.aOctDollars
Case 20
aFltrDataRow.amntToGrph = queryDataRow.bOctDollars
Case 21
aFltrDataRow.amntToGrph = queryDataRow.aNovDollars
Case 22

Chapter 3, AFC classes

169

AcDataAdapter::Finish method

aFltrDataRow.amntToGrph = queryDataRow.bNovDollars
Case 23
aFltrDataRow.amntToGrph = queryDataRow.aDecDollars
Case 24
aFltrDataRow.amntToGrph = queryDataRow.bDecDollars
End Select
If aFltrDataRow.amountType = 0 Then
aFltrDataRow.amntToGrph = aFltrDataRow.amntToGrph + actualTotal
actualTotal = aFltrDataRow.amntToGrph
Else
aFltrDataRow.amntToGrph = aFltrDataRow.amntToGrph + planTotal
planTotal = aFltrDataRow.amntToGrph
End If
Set Fetch = aFltrDataRow
End Function

AcDataAdapter::Finish method
Closes the data adapter.

Syntax
Description

Sub Finish( )
Finish( ) closes the data adapter. If the data adapter is a data source, Finish( )
closes the input source (which may be a query, a file, and so on). If the data
adapter is a filter, Finish( ) closes each of the input adapters. An input adapter
is the data adapter that supplies data rows to the data filter.
If the connection was created with NewConnection( ), Finish( ) calls
CloseConnection( ) to close the connection.
In derived classes, you can override Finish( ) to do additional work when the
Factory finishes processing the data adapter. Call Super::Finish after your
code.
See AcBaseFrame::GetControl method for an example showing how to use the
Finish( ) method.

See also

170

AcBaseFrame::GetControl method
AcDataAdapter::Start method

Actuate Foundation Class Reference

AcDataAdapter::FlushBuffer method

AcDataAdapter::FlushBuffer method
If the data adapter uses internal buffering to enable random access, this
method flushes all the buffered rows.

Syntax
Description

Sub FlushBuffer( )
Call FlushBuffer( ) to clear the buffer when you no longer need the rows and
need to reclaim memory. FlushBuffer( ) calls FlushBufferTo( ) to actually clear the
buffer. FlushBuffer( ) does nothing if the data source does not use buffering.
After the buffer is flushed, the read position will be set to the first row past
those that were in the buffer.
Derived classes that support buffering should override this method.

See also

AcDataAdapter::FlushBufferTo method
AcMemoryBuffer::FlushBuffer method
AcMemoryBuffer::FlushBufferTo method

AcDataAdapter::FlushBufferTo method
Flushes all buffered rows.

Syntax
Parameter
Description

See also

Sub FlushBufferTo( posn As Integer )


posn
The data row to flush to.
Call FlushBufferTo( ) to clear all rows, up to and including a specified row. If
the data adapter supports buffering and the read position is less than posn, the
current read position is set to posn + 1.
AcDataAdapter::FlushBuffer method
AcMemoryBuffer::FlushBuffer method
AcMemoryBuffer::FlushBufferTo method

AcDataAdapter::GetConnection method
Returns a connection.

Syntax

Function GetConnection( ) As AcConnection

Chapter 3, AFC classes

171

AcDataAdapter::GetPosition method

Description

Returns
See also

Call GetConnection( ) to get the connection associated with the data adapter.
You might need to get a connection if you want to customize the process of
selecting and instantiating a connection. For example, you might call
GetConnection( ) to return the connection, which you then pass as an
argument to SetConnection( ).
A reference to the connection associated with the data adapter.
AcDataAdapter::CloseConnection method
AcDataAdapter::NewConnection method
AcDataAdapter::OpenConnection method
AcDataAdapter::SetConnection method

AcDataAdapter::GetPosition method
Returns the position of the next row that will be fetched.

Syntax
Description

Returns

Function GetPosition( ) As Integer


GetPosition( ) returns the position (starting with 1) of the next row that will be
fetched. The number of rows fetched to date from a sequential source is one
less than GetPosition( ).
The current row number or 1 when the data adapter is first opened.

AcDataAdapter::IsStarted method
Returns True if the adapter is open. False otherwise.

Syntax
Description

Returns

Function IsStarted( ) As Boolean


Returns True if your data adapter was opened by a call to Start( ). Returns
False if the data adapter was never started, or if it was closed by a call to
Finish( ).
The value of the IsOpen variable.

AcDataAdapter::NewConnection method
Instantiates a new connection.

Syntax

172

Function NewConnection( ) As AcConnection

Actuate Foundation Class Reference

AcDataAdapter::NewDataRow method

Description

Returns
See also

NewConnection( ) instantiates the connection class, if any, that you placed in


the Connection slot of the data adapter in the structure pane. You can override
this method to customize the process for selecting a connection. For example,
if your report needs a different connection depending on the data adapter
being used, you would override NewConnection( ) to write the conditional
logic.
The new connection.
AcDataAdapter::CloseConnection method
AcDataAdapter::GetConnection method
AcDataAdapter::OpenConnection method
AcDataAdapter::SetConnection method

AcDataAdapter::NewDataRow method
Instantiates the data row class that appears in the DataRow slot for this
adapter.

Syntax
Description

Function NewDataRow( ) As AcDataRow


NewDataRow( ) instantiates the data row, if any, that you placed in the
DataRow slot of the data adapter in the structure pane. You can override this
method to customize the data row to instantiate.
Fetch( ) calls NewDataRow( ) each time it reads a new data row. If you create a
custom data source and override Fetch( ) to specify how the data source
retrieves data rows, call NewDataRow( ) to instantiate the data row. For an
example of creating a custom data source, see Chapter 6, Customizing
reports, in Programming e.Reports.

Returns

The new data row.

AcDataAdapter::OpenConnection method
Opens the connection returned by NewConnection( ).

Syntax
Parameter
Description

Function OpenConnection( connection As AcConnection ) As Boolean


connection
The connection to open.
If NewConnection( ) returns a local connection, the data adapter calls
OpenConnection( ) to open the connection. You can override this method if
you need to customize the connection before opening it.

Chapter 3, AFC classes

173

AcDataAdapter::Rewind method

For example, suppose you have five data sources in a report. The first and
third data sources use an Oracle connection, and the others use an ODBC
connection. You could place the ODBC connection in the common section,
then create a static variable to hold the Oracle connection. In the data adapters
that work with the Oracle connection, override NewConnection( ) to get the
shared connection, then override OpenConnection( ) and CloseConnection( )
to do nothing (assuming that code elsewhere will handle opening and closing
the Oracle connection).

Returns

True if the connection was opened.


False if the connection was not opened.

Example

The data adapter may choose to set the database or user name based on a
parameter. If so, your overridden method should call any superclass method
and return the value of that method as follows:
Function OpenConnection( connection As AcConnection ) As Boolean
Dim conn As AcODBCConnection
Set conn.DataSource = "testDB"
OpenConnection = Super::OpenConnection( connection)
End Function

Or, you can override this method, along with NewConnection( ) and
CloseConnection( ), to implement a custom scheme for sharing connections.

See also

AcDataAdapter::CloseConnection method
AcDataAdapter::GetConnection method
AcDataAdapter::NewConnection method
AcDataAdapter::SetConnection method

AcDataAdapter::Rewind method
Moves the fetch position to position one.

Syntax
Description

Sub Rewind( )
Moves the current input position to the beginning of the input set. This
method is equivalent to:
SeekTo( 1 )

174

Actuate Foundation Class Reference

AcDataAdapter::SeekBy method

AcDataAdapter::SeekBy method
Moves the fetch position by a given amount, relative to the current position.

Syntax
Parameter
Description

Sub SeekBy( offset As Integer )


offset
The number of rows, relative to the current position, to move.
Moves the current input position by a relative amount. If you specify an offset
of 0, then the position does not move. Negative offsets move the position
toward the beginning of the input set, positive offsets move the position
toward the end of the input set. This method works just like SeekTo( ). It is
equivalent to:
SeekTo( GetPosition( ) + offset )

Derived classes need not override this method. They should override SeekTo( )
instead.

AcDataAdapter::SeekTo method
Moves the fetch position to a given location.

Syntax
Parameter
Description

Sub SeekTo( posn As Integer )


posn
The position from which to read on the next Fetch( ).
Moves the current input position to the position specified. Position is relative
to the beginning of the input set; the first row is position one. If you specify a
position less than one, then the data adapter will use position one instead.
Similarly, if you seek a position past the end of the input set, the position will
be set to one past the end of the file.
After a call to SeekTo( ), the next call to GetPosition( ) will return the position
that you specified, subject to the above constraints. Similarly, the next call to
Fetch( ) will return the row (if any) to the position you specify.
This method is available only in data adapters that support random access. If
the adapter provides only sequential access, then this method will raise a runtime error.
Derived classes that support random access must override this method.

Chapter 3, AFC classes

175

AcDataAdapter::SeekToEnd method

AcDataAdapter::SeekToEnd method
Moves the fetch position to one past the end of the input set.

Syntax
Description

Sub SeekToEnd( )
Reads rows from the current position to the end of the input set. This method
is equivalent to calling Fetch( ) in a loop until Fetch( ) returns Nothing.
After a call to SeekToEnd( ), GetPosition( ) returns one greater than the
number of rows in the input set.
Derived classes need not override this method.

AcDataAdapter::SetConnection method
Sets a connection for the data adapter.

Syntax
Description

See also

Sub SetConnection( theConnection As AcConnection )


Call SetConnection( ) to specify a connection to use. The connection must
already be open, and you must call SetConnection( ) before calling Start( ).
Any connection returned by NewConnection( ), however, has precedence.
AcDataAdapter::CloseConnection method
AcDataAdapter::GetConnection method
AcDataAdapter::NewConnection method
AcDataAdapter::OpenConnection method

AcDataAdapter::Start method
Opens the data adapter.

Syntax
Description

Function Start( ) As Boolean


For a data source, Start( ) opens the input source from which data is to be read.
For a data filter, Start( ) opens the input adapter(s), the data adapter that
supplies data rows to the data filter.
Start( ) also calls NewConnection( ) to instantiate the connection. If
NewConnection( ) returns a connection, then Start( ) calls OpenConnection( )
to open the connection.

176

Actuate Foundation Class Reference

AcDataAdapter::Start method

You can override Start( ) to add additional startup code for your class. You
should, however, call the superclass method first, then continue with your
own initialization only if the superclass method returns True:
Function Start( ) As Boolean
Start = Super::Start( )
If Not Start Then
Exit Function
End If
' Custom startup code
End Function

Returns

True if the data adapter is opened.


False otherwise.

See also

AcDataAdapter::Finish method

Chapter 3, AFC classes

177

Class AcDatabaseSource

Class AcDatabaseSource
An abstract base class for data sources that retrieve data from databases.
AcComponent
AcDataAdapter
AcDataSource
AcDatabaseSource

Description

AcDatabaseSource is an abstract base class that provides the standard logic for
retrieving rows from a relational database cursor. It defines the methods for
binding parameters to the database statement, opening the cursor, binding the
data row to the cursor, retrieving rows from the cursor, and closing the cursor.

Subclassing AcDatabaseSource
Derive directly from AcDatabaseSource to create a data source that reads from
a stored procedure or from a SELECT statement that you provide. Usually,
however, you create a subclass of AcSqlQuerySource and use the Query Editor
to build your SELECT statement.
If you derive from AcDatabaseSource, you must do the following:


Override the Start( ) method to create a SQL statement.

Override BindDataRow( ) method to bind your data row to the cursor.

Methods

178

Method

Type

Description

BindDataRow( )

N/A

Binds the data row to the


cursor.

BindStaticParameters( ) N/A

Binds parameters to a
statement.

GetCursor( )

Gets the database cursor object


associated with this data
source.

AcDBCursor

Actuate Foundation Class Reference

AcDatabaseSource::BindDataRow method

See also

Method

Type

Description

GetDBConnection( )

AcDBConnection Gets the database connection


against which this data source
will run.

OpenCursor( )

N/A

Opens a cursor on a statement.

Class AcDataAdapter
Class AcDataRow
Class AcDataSource
Class AcSqlQuerySource

AcDatabaseSource::BindDataRow method
Binds the data row to the cursor.

Syntax
Parameter
Description

Sub BindDataRow( cursor As AcDBCursor )


cursor
The cursor to which to bind the data row.
If you subclass AcDatabaseSource, you must override the BindDataRow( )
method to set up the binding between the row fetched by the cursor and the
data row class that your subclass instantiates.
The following figure shows the binding relationship between columns in the
row returned by the cursor and variables in the data row you defined.
Row returned by the
SELECT statement
Columns

Variables
Data row

Example

The following example shows how to set up a SQL query, define a data row,
and bind the row fetched by the cursor to the data row:


Override the Start method on the data stream component to define your
SQL SELECT statement:
Function Start( ) As Boolean
Start = Super::Start( )
Dim selectClause As String
Dim fromClause As String

Chapter 3, AFC classes

179

AcDatabaseSource::BindStaticParameters method

Dim whereClause As String


Dim aStmt As String
' prepare the text for the query statement
selectClause = "SELECT DISTINCT salesreps.last, salesreps.first,
orders.orderID"
fromClause = " FROM customers, orders, salesreps"
whereClause = " WHERE salesreps.repID = customers.repID AND
orders.custID = customers.custID"
aStmt = selectClause & fromClause & whereClause
' open a cursor for the above query statement
OpenCursor( aStmt )
End Function

Subclass AcDataRow to create a data row by programming in Actuate


Basic or using e.Report Designer Professional features:
Class fSqlDataRow Subclass of AcDataRow
Dim Salesreps_first As String
Dim Salesreps_last As String
Dim orders_orderID As Integer
End Class

Override BindDataRow to bind the row fetched by the cursor and your
data row subclass
Sub BindDataRow( cursor As AcDBCursor )
' BindColumn has three arguments:
' 1. position of the column in the select statement
' 2. name of the datarow that will be used to hold data
' 3. name of the variable in the datarow that will be used to hold data
' BindColumn statement needs to be repeated for each column in the
' select statement
cursor.BindColumn( 1, "fSqlApp::fSqlDataRow", "salesreps_last" )
cursor.BindColumn( 2, "fSqlApp::fSqlDataRow", "salesreps_first" )
cursor.BindColumn( 3, "fSqlApp::fSqlDataRow", "orders_orderID" )
End Sub

AcDatabaseSource::BindStaticParameters method
Binds the static parameters, if any, to a cursor for the statement.

Syntax
Parameter

180

Sub BindStaticParameters( cursor As AcDBCursor )


cursor
The cursor to which to bind the parameters.

Actuate Foundation Class Reference

AcDatabaseSource::GetCursor method

Description

Example

The OpenCursor( ) method of AcDatabaseSource calls BindStaticParameters( )


to bind parameters, if any, to the cursor for a SQL statement. You must
override this method if your SQL statement uses parameters.
The following example shows how to:


Code a SELECT statement that uses a parameter

Override BindStaticParameters( ) to bind the parameter to the statements


cursor:
' SELECT statement
SELECT fname, lname FROM Customers WHERE Customer.State = ?
' BindStaticParameters( ) code
Sub BindStaticParameters( cursor As AcDBCursor )
cursor.BindParameter( 1, "CA" )
EndSub

AcDatabaseSource::GetCursor method
Returns the database cursor associated with the data source.

Syntax
Description

Function GetCursor( ) As AcDBCursor


Call GetCursor( ) to return the database cursor from which the data source will
fetch rows. The cursor is available after the Start( ) method calls
OpenCursor( ).
To get the associated database statement, call GetStatement( ) from the cursor.

Returns
See also

The database cursor.


AcDBCursor::GetStatement method

AcDatabaseSource::GetDBConnection method
Returns the database connection associated with the data source.

Syntax
Description

Function GetDBConnection( ) As AcDBConnection


Call GetDBConnection( ) to return the database connection associated with the
data source. This method is equivalent to GetConnection( ), except the type of
the returned connection is the more derived AcDBConnection class. You can
use this connection, for example, to raise an error if a database error occurs.

Chapter 3, AFC classes

181

AcDatabaseSource::OpenCursor method

Returns
See also

The database connection.


AcDataAdapter::GetConnection method
Class AcDBConnection

AcDatabaseSource::OpenCursor method
Opens the database cursor.

Syntax
Description

Sub OpenCursor( stmt As String )


The OpenCursor( ) method is a helper method called by your implementation
of Start( ). Your Start( ) method must create the SQL statement. Start( ) then
calls OpenCursor( ) to prepare the statement, bind the parameters, allocate
and open a cursor, and bind the data row to the cursor.
OpenCursor( ) calls BindStaticParameters( ) to bind static parameters to the
statement. If your SQL statement already has parameters, you must override
BindStaticParameters( ). OpenCursor( ) also calls BindDataRow( ), which you
must override to bind the data row to the cursor.

See also

182

AcDatabaseSource::BindDataRow method
AcDatabaseSource::BindStaticParameters method

Actuate Foundation Class Reference

Class AcDataControl

Class AcDataControl
The base class for controls that display data from data rows.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl
AcDataControl

Description

AcDataControl defines the logic for setting the values of data controls, which
display data obtained from the input source. Each data control displays one
piece of data, such as a name, a date, a quantity, or a total. To specify what data
a data control should display, you assign a value expression to the controls
ValueExp property. If you leave this property blank, the default value of the
data control is Null. For information about specifying value expressions, see
Developing Advanced e.Reports.
Actuate provides a different type of data control for each data type:
AcTextControl to display string data, AcIntegerControl to display numeric
data, AcCurrencyControl to display currency data, AcDoubleControl to
display double precision floating-point numbers, and AcDateTimeControl to
display dates. These specialized classes derive from AcDataControl. You
derive a new control from one of the specialized subclasses of AcDataControl.
Do not derive directly from AcDataControl.

Building the control without a data row


The controls Build( ) method is called (instead of the BuildFromRow( )
method) by the Build( ) method of the frame that contains the control. The
frames Build( ) method is called when the frame is placed in a slot where it
does not receive any data rows. For information on when the framework calls
a frames Build( ) method, see AcBaseFrame::Build method.
Build( ) sets the value of a control with data from a source other than a data
row. The value could be from an Actuate function call, a method call, a
variable, or a constant. By default, Build( ) calls SetValue( ) to set the value of
the control.

Chapter 3, AFC classes

183

Class AcDataControl

You can override the data controls Finish( ) method to perform custom
processing, such as changing the value or property of the control depending
on a condition.
In the following example, a text controls Finish( ) method is overridden to
change the controls data value to a different string and its display text to a
different color when Date$( ) returns 04-15-2010. Date$( ) was assigned to
the controls ValueExp property at design time:
Sub Finish( )
Super::Finish( )
If DataValue = "04-15-2010" Then
DataValue = "Tax day"
Font.Color = Red
End If
End Sub

Building the control from the data row


BuildFromRow( ) sets the value of a control, using data from a data row. A
controls BuildFromRow( ) method is called by the enclosing frames
BuildFromRow( ) method.
Controls fall into the following three categories, depending on their
relationship to a data row:


Need no data. Some controls, such as graphic images and lines, require no
data from the data row. These controls are called constant controls.

Use data from a single row. The most common control is a data control that
displays data from a single data row.

Use data from multiple rows. Some controls summarize data from a set of
rows. These controls are called aggregate controls.

The BuildFromRow( ) method provides a general mechanism for handling all


three of these cases. If the control does not need the data row,
BuildFromRow( ) returns Finished Building. If the control uses a single row,
BuildFromRow( ) sets the controls value and returns Finished Building. If the
control uses multiple rows, BuildFromRow( ) returns Continue Building.
You can override a controls Finish( ) method if you want to perform custom
processing, such as changing the value or property of the control depending
on a condition.

Controls that use a single data row


If a control uses a single data row, BuildFromRow( ) performs the following
tasks:

184

Actuate Foundation Class Reference

Class AcDataControl

1 On the first row, BuildFromRow( ) calls SetValue( ) to set the value of the
control (if any).
2 BuildFromRow( ) calls SetTocEntry( ) to set the Table of Contents entry for
the control.
3 BuildFromRow( ) calls OnRow( ), which you can override to do additional
processing on the row.
4 BuildFromRow( ) returns Finished Building.
Controls that need no data rows work as if they need only one row: They
simply ignore the row. In this case, SetValue( ) does nothing.

Controls that use multiple data rows


Aggregate controls work with any number of rows and summarize data from
those rows. For example, an aggregate control might show the minimum,
maximum, sum, or average of a group of sales records. In this case,
BuildFromRow( ) processes rows a bit differently than in the single row case.
On the first row, BuildFromRow( ) calls SetTocEntry( ) to set the Table of
Contents entry. For all rows, BuildFromRow( ) calls both SetValue( ) and
OnRow( ). For aggregate controls, BuildFromRow( ) always returns Continue
Building.
The IsSummary( ) method is the key to determining if the control processes a
single row or multiple rows. If IsSummary( ) returns True, then the control
processes multiple rows. The Design Editor generates IsSummary( ) based on
the value you enter in the ValueExp property for a control.
In the following example, an integer controls Finish( ) method is overridden
so that the data value is displayed in green when it is greater than 20:
Sub Finish
Super::Finish
If DataValue > 20 Then
Font.Color = green
End If
End Sub

Factory protocol
The protocol for AcDataControl is the same as AcControls, except that it adds
the capability to set the value of a control.
Method

Task

New( )

Initializes the control.

Start( )

Initializes the control.

Chapter 3, AFC classes

185

Class AcDataControl

Method

Task

SetValue( )

Called by BuildFromRow( ) to set the value of the


control, usually from the expression entered into
the ValueExp property in the Component Editor.

OnRow( )

Called by BuildFromRow( ) to let the control do


additional, row-specific processing.

SetTocEntry( )

Called by BuildFromRow( ) on the first data row to


set the Table of Contents entry for the control from
that data row.

Properties
Property

Type

Description

SampleValue

String

A sample value to display in the


control in the Design Editor. Ignored
in the Factory.

ValueExp

Expression

An expression that specifies the value


of the control.

ValueType

AcControl
ValueType

Determines when the value of the


control is built.

Methods

See also

186

Method

Type

Description

Format( )

String

Returns the format pattern used to


display the control.

GetGroupKey( )

Variant

Returns the group key for the group


section that contains the control (if any.)

IsSummary( )

Boolean

Determines whether the control is an


aggregate control.

SetTocEntry( )

N/A

Sets the Table of Contents entry value for


the control.

Class AcControl
Class AcCurrencyControl
Class AcDateTimeControl
Class AcDoubleControl
Class AcIntegerControl
Class AcTextControl
Class AcTextualControl

Actuate Foundation Class Reference

AcDataControl::Format method

AcDataControl::Format method
Returns the format pattern specified in the controls Format property.

Syntax
Description

Function Format( ) As String


The framework calls Format( ) to return the format pattern specified in the
controls Format property. The Format property accepts any of the format
patterns available to the Actuate Basic Format$ function.
Format( ) returns the format pattern as a string. For example, if you specified
(@@@) @@@-@@@@ as the format pattern for a text control that displays
telephone numbers, Format( ) returns (@@@) @@@-@@@@ as a string. This
return value is used by GetText( ) to format the controls value for display.

Returns
See also

The format pattern used to format the controls value.


AcControl::GetText method

AcDataControl::GetGroupKey method
Returns the key for the group section, if any, that contains the control.

Syntax
Description

Returns

Function GetGroupKey( ) As Variant


Call GetGroupKey to retrieve the group key for the group section that contains
the control:


If the GroupOn property is set to GroupOnEachValue (the default),


GetGroupKey returns the value of the column key.

If the GroupOn property is set to GroupOnCustom, GetGroupKey returns


the group key set by the GetKeyValue method.

For all other values of GroupOn, GetGroupKey returns the first value in the
range of values for the key. For example, if GroupOn is set to
GroupOnYear, GetGroupKey returns values such as 1/1/99, 1/1/2000.

The group key.


Nothing if there is no group section.

Chapter 3, AFC classes

187

AcDataControl::IsSummary method

AcDataControl::IsSummary method
Determines whether the control is an aggregate control.

Syntax
Description

Function IsSummary( ) As Boolean


IsSummary( ) determines whether the control is an aggregate. Actuate
automatically generates IsSummary( ) based on the value of the ValueExp
property. If you enter nothing for ValueExp, this method returns False. It also
returns False if you enter an expression that does not return aggregates.
If you choose to override SetValue( ) to do custom calculations, you should
also override IsSummary( ) to return True if you want to compute an
aggregate.

Returns

True if the control is an aggregate control.


False if the control is not an aggregate control.

AcDataControl::SetTocEntry method
Sets the Table of Contents entry value for a control.

Syntax
Parameter
Description

Sub SetTocEntry( row As AcDataRow )


row
The row to use in setting the Table of Contents entry.
SetTocEntry( ) is called by BuildFromRow( ) to set the Table of Contents entry
value for a control. This entry appears in the Table of Contents in the Viewer if
you choose to include the control in the Table of Contents. By default,
SetTocEntry( ) uses the value assigned to the controls TocValueExp property.
Generally, you do not need to override this method. You can override it if you
want to perform custom calculations to obtain the TOC entry value.

188

Actuate Foundation Class Reference

Class AcDataFilter

Class AcDataFilter
The abstract base class for all data filter classes.
AcComponent
AcDataAdapter
AcDataFilter

Description

AcDataFilter is the base class for the two general types of data filter classes:
AcSingleInputFilter and AcMultipleInputFilter. A single-input filter accepts
input from one data adapter, processes the data, then passes it to the next data
adapter or the report section. A multiple-input filter performs the same tasks,
but accepts input from any number of data adapters.

Subclassing AcDataFilter
You generally do not derive directly from AcDataFilter. To customize a data
filter, you typically use one of the data filters derived from AcDataFilter, and
override the Fetch( ) method to implement the filtering algorithm.

See also

Class AcDataAdapter
Class AcMultipleInputFilter
Class AcSingleInputFilter

Chapter 3, AFC classes

189

Class AcDataFrame

Class AcDataFrame
An abstract base class that defines the logic for how frames work with data
rows.
AcComponent
AcReportComponent
AcVisualComponent
AcBaseFrame
AcDataFrame

Description

AcDataFrame provides the mechanism for building a frames contents with


values from a data row. These services include passing a data row to each of its
contents and accumulating aggregates.

Building a frame
The framework calls BuildFromRow( ) to set the data values of controls within
a frame with values from a data row. The frames BuildFromRow( ) calls
BuildFromRow( ) for each of the frames contents to set the values.
The return value of BuildFromRow( ) indicates whether the frame processed
the row. The frames BuildFromRow( ) method determines its return value
based on the return values of each contents BuildFromRow( ) method. The
frame uses this return value to decide whether to continue passing rows to its
contents, or whether to instantiate a new frame to process a row.
Frames can process either a single row, or an unlimited set of rows:


If the frame processes only a single row, then BuildFromRow( ) returns


Finished Building after the frames contents have set their values. This
return value indicates to the frames container that it should instantiate a
new frame to process the next data row.

If a frame processes multiple rows (perhaps because it contains a graph),


then BuildFromRow( ) always returns Continue Building. This return value
indicates to the frames container that it should send all the data rows it
gets.

If any one of the frames contents returns Continue Building, the frames
BuildFromRow( ) method returns Continue Building. This process allows you
to mix, for example, a line control (which requires no rows), a text control
(which requires one row), and a graph (which processes multiple rows) within

190

Actuate Foundation Class Reference

Class AcDataFrame

a single frame. The controls that process only one row will process only the
first row and will ignore all subsequent rows.
You can override a frames BuildFromRow( ) method to perform custom
processing, such as conditionally accepting rows or accepting a limited
number of rows.

Subclassing AcDataFrame
You generally do not create a subclass of AcDataFrame unless you want to
change the way frames build their contents.

Chapter 3, AFC classes

191

Class AcDataRow

Class AcDataRow
A class that defines the characteristics of a data row. A data row is a record
structure that contains data from a single input record, processed into a format
that the report accepts. Typically, each variable in a data row corresponds to a
single column (field) of a record.
AcComponent
AcDataRow

Description

AcDataRow works with data adapter classes (AcDataSource,


AcSingleInputFilter, and AcMultipleInputFilter) to produce formatted data for
the report. The data source retrieves data from an input source (database,
spreadsheet, or another source) and creates an instance of a subclass of
AcDataRow for each record. The data filter filters and sorts the data as needed.
The following figure gives a high-level view of how the data from an input
source is processed into data rows and sent to the report. Note that data filters
are optional, and you may use multiple data filters.

Data
Input Source

Data source

Data filter

Data row 1

Report section

Data row 2

Data stream

If you use the Query Editor to build a SQL query, Actuate creates the data row.
If you create a custom data source or a custom data filter, you must create a
custom data row that works with the data source or filter.
Data rows are transient. They are created in the Factory, passed to the report,
and then deleted.

Subclassing AcDataRow
You must create a subclass of AcDataRow when you create a custom data
source or filter.

192

Actuate Foundation Class Reference

Class AcDataRow

How to derive from AcDataRow


To derive a subclass from AcDataRow, do the following:
1 Add the variables that represent the fields of the data row.
2 Override the OnRead( ) method if you need to compute some of the
variable values based on the input fields.
This is an example of a derived AcDataRow class that defines the variables to
hold the result of a query that returns four columns:
Class AccountSummary Subclass of AcDataRow
Dim AccountName As String
Dim Address As String
Dim CreditLimit As Currency
Dim DueDate As Date
End Class

Working with columns stored in a data row


Conceptually, data rows are composed of columns. Actuate provides several
options for defining columns:


A data row variable

A table.column alias for a data row variable

A function

A member of a class or structure member variable

A variable index

Actuate provides two methods, GetValue and SetValue, to help you work with
columns stored in a data row. GetValue retrieves the value of a column stored
within a data row. SetValue updates the value of a column stored within a data
row. Using GetValue and SetValue simplifies programming by reducing the
need to set up object reference variables for the data row columns that you
need to retrieve or update. See the description of AcDataRow::GetValue
method for examples of using the various options for defining columns.

Variables
Variable

Type

Description

RowNumber

Integer

The number of this row, starting with 1,


within the data source.

Chapter 3, AFC classes

193

AcDataRow::GetValue method

Methods

See also

Method

Type

Description

GetValue( )

Variant

Gets the value of the specified column


or variable.

OnRead( )

N/A

Called after the associated data adapter


has written its output to the data row.

SetValue( )

Boolean

Sets the value of the specified column or


variable.

Class AcDataAdapter
Class AcDataSource
Class AcReportComponent

AcDataRow::GetValue method
Returns the value of the specified column or variable.

Syntax
Parameter

Function GetValue( colName As String ) As Variant


colName
The column or variable name with the value to return.
Function GetValue( index As Integer ) As Variant
index
The index of the variable with the value to return.

Description

Use GetValue( ) to access the value of a column or variable within your data
row. There are five types of parameters you can use to pass the column name:


Data row variables

Database column aliases

Functions

Structures or objects

Variable index

Using data row variables


The simplest approach is to use GetValue( ) to refer to a data row variable. If
you create your data row by hand, then you can use GetValue( ) to look up the
value of a variable.

194

Actuate Foundation Class Reference

AcDataRow::GetValue method

The example below shows you how to get the account name from a data row
variable named AccountName in the AccountSummary data row:
Sub AccountInfo( row As AcDataRow )
DataValue = row.GetValue( "AccountName" )
End Sub

Using database column aliases


When you use the Actuate Query Editor to build a query data stream, Actuate
automatically builds a data row for you. Actuate also sets up a mapping from
database table.column names to data row variables. You can then pass one of
these database names to GetValue( ) to obtain the value of the corresponding
data row variable. This feature of GetValue( ) enables dynamic binding; the
ability to work with a row at run time, even if you do not know the exact data
type of the row. To write code that operates independently of the data row
structure, use table.column names to refer to columns.
The example below shows how to retrieve a customer name derived from the
Name column of the Customer table:
Sub AccountInfo( row As AcDataRow )
DataValue = row.GetValue( "Customer.Name" )
End Sub

Using functions
Sometimes you need to create a set of computations on columns. For example,
if you have a data row for a customer invoice, you might want to know how
much of the total amount of that invoice is not yet due, is now due, or is 30, 60,
or 90+ days past due. You could create a set of variables to hold these amounts,
but it would be much easier to simply provide a set of methods that perform
the calculation as needed. For example:
Function Amount30DaysLate( ) As Currency
If DueDate + 30 <= Date( ) And Date( ) < DueDate + 60 Then
Amount30DaysLate = InvoiceAmount
Else
Amount30DaysLate = 0.0
End If
End Function

You can reference such functions using square bracket notation in value
expressions for controls in the Design Editor, or by using the GetValue( )
method. You can create functions that act like data row columns. These
functions must follow these restrictions:


Return a value consistent with GetValue( ) return values

Accept no arguments

Chapter 3, AFC classes

195

AcDataRow::GetValue method

For example, the following example lets you access the Amount30DaysLate( )
method:
[Amount30DaysLate]
row.GetValue( "Amount30DaysLate" )

Using structures and objects


You can use square bracket notation in a value expression or GetValue( ) in
code to access members of structures or objects nested inside the data row.
Suppose that your data row contains an AddressStruct structure that contains
FullName, Street, City, State, and Zip variables as follows:
Type AddressStruct
FullName As String
Street As String
City As String
State As String
Zip As String
End Type

Also, suppose that your customer data row has a variable called Address that
is defined to be of type AddressStruct. You can access members of that
structure with dot notation as follows:
[Address.FullName]
[Address.Street]
...
row.GetValue( "Address.FullName" )
row.GetValue( "Address.Street" )
...

Similarly, if your data row contains an object reference variable to another


object, you can access members of that other object using the same dot syntax.
You can still convert the AcDataRow variable to point to your particular data
row class, then access the variable directly:
Sub AccountInfo( row As AcDataRow )
Dim accRow As AccountSummary
DataValue = acctRow.AccountName
End Sub

If you access the data row variable directly, then your control will work with
only one specific kind of data row. That is why the preferred way to access
data in a data row is through the GetValue( ) method. Then your code will
work with any data row as long as that row has the correct column or variable
name.

196

Actuate Foundation Class Reference

AcDataRow::OnRead method

Using a variable index


You can use a variable index to access data row variables. For example, if you
need to iterate over variables contained in a data row, you can access the value
of any data row variable by using an index corresponding to the variables
position in the data row. The following code sample uses a variable index to
access the values of data row variables. The Actuate Basic function,
GetVariableCount, returns the total number of variables in the data row:
Sub AccountInfo( row As AcDataRow )
Dim accRow As AccountSummary
Dim colIndex As Integer
Dim DataValue As Variant
...
For colIndex = 1 to GetVariableCount( row )
...
DataValue = acctRow.GetValue( colIndex )
...
Next
...
End Sub

Order of evaluation
Usually the name you provide to GetValue( ) uniquely identifies one column
alias (table.column name), variable, function, structure, or object. However, if
you have both a column alias and a variable or function or structure or object
with the same name, Actuate uses the column alias.

Returns
See also

The value of the given column or variable.


AcDataRow::SetValue method

AcDataRow::OnRead method
Called by the data adapter after it creates the data row and sets the data row
values.

Syntax

Sub OnRead( )

Description

You can override OnRead( ) to manipulate variables in a data row, for


example, to set a calculated variable based on other variables in the data row.

Example

In the following example, the data rows OnRead( ) method is overridden to


calculate a value for the ExtendedCost variable. This value is computed from
values in two other variablesCost and Quantityin the data row:

Chapter 3, AFC classes

197

AcDataRow::SetValue method

Sub OnRead( )
Super::OnRead( )
ExtendedCost = Cost * Quantity
End Sub

AcDataRow::SetValue method
Sets the value of the specified column or variable.

Syntax
Parameter

Function SetValue( colName As Any, value As Any) As Boolean


colName
The column or variable name with the value to set.
value
The data value for the column or variable. The data type for the parameter,
value, must be the same or it must be possible to convert it to the same data
type as colName.
Function SetValue( index As Integer, value As Any) As Boolean
index
The index of the variable with the value to set.

Description
Returns

Use the SetValue( ) method to assign values to variables in your data row.
True if the value is set.
False if the value cannot be set because the data type for the value is not the
same or it is not possible to convert it to the same data type as colName.

See also

198

AcDataRow::GetValue method

Actuate Foundation Class Reference

Class AcDataSection

Class AcDataSection
An abstract base class that defines the logic sections use to process a group of
data rows.
AcComponent
AcReportComponent
AcSection
AcDataSection

Description

A data section processes a group of data rows. AcDataSection is the base class
for the two types of data sections: AcReportSection and AcGroupSection.
A report section defines a group as the entire set of data rows read from a data
stream. A group section defines a group as the set of data rows that have the
same key value, for example, all data rows with a state field value of CA.
Functionally, the following is the difference between a report section and a
group section:


A report section opens a data stream and retrieves data rows from it.

A group section relies on another component to provide it with data rows.

Both types of data sections can represent HTML tables.


Both types of data sections process groups of data rows the same way. The
processing involves the five component references that AcDataSection defines.

Chapter 3, AFC classes

199

Class AcDataSection

The following table describes how the data section processes rows for
components in these component references.
Component
reference

Description

Process

PageHeader Contains a frame that


appears at the top of each
page, except the first.

The data section keeps track of


the page and flow start and end
events to build the page header
frame. The data section passes
the current row to the page
header frame when the frame is
built.

Before

Contains a frame that


appears before the first
row in a group.

The data sections Start( ) method


instantiates the Before frame. The
Before frames BuildFromRow( )
method is called to process each
row the section processes. The
data section finishes the Before
frame after the frame processes
the last row in the group.

Content

Contains a component (a
section or a frame) that
processes each data row
in a group.

The data section instantiates the


content component when it
processes the first row. The
components BuildFromRow( )
method is called to process each
row until it returns Finished
Building.

After

Contains a frame that


appears after the last row
in a group.

The data sections Start( ) method


instantiates the After frame. The
After frames BuildFromRow( )
method is called to process each
row the section processes. The
data section finishes the After
frame after the frame processes
the last row in the group.

PageFooter

Contains a frame that


appears at the bottom of
each page, except the last.

The data section keeps track of


the page and flow start and end
events to build the page footer
frame. The data section passes
the current row to the page footer
frame when the frame is built.

The processes described in the previous table explain the process when a data
section uses running (or one-pass) aggregates, for example, an After frame that

200

Actuate Foundation Class Reference

Class AcDataSection

calculates the total orders for a group of rows. The process changes if the
section uses lookahead (or two-pass) aggregates, for example, an After frame
that calculates the order value for a group or rows as a percentage of all totals,
across all groups. In this case, the data section has to process the data rows
twice (hence, the term two-pass), the first pass to calculate the aggregates, and
the second pass to actually build the contents as described in the table.

Subclassing AcDataSection
You do not subclass AcDataSection.

Variables
Variable

Type

Description

ContiguousPageFooter

Boolean

Determines if the page footer appears


directly under the last frame on the
page or at the bottom of the page.

FillRows

Boolean

If true, AFC creates empty cells for any


HTML table cell that contains data.

ShowFooterOnLast

Boolean

Determines if the page footer appears


on the last page. By default, the page
footer appears on every page except the
last.

ShowHeaderOnFirst

AcPage
Header
Options

Determines if the page header appears


on the first page. By default, the page
header appears on every page except
the first.

Properties
Property

Type

Description

After

AcReport
Component
Structure
Reference

The component that appears after


the last row in a group.

Before

AcReport
Component
Structure
Reference

The component that appears


before the first row in a group.

BorderColor

AcColor

The color of the main portion of


the HTML table border.

Chapter 3, AFC classes

201

Class AcDataSection

202

Property

Type

Description

BorderLightColor

AcColor

The color of the highlighted


portion of the HTML table border.
Not supported by Netscape.

BorderDarkColor

AcColor

The color of the shadow portion of


the HTML table border. Not
supported by Netscape.

BorderLineWidth

Integer

The width, in pixels, of the border


around the HTML table, and the
lines between cells in the table. A
value of 0 means no border. If your
browser does not support table
borders or provides only fixed size
borders, it ignores this value.

CellPadding

Integer

The number of pixels between the


content of an HTML table cell and
the border of the cell.

CellSpacing

Integer

The number of pixels between


adjacent HTML table cells.

Content

AcReport
Component
Structure
Reference

The component that processes


each row in a group.

ContiguousPage
Footer

Boolean
Variable

Determines if the page footer


appears directly under the last
frame on the page or at the bottom
of the page.

FixedColumnWidths Boolean

Determines if the HTML table


column widths are set by the AFC
or by the web browser.

Margin

AcSize

The number of pixels to insert


between the HTML table and
surrounding text.

PageBreakBetween

Boolean
Function

Determines if the section should


start each content (except page
headers and footers) at the top of a
new page.

PageHeader

AcFrame
Structure
Reference

The component that appears at the


top of each page.

Actuate Foundation Class Reference

Class AcDataSection

Property

Type

Description

PageFooter

AcFrame
Structure
Reference

The component that appears at the


bottom of each page.

ShowFooterOnLast

Boolean
Variable

Determines if the page footer


appears on the last page. By
default, the page footer appears on
every page except the last.

ShowHeaderOnFirst

AcPageHeader
Options

Determines if the page header


appears on the first page:
 AsColumnHeader - the
column headers appear
after the Before frame and
just before the first set of
columns.
 AsPageHeader - the page
header appears before the
Before frame.
 NoHeaderOnFirst - the
page header does not
appear on the first page.
The default is NoHeaderOnFirst.

TableAlignment

AcHtml
Horizontal
Alignment

The horizontal alignment of the


HTML table within the browser
window. Options are left, center, or
right alignment. Right alignment
is an extension on top of the usual
HTML options.

TableColor

AcColor

The background color of all cells in


the HTML table. The default is
TransparentColor, which is the
same color as the overall HTML
document. You can override this
color for each row or each cell.

TableStyle

AcHtml
TableStyle

Specifies how to create a table in


an HTML report:
 HtmlAutomaticTablelet AFC
decide
 HtmlNotTabledo not create a
table for the section
 HtmlCreateTablecreate a
table for the section

Chapter 3, AFC classes

203

Class AcDataSection

Property

Type

Description

TableWidth

Integer

The width of the HTML table in


pixels or as a percentage of the
width of the browser window. A
value of 0 means the browser will
determine the table width at view
time.

TableWidthUnits

AcHtml
Units

Specifies if the HTML table width


should be in pixels or as a
percentage of browser window
width.

Considerations for HTML reports


HTML documents are all one long page. HTML does not support the concept
of page breaks. Therefore, properties that control pagination in Actuate reports
are ignored when generating HTML for a report. For this class, the specific
properties ignored by HTML reports are:


PageHeader

PageFooter

ShowHeaderOnFirst

ShowHeaderOnLast

PageBreakBetween

Methods

204

Method

Type

Description

GetAfter( )

AcReport
Component

Returns the After component, if


any, for this section.

GetBefore( )

AcReport
Component

Returns the Before component,


if any, for this section.

GetFirstPageFooter( )

AcBaseFrame

Returns the first page footer, if


any.

GetFirstPageHeader( )

AcBaseFrame

Returns the first page header, if


any.

GetPageFooter( )

AcBaseFrame

Returns the current page footer,


if any, for this page.

Actuate Foundation Class Reference

AcDataSection::GetAfter method

Method

Type

Description

GetPageHeader( )

AcBaseFrame

Returns the current page


header, if any, for this page.

NewAfter( )

AcReport
Component

Instantiates the component in


the After slot.

NewBefore( )

AcReport
Component

Instantiates the component in


the Before slot.

NewContent( )

AcReport
Component

Instantiates the component in


the Content slot.

NewPageFooter( )

AcBaseFrame

Instantiates the component in


the PageFooter slot.

NewPageHeader( )

AcBaseFrame

Instantiates the component in


the PageHeader slot.

OnEmptyGroup( )

N/A

Called if the section processed


no rows.

AcDataSection::GetAfter method
Returns the component in the After slot.

Syntax
Description

Returns

Function GetAfter( ) As AcReportComponent


Call GetAfter( ) to get a reference to the component instantiated in the After
slot. You need a reference to the component if, for example, you want to
change properties of the After component after it is built.
The component in the After slot.
Nothing if there is no component in the After slot.

See also

AcDataSection::GetBefore method
AcDataSection::GetPageFooter method
AcDataSection::GetPageHeader method

AcDataSection::GetBefore method
Returns the component in the Before slot.

Syntax

Function GetBeforeFrame( ) As AcReportComponent

Chapter 3, AFC classes

205

AcDataSection::GetFirstPageFooter method

Description

Returns

Call GetBefore( ) to get a reference to the component instantiated in the Before


slot. You need a reference to the component if, for example, you want to
change properties of the Before component after it is built.
The component in the Before slot.
Nothing if there is no component in the Before slot.

See also

AcDataSection::GetAfter method
AcDataSection::GetPageFooter method
AcDataSection::GetPageHeader method

AcDataSection::GetFirstPageFooter method
Returns the page footer of the first page in a report or group section.

Syntax
Description

Function GetFirstPageFooter( ) As AcBaseFrame


GetFirstPageFooter( ) is a view time method. The page footer object this
method returns is the same as the first page footer displayed in the report or
group section instance. The page footer object exists even if the section does
not contain a visible page footer.
When performing a search on page footer controls, the search engine examines
the instance of the page footer this method returns.

Returns

The page footer object.


Nothing if the page footer does not exist in the report design.

AcDataSection::GetFirstPageHeader method
Returns the page header of the first page in a report or group section.

Syntax
Description

Function GetFirstPageHeader( ) As AcBaseFrame


GetFirstPageHeader( ) is a view time method. The page header object this
method returns is the same as the first page header displayed in the report or
group section instance. The page header object exists even if the section does
not contain a visible page header, for example if the ShowHeaderOnFirst
property is set to NoHeaderOnFirst and the section starts and ends on the
same page.
When performing a search on page header controls, the search engine
examines the instance of the page header this method returns.

206

Actuate Foundation Class Reference

AcDataSection::GetPageFooter method

Returns

The page header object.


Nothing if the page header does not exist in the report design.

AcDataSection::GetPageFooter method
Returns the page footer for the currently active flow.

Syntax
Description

Returns

Function GetPageFooter( ) As AcBaseFrame


Call GetPageFooter( ) to get a reference to the PageFooter component in the
current flow. You need a reference to the component if, for example, you want
to change properties of the PageFooter component after it is built.
The page footer for the currently active flow.
Nothing if there is no component in the PageFooter slot.

See also

AcDataSection::GetAfter method
AcDataSection::GetBefore method
AcDataSection::GetPageHeader method

AcDataSection::GetPageHeader method
Returns the page header for the currently active flow.

Syntax
Description

Returns

Function GetPageHeader( ) As AcBaseFrame


Call GetPageHeader( ) to get a reference to the PageHeader component in the
current flow. You need a reference to the component if, for example, you want
to change properties of the PageHeader component after it is built.
Returns the page header for the currently active flow.
Nothing if there is no component in the PageHeader slot.

See also

AcDataSection::GetAfter method
AcDataSection::GetBefore method
AcDataSection::GetPageFooter method

AcDataSection::NewAfter method
Instantiates the component in the After slot.

Chapter 3, AFC classes

207

AcDataSection::NewBefore method

Syntax
Description

Returns
See also

Function NewAfter( ) As AcReportComponent


The framework calls NewAfter( ) to instantiate the component in the data
sections After slot. You can override NewAfter( ) to conditionally instantiate
an After component. For example, if you want to display a different After
frame depending on the value of a data row variable, you can override
NewAfter( ) to write the conditional logic.
The component instantiated in the After slot.
AcDataSection::NewContent method

AcDataSection::NewBefore method
Instantiates the component in the Before slot.

Syntax
Description

Returns
See also

Function NewBefore( ) As AcReportComponent


The framework calls NewBefore( ) to instantiate the component in the data
sections Before slot. You can override NewBefore( ) to conditionally
instantiate a Before component. For example, if you want to display a different
Before frame depending on the value of a data row variable, you can override
NewBefore( ) to write the conditional logic.
The component instantiated in the Before slot.
AcDataSection::NewContent method

AcDataSection::NewContent method
Instantiates the component in the Content slot.

Syntax
Description

Returns
Example

208

Function NewContent( ) As AcReportComponent


The framework calls NewContent( ) to instantiate the component in the data
sections Content slot. You can override NewContent( ) to conditionally
instantiate a Content component. For example, if you want to display a
different frame depending on the value of a data row variable, you can
override NewContent( ) to write the conditional logic.
The component instantiated in the Content slot.
The following example shows how you override NewContent( ) to instantiate
one of three frames depending on the type of customer. One frame is for

Actuate Foundation Class Reference

AcDataSection::NewPageFooter method

business customers, another for residential customers, and yet another for
government customers:
Function NewContent( ) As AcReportComponent
Dim cust As CustomerRow
Set cust = GetCurrentRow( )
If row Is Nothing Then
'Creating a content for use in detecting two-pass aggregates
'This report has no aggregates, so just return Nothing
Exit Function
End If
Select Case cust.CustType
Case "R"
Set NewContent = New Persistent ResidentialCustomerFrame
Case "S"
Set NewContent = New Persistent BusinessCustomerFrame
Case "G"
Set NewContent = New Persistent GovtCustomerFrame
End Select
End Function

See also

AcDataSection::NewAfter method
AcDataSection::NewBefore method
AcDataSection::NewPageFooter method
AcDataSection::NewPageHeader method

AcDataSection::NewPageFooter method
Instantiates the component in the PageFooter slot. Not applicable for HTML
reports.

Syntax
Description

Returns
See also

Function NewPageFooter( ) As AcBaseFrame


The framework calls NewPageFooter( ) to instantiate the component in the
data sections PageFooter slot. You can override NewPageFooter( ) to
conditionally instantiate a PageFooter component. For example, if you want to
display a different frame depending on the value of a data row variable, you
can override NewPageFooter( ) to write the conditional logic.
The component instantiated in the PageFooter slot.
AcDataSection::NewContent method

Chapter 3, AFC classes

209

AcDataSection::NewPageHeader method

AcDataSection::NewPageHeader method
Instantiates the component in the PageHeader slot. Not applicable for HTML
reports.

Syntax
Description

Returns
See also

Function NewPageHeader( ) As AcBaseFrame


The framework calls NewPageHeader( ) to instantiate the component in the
data sections PageHeader slot. You can override NewPageHeader( ) to
conditionally instantiate a PageHeader component. For example, if you want
to display a different frame depending on the value of a data row variable, you
can override NewPageHeader( ) to write the conditional logic.
The component instantiated in the PageHeader slot.
AcDataSection::NewContent method

AcDataSection::OnEmptyGroup method
Called if the section processed no data rows.

Syntax
Description

210

Sub OnEmptyGroup( )
The data section calls OnEmptyGroup( ) when it finishes the current group
and the group contains no data rows. Override OnEmptyGroup( ) to perform
processing in this situation, for example, to output a custom frame to describe
the case, or to raise an error.

Actuate Foundation Class Reference

Class AcDataSource

Class AcDataSource
A base class that defines how data sourcesone type of data adapter
retrieve data from an input source and create data rows.
AcComponent
AcDataAdapter
AcDataSource

Description

AcDataSource is the base class for data adapters that read data from an input
source such as a query, a file, or other external source. AcDataSource adds to
the base data adapter class some general functionality that is useful when
creating data sources.
AcDataSource defines and maintains a variable, IsAtEnd, that is helpful in
keeping track of a data sources state. You can set IsAtEnd to True when your
program detects that the data source has read the last input row.

Subclassing AcDataSource
Create a subclass directly from AcDataSource if you need a data source that
retrieves data from an input source that is not a database. For example, if your
report uses data from a spreadsheet or a text file, you need to create a data
source that can read from that file type.
You override these methods to create a custom data source:


Override Start( ) to open your input source (such as a flat file).

Override Fetch( ) to read data rows from your input source.

Override Finish( ) to close your input source.

For an example of creating a custom data source, see Chapter 6, Customizing


reports, in Programming e.Reports.

Variables
Variable

Type

Description

IsAtEnd

Boolean

The status of the data source state.

Chapter 3, AFC classes

211

AcDataSource::HasFetchedLast method

Methods
Method

Type

HasFetchedLast( ) Boolean

See also

Description
Determines if the data source has fetched
the last row.

Class AcDataAdapter
Class AcDataRow
Class AcMultipleInputFilter
Class AcSingleInputFilter

AcDataSource::HasFetchedLast method
Determines if the data source has fetched the last row.

Syntax
Description

Function HasFetchedLast( ) As Boolean


HasFetchedLast( ) returns the value of the IsAtEnd variable. It is the
responsibility of derived classes to ensure that this variable is set correctly.
Instead of calling HasFetchedLast( ) to determine if the data source has
retrieved all data rows, it is better to use Fetch( )s return value. Fetch( )
returns Nothing if all data rows are retrieved.
HasFetchLast( ) is primarily used when data sources must prevent reading
past the end of their input sources.

Returns

True if the data source retrieved the last data row.


False if there are more data rows to retrieve.

212

Actuate Foundation Class Reference

Class AcDateTimeControl

Class AcDateTimeControl
A class you use in the report design to display a date or time.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl
AcDataControl
AcDateTimeControl

Description

Use the DateTime control to store and display a date and time numeric value.
The value you assign to the controls ValueExp property must be a date type.
If, for example, you specify Date$( ) in ValueExp, you get an error because the
Date$( ) function returns a string. To get the current date as a date type, use the
Now( ) function. Similarly, if the DateTime control gets its value from a data
row column, make sure the date is actually a date value and not a string.
AcDateTimeControl defines a DataValue variable to store the date/time value.
The framework generates SetValue( ) to set the value in DataValue. SetValue( )
uses the value you assign to the ValueExp property to generate the value. The
default format used to display a date and time numeric value is General Date.
Override SetValue( ) if you want to take control of setting the controls data
value.

Variables
Variable

Type

Description

DataValue

Date

Holds the date and time value. The default is Null.

Chapter 3, AFC classes

213

Class AcDBConnection

Class AcDBConnection
A base class that defines the basic protocol for establishing database
connections.
AcComponent
AcConnection
AcDBConnection

Description

AcDBConnection class is the base class for the connection classes


AcDB2Connection, AcInformixConnection, AcMSSQLConnection,
AcODBCConnection, AcOracleConnection, AcProgressConnection,
AcProgressSQL92Connection, and AcSybaseConnectionyou use to connect
to each supported database.
AcDBConnection defines the basics of connecting to and disconnecting from a
database, and the logic for creating the database statement object required to
execute SQL statements. For information about database statements, see Class
AcDBStatement.
AcDBConnection also defines error-handling methods, such as
GetGeneralError( ), GetSpecificError( ), GetGeneralErrorText( ), and
GetSpecificErrorText( ). You can call these methods to display error messages
when the connect or disconnect operations fail.

Properties

214

Property

Type

Description

ConfigKey

String

Specifies the run time connection


properties for a report. The value of the
ConfigKey property must match the value
of the Type attribute for the connection's
ConnectOptions element in the
configuration file. If the ConfigKey
property is not set, Actuate uses the fully
qualified name of the connection
component.

Maximum
StringLength

String
Variable

The maximum length of a table field. The


maximum length is 32,672 characters.
The default value is 8,000 characters.

Actuate Foundation Class Reference

AcDBConnection::GetGeneralError method

Methods

See also

Method

Type

Description

GetGeneralError( )

Integer

Returns the general error code.

GetGeneralErrorText( )

String

Returns the text of the general


error.

GetSpecificError( )

Integer

Returns the specific error code.

GetSpecificErrorText( )

String

Returns the text of the specific


error.

Prepare( )

AcDBStatement

Creates a database statement


object for a SQL statement.

Class AcDBStatement

AcDBConnection::GetGeneralError method
Returns a general error code.

Syntax
Description

Function GetGeneralError( ) As Integer


Call GetGeneralError( ) to check for error conditions and return a general error
code. General error codes are generated by Actuate, and are used for all
databases. To return error codes generated by the specific SQL database, use
GetSpecificError( ).
The following table lists the general error code constants.
Error Code

Constant

DB_NoError

DB_OutOfMemory

DB_Specific

DB_InvalidLogin

DB_InvalidColumn

DB_InvalidStatement

DB_TimeOut

DB_InternalError

DB_InvalidParameter

DB_DescNotAvailable

Chapter 3, AFC classes

215

AcDBConnection::GetGeneralErrorText method

Returns
See also

Error Code

Constant

DB_ParameterNotBound

10

DB_EndOfResults

11

DB_CantConvertParameter

12

DB_NoCurrentConnection

13

DB_CursorNotOpen

14

DB_InvalidDescId

15

DB_InvalidParamId

16

DB_NoColumnInfo

17

DB_VariableDescMismatch

18

DB_LoginFailed

19

DB_CannotLoadDLL

20

DB_CursorOnSprocStmtErr

21

DB_OutOfCursors

22

DB_MaxCursorsOnStatement

23

DB_Invalid_DataType

24

DB_BadParamTypeForFunc

25

DB_MaxCursorsOnParm

26

DB_FuncNotForDB

27

DB_InvalidConnProperty

28

DB_EndOfLife

29

DB_NoResultSetAvailable

30

DB_FuncNotForDBServer

31

The error code generated by Actuate.


AcDBConnection::GetGeneralErrorText method
AcDBConnection::GetSpecificError method
AcDBConnection::GetSpecificErrorText method

AcDBConnection::GetGeneralErrorText method
Returns a general error message.

Syntax

216

Function GetGeneralErrorText( ) As String

Actuate Foundation Class Reference

AcDBConnection::GetSpecificError method

Description

Returns
See also

Call GetGeneralErrorText( ) to check for error conditions and return a


description of the error. General error messages are generated by Actuate, and
are used for all databases. To return an error message generated by the specific
SQL database, use GetSpecificErrorText( ).
The text of the Actuate error code.
AcDBConnection::GetGeneralError method
AcDBConnection::GetSpecificError method
AcDBConnection::GetSpecificErrorText method

AcDBConnection::GetSpecificError method
Returns the error code generated by the SQL database.

Syntax
Description

Returns
See also

Function GetSpecificError( ) As Integer


Call GetSpecificError( ) to check for error conditions and return an error code
generated by the SQL database. To return general error codes generated by
Actuate, use GetGeneralError( ).
The error code generated by the SQL server.
AcDBConnection::GetGeneralError method
AcDBConnection::GetGeneralErrorText method
AcDBConnection::GetSpecificErrorText method

AcDBConnection::GetSpecificErrorText method
Returns the error message generated by the SQL database.

Syntax
Description

Returns
See also

Function GetSpecificErrorText( ) As String


Call GetSpecificErrorText( ) to check for error conditions and return a
description of the error generated by the SQL server. To return general error
messages generated by Actuate, use GetGeneralErrorText( ).
The text of the SQL server error code.
AcDBConnection::GetGeneralError method
AcDBConnection::GetGeneralErrorText method
AcDBConnection::GetSpecificError method

Chapter 3, AFC classes

217

AcDBConnection::Prepare method

AcDBConnection::Prepare method
Creates and prepares a database statement object to execute a SQL statement.

Syntax
Description

Returns

Function Prepare( stmtText As String ) As AcDBStatement


If you use the standard SQL query data source to retrieve data from the
database, the framework calls Prepare( ) to create and prepare a statement
object. If you want to create and execute your own SQL statements, you must
call Prepare( ), then call Execute( ) or open a cursor on the statement.
The database statement that was prepared.
Nothing if there is an error in the statement.

See also

218

AcDBStatement::Execute method
AcDBStatement::Prepare method

Actuate Foundation Class Reference

Class AcDB2Connection

Class AcDB2Connection
Establishes a connection to a DB2 database.
AcComponent
AcConnection
AcDBConnection
AcDB2Connection

Description

Use the AcDB2Connection class to establish a connection to a DB2 database.


The application must set the DLL path, user name, password, and data source
prior to connecting. Once connected, the application should not change these
values.

Variables
Variable

Type

Description

DllPath

String

The name of the DLL providing client


database.

UserName

String

The client user name for the connection.

Password

String

The client password for the connection.

DataSource

String

The DB2 data source.

Properties
Property

Type

Description

DllPath

String
Variable

The name of the DLL providing client


database.

Password

String
Variable

The client password for the connection.

DataSource

String
Variable

The DB2 data source.

UserName

String
Variable

The client user name for the connection.

Chapter 3, AFC classes

219

Class AcDB2Connection

DB2 data types


The following table describes the default conversion between Actuate data
types and DB2 data types.

220

DB2 data type

Mapped to

Bigint

Actuate Long. Can also be mapped to an Actuate


Currency, Double, Integer, Single, or String.

Binary

Actuate String.

Bit

Actuate Integer. Can also be mapped to an


Actuate Double, Long, Single, or String.

Blob

Actuate String.

Char

Actuate String.

Clob

Actuate String.

Date

Actuate Time. Can also be mapped to an Actuate


String.

Dbclob

Actuate String.

Type_date

Actuate Time. Can also be mapped to an Actuate


String.

Type_time

Actuate Time. Can also be mapped to an Actuate


String.

Type_timestamp

Actuate Time. Can also be mapped to an Actuate


String.

Decimal

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Double

Actuate Double. Can also be mapped to an


Actuate Currency, Single, or String.

Float

Actuate Double. Can also be mapped to an


Actuate Currency, Single, or String.

Integer

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Longvarbinary

Actuate string.

Longvarchar

Actuate string.

Numeric

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Real

Actuate Single. Can also be mapped to an Actuate


Currency, Double, or String.

Smallint

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Actuate Foundation Class Reference

Class AcDB2Connection

DB2 data type

Mapped to

Time

Actuate Time. Can also be mapped to Actuate


String.

Timestamp

Actuate Time. Can also be mapped to Actuate


String.

Tinyint

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Varbinary

Actuate String.

Varchar

Actuate String.

Chapter 3, AFC classes

221

Class AcDBCursor

Class AcDBCursor
A class that provides a Basic interface to a database cursor for a SQL
statement.

Description

A database cursor is an identifier associated with a set of rows. The cursor


manages the retrieval of rows of data. It also keeps track of the row position in
the set as the database sends each row to the data source. SELECT statements
that return more than one row of data require a database cursor.
When you use Actuates SQL query data source to retrieve data, the
framework executes all the necessary tasks, including creating an instance of
AcDBCursor to manage row retrieval. If, however, you write custom code to
handle data retrieval, for example, from a stored procedure, you must create a
connection, a database statement, and a cursor.
Following are the steps for retrieving rows with a cursor:
1 Use a subclass of AcDBConnection to connect to your database.
2 Prepare the statement object using the connections Prepare( ) method. For
more information about database statement objects, see Class
AcDBStatement.
3 Create a cursor using the statements AllocateCursor( ) method.
4 Open the cursor using the cursors OpenCursor( ) method.
5 Bind the cursor to a data row class using the cursors BindColumn( )
method.
6 Instantiate a data row to hold the first row of data.
7 Call the cursors Fetch( ) method to retrieve the first row.
8 Repeat the previous two steps to retrieve each row until Fetch( ) returns
False, indicating that the cursor has read all the available rows.
The framework automatically deletes the statement and cursor when they
complete their tasks. Actuate generates an error if a developer calls the Delete
method to delete a cursor.

Creating and deleting a cursor


You can use the New( ) method to create a cursor. In the following code
snippet, the two Set statements are equivalent:
Sub Example( stmt As AcDBStatement )
Dim cursor1 As AcDBCursor
Dim cursor2 As AcDBCursor
Set cursor1 = stmt.AllocateCursor( )
Set cursor2 = New AcDBCursor( stmt )
End Sub
222

Actuate Foundation Class Reference

Class AcDBCursor

You can also use the AcDBStatement::AllocateCursor method to create a


cursor.

Methods
Method

Type

Description

BindColumn( )

N/A

Binds a database column to a data


row variable.

BindParameter( )

Boolean

Assigns the value of an Actuate


Basic variable to a cursor
parameter.

CloseCursor( )

N/A

Closes the cursor.

DefineProcedure
InputParameter( )

Boolean

Defines an input parameter used


by a stored procedure.

DefineProcedure
OutputParameter( )

Boolean

Defines an input and output


parameter or an output only
parameter used by a stored
procedure.

DefineProcedure
ReturnParameter( )

Boolean

Specifies the data type of a return


value from a stored procedure.

Fetch( )

Boolean

Reads one row from the cursor.

GetConnection( )

AcDBStatement

Returns the connection against


which the cursor operates.

GetOutput
Parameter( )

Variant

Returns the value of the output


parameter.

GetProcedure
Status( )

Variant

Returns the return value or status


of a stored procedure.

GetStatement( )

AcDBStatement

Returns the statement from which


the cursor was created.

IsOpen( )

Boolean

Indicates whether the cursor is


open or not.

OpenCursor( )

Boolean

Opens the cursor.

StartNextSet( )

Boolean

Starts a new set of rows within a


stored procedure.

Chapter 3, AFC classes

223

AcDBCursor::BindColumn method

AcDBCursor::BindColumn method
Binds a database column to a data row variable.

Syntax

Sub BindColumn( columnID As Integer, className As String, memberName


As String )
Sub BindColumn( columnName As String, className As String,
memberName As String )

Parameter

columnID
The index of the column to which to bind the data row variable. The first
column has an index of 1. The index of each column is determined by its
position in the SELECT clause.
columnName
The name of the column to which to bind the data row variable. The name
must be the same as the column name or alias used in the SELECT clause.
className
The name of the data row class. This class is typically a subclass of
AcDataRow. You can, however, bind column data to variables in any class.
memberName
The name of the variable in the data row to hold the output data.

Description

Use BindColumn( ) to specify how the framework copies column data to the
data row. Call BindColumn( ) repeatedly until you have bound each column to
a data row variable. All columns must be bound to variables of a single class.
The following figure shows conceptually how columns are bound to variables.
In the following example, you would call BindColumn( ) six times.
Row returned by the
SELECT statement
Columns

Variables
Data row

After binding the columns to the data row variables, call Fetch( ) to retrieve
each row from the database.

Example

224

In the following example, a SELECT statement gets the names of contacts


whose last names are Franco. A cursor is required because the SELECT
statement returns data rows. The calls to BindColumn( ) set up the association
between the columns (using the column index) and the FirstName and
LastName variables in MyRow:

Actuate Foundation Class Reference

AcDBCursor::BindParameter method

Class MyRow
Dim FirstName As String
Dim LastName As String
End Class
Sub Example( connection As AcDBConnection )
Dim stmt As AcDBStatement
Dim cursor As AcDBCursor
Dim row As MyRow
' Prepare the statement
Set stmt = connection.Prepare( "SELECT contact_first, contact_last FROM
Customers WHERE contact_last = 'Franco'" )
' Open the cursor
Set cursor = stmt.AllocateCursor( )
' Bind the columns to the data row variables
cursor.BindColumn( 1, "MyRow", "FirstName" )
cursor.BindColumn( 2, "MyRow", "LastName" )
' Instantiate the data row and retrieve data
Do While True
Set row = New MyRow
If Not Cursor.Fetch( row ) Then
Exit Do
End If
' Process the row
Loop
End Sub

See also

AcDBCursor::Fetch method

AcDBCursor::BindParameter method
Assigns the value of an Actuate Basic variable to a cursor parameter.

Syntax

Sub BindParameter( parameterId As Integer, var As Any )


Sub BindParameter( parameterName As String, var As Any )

Parameter

parameterId
The position of the cursor parameter. The first parameter in the statement is
position 1, the second is position 2, and so on.
var
The variable with the value assigned to the parameter. Its data type should be
appropriate for the parameter.
parameterName
The name of the cursor parameter.
Chapter 3, AFC classes

225

AcDBCursor::CloseCursor method

Description

Call BindParameter( ) to set the value of a cursor parameter. You must assign a
value to all the cursor parameters specified in the associated database
statement text.

AcDBCursor::CloseCursor method
Closes the cursor.

Syntax
Description

See also

Sub CloseCursor( )
Call CloseCursor( ) to close the cursor. Use CloseCursor( ) only if you intend to
reopen the same cursor later. Actuate closes the cursor automatically when it
deletes the cursor object.
AcDBCursor::OpenCursor method

AcDBCursor::DefineProcedureInputParameter
method
Defines an input parameter used by a stored procedure.

Syntax

For parameters that only use input:


Function DefineProcedureInputParameter( pname As String, val As Variant )
As Boolean

Parameter

pname
The name of the input parameter.
val
The value to pass to a stored procedure input parameter.

Description

Returns

If your report accesses a stored procedure that uses only input parameters, you
must call DefineProcedureInputParameter( ) for each parameter to specify the
parameter name and Basic data type that matches the parameters type. If the
parameter both accepts an input value and returns an output value, specify the
input and output parameters using the method,
AcDBCursor::DefineProcedureOutputParameter method.
True if the parameter is defined successfully.
A database error is raised if errors are found.

See also

226

AcDBCursor::DefineProcedureOutputParameter method
AcDBCursor::DefineProcedureReturnParameter method

Actuate Foundation Class Reference

AcDBCursor::DefineProcedureOutputParameter method

AcDBCursor::DefineProcedureOutputParameter
method
Defines an input and output parameter or an output only parameter used by a
stored procedure.

Syntax

For parameters that only return output:


Function DefineProcedureOutputParameter( pname As String, tcode As
Integer ) As Boolean
For parameters that receive input values and return output:
Function DefineProcedureOutputParameter( pname As String, tcode As
Integer, val as Variant ) As Boolean

Parameter

pname
The name of the output parameter.
tcode
The Actuate Basic type code that maps to the data type of the stored procedure
output parameter. Valid data types are V_CURRENCY, V_DATE, V_DOUBLE,
V_INTEGER, V_LONG, V_SINGLE, and V_STRING.
val
The value to pass to a stored procedure output parameter that also takes input.
If the corresponding Actuate Basic type code is V_CPOINTER, specify a Null
value.

Description

If your report accesses a stored procedure that uses output parameters, you
must call DefineProcedureOutputParameter( ) for each parameter to specify
the parameter name and Basic data type that matches the parameters type. If
the parameter both accepts an input value and returns an output value, you
must additionally specify the input value to pass.
After defining the stored procedures output parameters and executing the
stored procedure, call AcDBCursor::StartNextSet method to get the value of
each output parameter. Output parameters with a V_CPOINTER Actuate
Basic type code cannot be accessed using GetOutputParameter( ). To get a
reference to the cursor, call AcDBStatement::AllocateCursor method.

Returns

True if parameter is defined successfully.


A database error is raised if errors are found.

See also

AcDBCursor::DefineProcedureInputParameter method
AcDBCursor::DefineProcedureReturnParameter method
AcDBStatement::AllocateCursor method

Chapter 3, AFC classes

227

AcDBCursor::DefineProcedureReturnParameter method

AcDBCursor::DefineProcedureReturnParameter
method
Specifies the data type of the return value from a stored procedure.

Syntax
Parameter

Function DefineProcedureReturnParameter( pname As String, tcode As


Integer ) As Boolean
pname
The name of the parameter that represents the return value.
tcode
The Actuate Basic type code that maps to the data type of the stored procedure
return value. Valid data types are:

Description
Returns

V_CURRENCY

V_DATE

V_DOUBLE

V_INTEGER

V_LONG

V_SINGLE

V_STRING

Call DefineProcedureReturnParameter( ) to specify the data type of a return


value from a stored procedure.
True if return value is defined successfully.
A database error is raised if errors are found.

See also

AcDBCursor::DefineProcedureInputParameter method
AcDBCursor::DefineProcedureOutputParameter method

AcDBCursor::Fetch method
Retrieves one row from a database cursor.

Syntax
Parameter

228

Function Fetch( dataRow As AnyClass ) As Boolean


dataRow
The data row to which the data will be copied. The data rows variables should
already be bound to the columns with BindColumn( ).

Actuate Foundation Class Reference

AcDBCursor::GetConnection method

Description

Returns

Fetch( ) retrieves a single row from the database cursor. To retrieve all rows,
execute Fetch( ) in a Do loop. When Fetch( ) has retrieved all rows, it returns
False. See AcDataAdapter::Fetch method for an example showing how to use
Fetch( ).
True if a row is available.
False if there are no more rows. If you are reading from a stored procedure that
returns more than one set of rows, Fetch( ) returns False at the end of each set.

See also

AcDataAdapter::Fetch method
AcDBCursor::BindColumn method

AcDBCursor::GetConnection method
Returns the connection against which the cursor operates.

Syntax
Description

Returns

Function GetConnection( ) As AcDBConnection


Call GetConnection( ) to get a reference to the connection for this cursor. You
need this reference if, for example, you want to call the connections errorhandling methods, such as GetGeneralError( ) or GetSpecificError( ).
The connection this cursor uses.

AcDBCursor::GetOutputParameter method
Returns the value of a stored procedures output parameter.

Syntax

Function GetOutputParameter( columnName As String ) As Variant


or
Function GetOutputParameter( columnIndex As Integer ) As Variant

Parameter

columnName
The name of the database column from which the data for the output
parameter is fetched. This argument must be used for output parameters on
Oracle 8 stored procedures. Output parameters with a datatype of
V_CPOINTER cannot be used.
columnIndex
The position of the column from which the data for the output parameter is
fetched. This argument cannot be used for Oracle 8 stored procedures.

Chapter 3, AFC classes

229

AcDBCursor::GetProcedureStatus method

Description

Call GetOutputParameter( ) to get the value of each output parameter. You


should already have defined each output parameter with
DefineProcedureOutputParameter( ).
GetOutputParameter( ) returns a single value. To get rows of data, use the
cursors Fetch( ) method.

Returns
See also

Value of output parameter.


AcDBCursor::DefineProcedureOutputParameter method

AcDBCursor::GetProcedureStatus method
Returns a preset value that indicates the status of a stored procedure.

Syntax
Description

Returns

Function GetProcedureStatus( ) As Integer


If your code runs a stored procedure, you can call GetProcedureStatus( ) to
return the status of the stored procedure, if status values were previously
defined. GetProcedureStatus( ) is typically used to monitor the proper
execution and termination of the stored procedure.
A preset status value.

AcDBCursor::GetStatement method
Returns the database statement for which the cursor was created.

Syntax
Description
Returns

Function GetStatement( ) As AcDBStatement


Call GetStatement( ) to get a reference to the statement object for which the
cursor was created.
The statement for which the cursor was created.

AcDBCursor::IsOpen method
Returns whether the database cursor is open.

Syntax
Description

230

Function IsOpen( ) As Boolean


Call IsOpen( ) to return whether the database cursor is open. The value that
IsOpen( ) returns is useful for checking the status of the cursor before closing
or reopening it, or before executing a task.

Actuate Foundation Class Reference

AcDBCursor::OpenCursor method

Returns

True if the cursor is open.


False if the cursor is not open.

See also

AcDBCursor::OpenCursor method
AcDBStatement::AllocateCursor method

AcDBCursor::OpenCursor method
Opens the database cursor.

Syntax
Description

Function OpenCursor( ) As Boolean


Call OpenCursor( ) after AllocateCursor( ) to open the cursor. You can also call
OpenCursor( ) to reopen a cursor previously closed with CloseCursor( ).
Another way to open a cursor is to use the statements OpenCursor( ) method.
The difference between the cursors OpenCursor( ) method and the
statements OpenCursor( ) method is that the latter both allocates and opens a
cursor.

Example

The following code snippet illustrates the two ways to allocate and open a
cursor. The code snippet assumes the statement is created and prepared:
Dim cursor1 As AcDBCursor
Dim cursor2 As AcDBCursor
' Using the cursors AllocateCursor( ) and OpenCursor( ) methods
Set cursor1 = stmt.AllocateCursor( )
cursor.OpenCursor( )
' Using the statements OpenCursor( ) method
Set cursor2 = stmt.OpenCursor( )

Returns

True if the cursor is opened successfully.


False if an error occurred.

See also

AcDBCursor::CloseCursor method
AcDBStatement::AllocateCursor method
AcDBStatement::OpenCursor method

Chapter 3, AFC classes

231

AcDBCursor::StartNextSet method

AcDBCursor::StartNextSet method
Starts a new set of rows within a stored procedure.

Syntax
Description

Returns

Function StartNextSet( ) As Boolean


If you are accessing a stored procedure that returns more than one set of rows,
you typically must call StartNextSet( ) after Fetch( ) has finished retrieving a
set. StartNextSet( ) prepares the cursor to read a new set of rows. After calling
StartNextSet( ), you go through another process of binding the row columns to
variables of a new data row with BindColumn( ), then retrieving rows with
Fetch( ).
True if there is another set of data.
False if there are no more sets of data.

Example

The following example shows how you use a cursor to read rows from a stored
procedure that returns two sets of rows:
Sub Example( connection As AcDBConnection )
Dim stmt As AcDBStatement
Dim cursor As AcDBCursor
Dim order As OrderRow
Dim payment As PaymentRow
' Prepare the statement and open the cursor.
Set stmt = connection.Prepare( "CustomerInfo Jones" )
Set cursor = stmt.AllocateCursor( )
cursor.OpenCursor( )
' Prepare for the first set; bind each database column
' to a data row variable.
cursor.BindColumn( 1, "OrderRow", "OrderNumber" )
' <bind other columns>
' Read the first set until Fetch( ) returns False.
Do While True
Set order = New OrderRow
If Not cursor.Fetch( order ) Then
Exit Do
End If
' <Process the order row>
Loop
' Prepare for the second set, then bind each database column
' to a data row variable.
Cursor.StartNextSet( )

232

Actuate Foundation Class Reference

AcDBCursor::StartNextSet method

Cursor.BindColumn( 1, "PaymentRow", "PaymentDate" )


' <bind other columns>
' Read the second set until Fetch( ) returns False.
Do While True
Set order = New PaymentRow
If Not cursor.Fetch( order ) Then
Exit Do
End If
' <Process the payment row>
Loop
End Sub

Chapter 3, AFC classes

233

Class AcDBStatement

Class AcDBStatement
A class that provides a Basic interface to a SQL statement.

Description

A database statement provides a way to execute a SQL statement. Actuate


supports two kinds of database statements. One kind of statement executes
and returns no data. Examples of such statements include the SQL CREATE
TABLE, INSERT, and UPDATE statements. The other kind of statement
executes and returns one or more rows of data. The SELECT statement is a
typical example.
A statement that returns more than one row of data requires a database cursor.
A database cursor manages the retrieval of rows. For more information about
database cursors, see Class AcDBCursor.
When you use Actuates SQL query data source to retrieve data, the
framework executes all the necessary tasks, including creating the database
statement. If, however, you want to create and execute other SQL statements,
you must create an instance of AcDBStatement.
The following are the steps for creating and executing a SQL statement that
does not return data rows. For steps on executing a SQL statement that returns
data rows, see Class AcDBCursor.
1 Establish a connection to the database. You can use the one that a report
creates for you, or you can create your own connection.
2 Prepare the statement object using the connections Prepare( ) method.
3 If the SQL statement accepts parameters with values that are provided
later, use BindParameter( ) to assign the value of a variable to each
parameter.
4 Execute the statement any number of times by calling Execute( ).
The framework automatically deletes the statement and cursor when they
have completed their tasks. Actuate generates an error if a developer calls the
Delete method to delete a cursor.

Creating a database statement


You can use the New( ) method to create a statement. You can also call the
connections Prepare( ) method. The difference between the two is that the
connections Prepare( ) method creates and also prepares a statement, whereas
New( ) only creates the statement. If you use New( ), you must call the
statements Prepare( ) method after New( ) to prepare the statement.
The following code snippet illustrates the two ways to create and prepare a
statement:

234

Actuate Foundation Class Reference

Class AcDBStatement

Sub Example( connection As AcDBConnection)


Dim stmt1 As AcDBStatement
Dim stmt2 As AcDBStatement
' Using the connections Prepare( ) method
Set stmt1 = connection.Prepare( "DROP TABLE MyTable" )
' Using the statements New( ) and Prepare( ) methods
Set stmt2 = New AcDBStatement( connection )
stmt2.Prepare( "DROP TABLE MyTable" )
End Sub

Methods
Method

Type

Description

AllocateCursor( )

AcDBCursor

Creates a cursor to read the rows


which the statement returns.

BindParameter( )

Boolean

Binds a statement parameter to a


variable.

DefineProcedure
InputParameter( )

Boolean

Defines an input parameter used by


a stored procedure.

DefineProcedure
OutputParameter( )

Boolean

Defines an input and output


parameter or an output only
parameter used by a stored
procedure.

DefineProcedure
ReturnParameter( )

Boolean

Specifies the data type of a return


value from a stored procedure.

Execute( )

Boolean

Executes the SQL statement.

GetOutputCount( )

Integer

Returns the number of columns in


the rows which the SQL statement
returns.

GetOutputParameter( )

Variant

Returns an output parameter of a


stored procedure by name or
position.

GetParameterCount( )

Integer

Returns the number of parameters


in the SQL statement.

GetProcedureStatus( )

Integer

Returns the return value from a


stored procedure.

GetStatementText( )

String

Returns the text of the SQL


statement previously passed to
Prepare( ).

Chapter 3, AFC classes

235

AcDBStatement::AllocateCursor method

Method

Type

Description

OpenCursor( )

AcDBCursor

Creates and opens a cursor to use to


read the rows which the statement
returns.

Prepare( )

Boolean

Prepares a SQL statement.

AcDBStatement::AllocateCursor method
Creates a cursor to read the rows that the statement returns.

Syntax

Function AllocateCursor( ) As AcDBCursor


or
Function AllocateCursor( parameterName As String ) As AcDBCursor

Parameter

parameterName
The name of a cursor variable parameter specified in the Oracle8 stored
procedure. ParameterName must be enclosed in quotes (.) Do not include a
colon (:) in cursorpname.

Description

Use AllocateCursor to create a cursor for a database statement. After you


create the cursor, call the cursors OpenCursor method to open the cursor. This
technique allows you to reuse a cursor multiple times for the same database
statement. If you are using Oracle stored procedures, use AllocateCursor to
create an AcDBCursor object for an Oracle cursor variable. The cursor variable
is an output parameter on the Oracle stored procedure call statement.
In most cases, you can use the OpenCursor method to allocate and open a
cursor in one step.

Returns
Example

The database cursor that was created.


The example shows how to allocate and then open a cursor on an Oracle8
database accessed using a stored procedure. EmpCursor is the name of the
cursor parameter on the Oracle stored procedure Call statement:
Dim theEmpCursor As AcDBCursor
' Using the cursors AllocateCursor( ) and OpenCursor( ) methods
Set theEmpCursor = stmt.AllocateCursor( EmpCursor )
If theEmpCursor Is Nothing Then
If Not theEmpCursor.OpenCursor( ) Then
GetDBConnection( ).RaiseError( )
Exit Function
EndIf
End If

236

Actuate Foundation Class Reference

AcDBStatement::BindParameter method

See also

AcDBCursor::OpenCursor method
AcDBStatement::OpenCursor method

AcDBStatement::BindParameter method
Assigns the value of an Actuate Basic variable to a cursor parameter.

Syntax
Parameter

Sub BindParameter( parameterId As Variant, var As Any )


parameterId
The position of the parameter to bind. The first parameter in the statement is
position 1, the second is position 2, and so on.
var
The variable with the value assigned to the parameter. Its data type should be
appropriate for the parameter.

Description

Call BindParameter( ) to set the value of a cursor parameter. You must assign a
value to all the cursor parameters specified in the database statement.
Before calling BindParameter( ), you should already have created the
statement with Prepare( ).

Example

The following example shows how to execute a parametized INSERT


statement twice, each time with a different set of parameter values. The
example assumes you have established a connection to the database.
Note that you assign values to the local variables, then bind each parameter to
the corresponding local variable. To execute the statement again with different
values, you must assign the new values to the local variables, and again bind
each parameter to the corresponding local variable:
Sub AnExample( connection As AcDBConnection )
Dim statement As AcDBStatement
Dim val1 As Integer
Dim val2 As Integer
' Prepare the statement with two parameters, indicated by :val1 and :val2
Set statement = connection.Prepare( "INSERT INTO MyTable (col1, col2)
VALUES (:val1, :val2)" )
If statement Is Nothing Then
MsgBox "Failed to prepare the statement"
MsgBox connection.GetSpecificErrorText( )
Exit Sub
End If
' Assign values to the variables.

Chapter 3, AFC classes

237

AcDBStatement::DefineProcedureInputParameter method

val1 = 100
val2 = 200
' Bind each parameter to a variable.
Statement.BindParameter( 1, val1 )
Statement.BindParameter( 2, val2 )
' Execute the statements.
If Not statement.Execute( ) Then
MsgBox "Failed to insert data"
MsgBox connection.GetSpecificErrorText( )
Exit Sub
End If
' Execute the statement again with different parameter values.
val1 = 500
val2 = 600
' Again, bind each parameter to a variable.
Statement.BindParameter( 1, val1 )
Statement.BindParameter( 2, val2 )
If Not statement.Execute( ) Then
MsgBox "Failed to insert data"
MsgBox connection.GetSpecificErrorText( )
Exit Sub
End If
' When this function exits, the framework deletes the statement,
' freeing the statement resources.
End Sub

See also

AcDBStatement::Prepare method

AcDBStatement::DefineProcedureInputParameter
method
Defines parameter information for an input parameter used by a stored
procedure.

Syntax
Parameter

238

Function DefineProcedureInputParameter( pname As String, value as Variant)


As Boolean
pname
The name of the input parameter.

Actuate Foundation Class Reference

AcDBStatement::DefineProcedureOutputParameter method

value
The value to pass to the stored procedure.

Description

Returns

If your report accesses a stored procedure that uses only input parameters, you
must call DefineProcedureInputParameter( ) for each parameter to specify the
parameter name and Basic data type that matches the parameters type. If the
parameter both accepts an input value and returns an output value, specify the
input and output parameters using the method,
AcDBStatement::DefineProcedureInputParameter method.
True if input parameter is defined successfully.
A database error is raised if errors are found.

See also

AcDBStatement::DefineProcedureOutputParameter method

AcDBStatement::DefineProcedureOutputParameter
method
Provides parameter information for an output parameter used by a stored
procedure.

Syntax

For parameters that only return output:


Function DefineProcedureOutputParameter( pname As String, tcode As
Integer ) As Boolean
For parameters that receive input values and return output:
Function DefineProcedureOutputParameter( pname As String, tcode As
Integer, val as Variant ) As Boolean

Parameter

pname
The name of the output parameter.
tcode
The Actuate Basic type code that maps to the data type of the stored procedure
input or output parameter. Valid data types are V_CPOINTER,
V_CURRENCY, V_DATE, V_DOUBLE, V_INTEGER, V_LONG, V_SINGLE,
and V_STRING.
val
The value to pass to a stored procedure output parameter that also takes input.

Description

If your report accesses a stored procedure that uses output parameters, you
must call DefineProcedureOutputParameter( ) for each parameter to specify
the parameter name and Actuate Basic data type that matches the parameters

Chapter 3, AFC classes

239

AcDBStatement::DefineProcedureReturnParameter method

type. If the parameter both accepts an input value and returns an output value,
you must additionally specify the input value to pass.
After defining the stored procedures output parameters and executing the
stored procedure, call GetOutputParameter( ) to get the value of each output
parameter. Output parameters with a V_CPOINTER datatype cannot be
accessed using GetOutputParameter( ). To get a reference to a the cursor, call
AcDBStatement::AllocateCursor method.

Returns

True if input parameter is defined successfully.


A database error is raised if errors are found.

Example

The following statement shows how to define an output parameter. Stmt


contains a reference to the database statement:
stmt.DefineProcedureOutputParameter( deptAcct, V_INTEGER )

The following statement shows how to declare an input and output parameter
on an Oracle8 stored procedure as a cursor variable:
stmt.DefineProcedureOutputParameter( empCursor, V_CPOINTER, NULL )

See also

AcDBStatement::DefineProcedureInputParameter method
AcDBStatement::GetOutputParameter method

AcDBStatement::DefineProcedureReturnParameter
method
Specifies the data type of a return parameter.

Syntax
Parameter

Function DefineProcedureReturnParameter( pname As String, tcode As


Integer ) As Boolean
pname
The name of the return parameter.
tcode
The Actuate Basic type code that maps to the data type of the stored procedure
return parameter. Valid data types are V_CPOINTER, V_CURRENCY,
V_DATE, V_DOUBLE, V_INTEGER, V_LONG, V_SINGLE, and V_STRING.

Description
Returns

Call DefineProcedureReturnParameter( ) to specify the data type of a return


parameter.
True if the return parameter is defined successfully.
A database error is raised if errors are found.

240

Actuate Foundation Class Reference

AcDBStatement::Execute method

Example

The following statement shows how to define a cursor variable as a return


parameter for an Oracle stored procedure:
stmt.DefineProcedureReturnParameter( mgrCursor, V_CPOINTER )

See also

AcDBStatement::DefineProcedureInputParameter method
AcDBStatement::DefineProcedureOutputParameter method

AcDBStatement::Execute method
Executes the SQL statement.

Syntax
Description

Function Execute( ) As Boolean


Call Execute( ) to execute a SQL statement that does not return data. Examples
of such SQL statements include CREATE TABLE, INSERT, and UPDATE. To
execute a SQL statement, such as SELECT, that returns data, you must use a
cursor instead of Execute( ). For information about creating and using a cursor,
see Class AcDBCursor.
Typically, you call Execute( ) for each SQL statement you created and prepared
with the connections Prepare( ) method. You can, however, call Execute( ) any
number of times for the same statement if the statement contains parameters.
For example, if you want to insert 15 rows into a database, you can use one of
two techniques:


Create 15 INSERT statements using Prepare( ), then call Execute( ) to


execute each statement. The following code snippet creates and executes
two INSERT statements:
Set stmt1 = connection.Prepare( "INSERT INTO MyTable (fName, lName)
VALUES ("John", "Smith")" )
stmt1.Execute( )
Set stmt2 = connection.Prepare( "INSERT INTO MyTable (fName, lName)
VALUES ("Nancy", "Alvarez")" )
stmt2.Execute( )

Create one INSERT statement with parameters using Prepare( ), bind each
parameter to a variable, then call Execute( ) 15 times after assigning
different values to the variables. The following code snippet creates one
INSERT statement and executes it twice, each time with different
parameter values:
Dim firstName As String
Dim lastName As String
Set stmt = connection.Prepare( "INSERT INTO MyTable (fName, lName)
VALUES (:param1, :param2)" )

Chapter 3, AFC classes

241

AcDBStatement::GetOutputCount method

stmt.BindParameter( 1, firstName )
stmt.BindParameter( 2, lastName )
firstName = "John"
lastName = "Smith"
stmt.Execute( )
firstName = "Nancy"
lastName = "Alvarez"
stmt.Execute( )

Both techniques achieve the same results. The second technique, however,
executes more efficiently.

Returns

True if the statement executed successfully.


False if an error occurred. You can call the error-handling methods on
AcDBConnection to return the error that occurred.

See also

AcDBConnection::Prepare method
AcDBStatement::BindParameter method

AcDBStatement::GetOutputCount method
Returns the number of columns.

Syntax
Description

Returns

Function GetOutputCount( ) As Integer


Use GetOutputCount( ) in conditional code that requires the number of
columns in the rows returned by the SQL statement. GetOutputCount( ) is also
useful if you prepared a SQL statement that returns all columns in a table,
such as SELECT * FROM Customers, and you need to know how many
columns will be returned. You can call GetOutputCount( ) any time after the
statement is prepared with Prepare( ).
The number of columns in the rows which the SQL statement returns.

AcDBStatement::GetOutputParameter method
Returns the value of a stored procedures output parameter.

Syntax

Function GetOutputParameter( columnName As String ) As Variant


or
Function GetOutputParameter( columnIndex As Integer ) As Variant

242

Actuate Foundation Class Reference

AcDBStatement::GetOutputParameter method

Parameter

columnName
The name of the database column from which the data for the output
parameter is fetched. Output parameters with a datatype of V_CPOINTER
cannot be used.
columnIndex
The position of the column from which the data for the output parameter is
fetched. This argument cannot be used for Oracle stored procedures.

Description

Call GetOutputParameter( ) to get the value of each output parameter. You


should already have defined each output parameter with
DefineProcedureOutputParameter( ).
GetOutputParameter( ) returns a single value. To get rows of data, use the
cursors Fetch( ) method.

Returns
Example

Value of the output parameter.


The procedure in the following example executes an Oracle stored procedure
that returns two output values. DefineProcedureOutputParameter( ) is called
to define the name and type of each output parameter. After executing the
stored procedure with Execute( ), GetOutputParameter( ) is called to return
the value of each output parameter:
Sub GetSPValues( connection As AcDBConnection )
Dim stmt As AcDBStatement
Dim id As Long
Dim newId As Long
Dim name As Variant
' Prepare the statement to execute the OracleProc stored procedure
Set stmt = connection.Prepare( "BEGIN OracleProc (:id, :name); END;" )
If stmt Is Nothing Then
Print #1 "Failed to prepare statement"
Print #1 connection.GetSpecificErrorText( )
Exit Sub
End If
' Define the first parameter that is both an input and output parameter
id = 20
If stmt.DefineProcedureOutputParameter( "id", V_INTEGER, id ) = 0 Then
Print #1 "Failed to define input/output parameter"
Print #1 connection.GetSpecificErrorText( )
Exit Sub
End If
' Define the second output parameter
If stmt.DefineProcedureOutputParameter( "name", V_STRING ) = 0 Then
Print #1 "Failed to define output parameter"

Chapter 3, AFC classes

243

AcDBStatement::GetParameterCount method

Print #1 connection.GetSpecificErrorText( )
Exit Sub
End If
' Execute the stored procedure
If stmt.Execute( ) = 0 Then
Print #1 "Failed to execute the OracleProc stored procedure"
Print #1 connection.GetSpecificErrorText( )
Else
Print #1 "OracleProc executed"
End If
' Get the values of the output parameters and write the information to a file
name = stmt.GetOutputParameter( "name" )
newId = stmt.GetOutputParameter( "id" )
Print #1, "Output: name = ", name
Print #1, "Output: id = ", newId
End Sub

See also

AcDBStatement::DefineProcedureOutputParameter method
AcDBStatement::Execute method

AcDBStatement::GetParameterCount method
Returns the number of parameters used in the SQL statement.

Syntax
Description

Returns
See also

Function GetParameterCount( ) As Integer


Use GetParameterCount( ) in conditional code that requires the number of
parameters used in the SQL statement. You can call GetParameterCount( ) any
time after the statement is prepared with Prepare( ).
The number of parameters in the SQL statement.
AcDBStatement::BindParameter method

AcDBStatement::GetProcedureStatus method
Returns the return value or status from a stored procedure.

Syntax

244

Function GetProcedureStatus( ) As Variant

Actuate Foundation Class Reference

AcDBStatement::GetStatementText method

Description

Returns

If your code runs a stored procedure, you can call GetProcedureStatus( ) to get
the return value from the stored procedure or a status value if status values
were previously defined. GetProcedureStatus( ) is typically used to monitor
the proper execution and termination of the stored procedure.
A return or status value from a stored procedure.

AcDBStatement::GetStatementText method
Returns the text of the prepared SQL statement.

Syntax
Description

Returns
See also

Function GetStatementText( ) As String


You can call GetStatementText( ) to display the text of the SQL statement you
prepared or to check that the prepared statement is in the form you intended.
You can call GetStatementText( ) any time after the statement is prepared with
Prepare( ).
The text of the prepared SQL statement.
AcDBConnection::Prepare method
AcDBStatement::Prepare method

AcDBStatement::OpenCursor method
Allocates and opens a database cursor.

Syntax

Function OpenCursor( ) As AcDBCursor

Description

Call OpenCursor( ) to allocate and open a cursor for a database statement.


Another way to allocate and open a cursor is to use the statements
AllocateCursor( ) method followed by the cursors OpenCursor( ) method. If
you need to reuse the cursor multiple times on the same database, or, if you are
using Oracle stored procedures, you must call AllocateCursor( ) before calling
OpenCursor( ).

Example

The following code snippet illustrates two ways to allocate and open a cursor.
The code snippet assumes the statement is created and prepared:
Dim cursor1 As AcDBCursor
Dim cursor2 As AcDBCursor
' Using the statements OpenCursor( ) method
Set cursor2 = stmt.OpenCursor( )

Chapter 3, AFC classes

245

AcDBStatement::Prepare method

' Using the cursors AllocateCursor( ) and OpenCursor( ) methods


Set cursor1 = stmt.AllocateCursor( )
cursor.OpenCursor( )

Returns
See also

The instantiated database cursor.


AcDBCursor::OpenCursor method
AcDBStatement::AllocateCursor method

AcDBStatement::Prepare method
Prepares a SQL statement for execution.

Syntax
Parameter
Description

Function Prepare( statement As String ) As Boolean


statement
The text of the SQL statement.
Call Prepare( ) to initialize the statement object to work with the SQL
statement you provide. Before calling Prepare( ), you must instantiate the
statement with New( ).
Another way to create and prepare a statement is to use the connections
Prepare( ) method. The following code snippet illustrates the two ways to
create and prepare a statement:
Sub Example(connection As AcDBConnection)
Dim stmt1 As AcDBStatement
Dim stmt2 As AcDBStatement
' Using the statements New( ) and Prepare( ) methods
Set stmt2 = New AcDBStatement( connection )
stmt2.Prepare( "DROP TABLE MyTable" )
' Using the connections Prepare( ) method
Set stmt1 = connection.Prepare( "DROP TABLE MyTable" )
End Sub

Returns

True if the statement executed successfully.


False if an error occurred.

See also

246

AcDBConnection::Prepare method

Actuate Foundation Class Reference

Class AcDetailChart

Class AcDetailChart
A subclass of AcChart that maps data rows directly into points in a chart.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcChart
AcDetailChart

Description

AcDetailChart maps each data row to a single data point in a chart. It does not
summarize data.
Use the detail chart to display a scatter chart and similar charts that display an
unsummarized set of points. To create meaningful line charts, ensure that the
points are sorted from lowest to highest x values.
All time series calculations are performed when custom x labels are created.

Properties
Property

Type

Description

DualYValueExp

Expression

The value expression for the


dual chart.

SeriesExp

Expression

Specifies the series.


The default is an empty
string.

SeriesLabelExp

Expression

The expression used to


generate series labels.

XLabelExp

Expression

The expression used to


generate labels along the xaxis.

XValueExp

Expression

The x value of the point.

YValueExp

Expression

The y value of the point.

Chapter 3, AFC classes

247

AcDetailChart::AddPoint method

Methods
Method

Type

Description

AddPoint( )

N/A

Adds a data point at the end of the


list of data points.

AddSeriesPoint ( ) N/A

Specifies multiple data series in a


chart.

CustomXLabels( )

Creates labels for the x-axis.

N/A

AcDetailChart::AddPoint method
Adds a data point at the end of the list of data points.

Syntax

Sub AddPoint( X As Double, Y As Double, Label As String )


X
The x value of the data point.
Y
The y value of the data point.
Label
The text of the label for the data point.

Description

The AddPoint( ) method adds a data point at the end of the list of data points
for the chart. This method assumes that only one data set exists. The
framework calls the AddSeriesPoint( ) method instead of the AddPoint( )
method.

AcDetailChart::AddSeriesPoint method
Specifies multiple series in a detail chart.

Syntax
Parameter

Sub AddSeriesPoint( X As Double, Y As Double, Label As String, SeriesObj


As AcGraphKey )
X
The x value of the data point.
Y
The y value of the data point.

248

Actuate Foundation Class Reference

AcDetailChart::CustomXLabels method

Label
The text of the label of the data point.
SeriesObj
The series key of the data point.

Description

The AddSeriesPoint( ) method allows the system to specify multiple series in a


detail chart.

AcDetailChart::CustomXLabels method
Creates labels for the x-axis.

Syntax
Description

Sub CustomXLabels( )
The CustomXLabels( ) method creates labels for the x-axis. For time series
charts, the labels are created by incrementing the starting date by the
TickInterval and formatting it with the value of the XFormatLabel property.
After this function is finished, the total number of labels to display is set.

Chapter 3, AFC classes

249

Class AcDetailGraph

Class AcDetailGraph
A subclass of AcGraph that maps data rows directly into points in a graph.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcGraph
AcDetailGraph

Description

The AcDetailGraph class is a subclass of AcGraph. AcDetailGraph maps data


rows directly into points in a graph. It does not summarize data.
Use the detail graph to display a scatter chart, and similar graphs that display
an unsummarized set of points. To create meaningful line graphs, ensure that
the points are sorted from lowest to highest x values.

Order of methods for time series calculations


All time series calculations are performed when custom X labels are created.
The order in which the methods are called is shown below. Each method calls
the methods indented below it:
CustomXLabels
CalculateStartingValue
CalculateTickIntervalUnit
CalculateRangeUnit
CalculateRange
CalculateEndingValue
ConvertRange
CalculateRange

250

Actuate Foundation Class Reference

AcDetailGraph::AddSeriesPoint method

Properties
Property

Type

Description

LabelValueExp

Expression

The value expression used to


generate labels.

OverlayValue
Expression

Expression

The value expression for the


overlay graph.

SeriesKey

Expression

Specifies the series.


The default is an empty
string.

SeriesLabel

Expression

Specifies the label for the


series. The SeriesLabel
appears in the graphs
legend. If SeriesLabel is not
specified, SeriesKey is used.
The default is an empty
string.

XValueExp

Expression

Specifies the points X value.

YValueExp

Expression

Specifies the points Y value.

ZValueExp

Expression

Specifies the points Z value.

Methods
Method

Type

Description

AddSeriesPoint ( ) N/A

Specifies multiple data series in a


graph.

CustomXLabels( )

Creates labels for the x-axis.

N/A

AcDetailGraph::AddSeriesPoint method
Specifies multiple series in a detail graph.

Syntax
Parameter

Sub AddSeriesPoint( X As Double, Y As Double, Z As Double, Label As String,


SeriesKey As AcGraphKey )
X
The x value of the data point.

Chapter 3, AFC classes

251

AcDetailGraph::CustomXLabels method

Y
The y value of the data point.
Z
The z value of the data point.
Label
The text of the label of the data point.
SeriesKey
The series key of the data point.

Description

This method allows the system to specify multiple series in a detail graph.

AcDetailGraph::CustomXLabels method
Creates labels for the x-axis.

Syntax
Description

252

Sub CustomXLabels( )
This method creates labels for the x-axis. The labels are created by
incrementing the starting date by the TickInterval and formatting it with the
value of the XFormatLabel property. After this function is finished, the total
number of labels to display is set.

Actuate Foundation Class Reference

Class AcDoubleControl

Class AcDoubleControl
A class you use in the report design to display a double-precision real (floating
point) number. Not applicable for HTML reports.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl
AcDataControl
AcDoubleControl

Description

Use the AcDoubleControl class to store and display a real number, that is, a
number that has a fractional part. If you know the number will always be a
whole number (no fractions), use an integer control instead. Operations are
faster with integers. If you use an integer control, however, numbers with
fractions are rounded to the nearest whole number.
AcDoubleControl defines a DateValue variable to store the double value. The
framework generates SetValue( ) to set the value in DataValue. SetValue( ) uses
the value expression you assign to the ValueExp property to generate the
value. Override SetValue( ) if you want to take control of setting the controls
data value.

Variables
Variable

Type

Description

DataValue

Double

Holds the double value. The default is Null.

Chapter 3, AFC classes

253

Class AcDynamicTextControl

Class AcDynamicTextControl
A class you use in a report design to control text formatting.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl
AcDynamicTextControl

Description

AcDynamicTextControl is the AFC class that provides the ability display text
with multiple style formatting and variable amount of data. A dynamic text
control automatically adjusts its size and the size of the frame containing it to
accommodate varying amounts of data.
A single AcDynamicTextControl supports one of the following three text
formats:


Plaintext
Plaintext has no format tags, but can contain ASCII tags for specifying
carriage returns, line feeds, tabs, and so on. AcDynamicTextControl
supports only the CR, LF, and TAB tags.

HTML
AcDynamicTextControl supports a subset of the HTML 4 standard. Actuate
ignores tags it does not recognize.

RTF
AcDynamicTextControl supports a subset of the RTF 1.6 standard. Actuate
ignores tags it does not recognize.

For information about working with dynamic text controls, see Chapter 12,
Working with dynamic text controls, in Developing Advanced e.Reports.
For information about how Actuate gets font information, see Chapter 16,
Designing page layouts, in Developing Advanced e.Reports.

254

Actuate Foundation Class Reference

Class AcDynamicTextControl

Variables
Variable

Type

Description

Margins

AcMargins

Defines the space between the


contents and the outside border of the
control.
For more information, see Chapter 12,
Working with dynamic text controls,
in Developing Advanced e.Reports.

Properties
Property

Group

Type

Description

AutoSplit
Vertical

Pagination

AcAutoSplit

Specifies how the control is


split vertically:
 DefaultSplitting
(default)if the control
contains a dynamic text
control, it is split to
maximize use of space
within a flow.
Otherwise, the control is
not split.
 DoNotSplitthe control
is not split.
 SplitIfNecessarythe
control is split if its
parent frame cannot fit
as the first nondecoration frame within
a flow.
 SplitIfPossiblethe
control is split when
possible to maximize
use of space within a
flow.

Boolean

Specifies whether or not the


tagged text is retained.
The default is False. This
means that tagged text is
discarded after it is
processed.

KeepTaggedText N/A

Chapter 3, AFC classes

255

Class AcDynamicTextControl

256

Property

Group

Type

Description

LineSpacing

Text Layout

Double

The multiplier to be applied


to determine the amount of
vertical space between
lines. The value is
multiplied by the line
height to calculate line
spacing.
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

LineWidth
Padding

Text Layout

AcPercentage The percentage by which


the line width is increased
over the width of the text in
the line.
The default is 7.5%.
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

Margins

Margins

AcMargins

The space between the


contents and the outside
border of the control.
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

MinimumLine
Height

Text Layout

AcTwips

The minimum height of a


line in the control.
The default is 0".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

Actuate Foundation Class Reference

Class AcDynamicTextControl

Property

Group

Type

Description

NoSplitBottom

Pagination

AcTwips

The height of the area that


must not be split at the
bottom of the control.
The default is 0".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

NoSplitTop

Pagination

AcTwips

The height of the area that


must not be split at the top
of the control.
The default is 0".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

SpaceBetween
Lines

Text Layout

AcTwips

The fixed amount of space


to add between lines within
a paragraph.
The default is 0".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

SpaceBetween
Paragraphs

Text Layout

AcTwips

The amount of vertical


space between paragraphs.
The default is 0.08".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

Chapter 3, AFC classes

257

Class AcDynamicTextControl

258

Property

Group

Type

Description

SplitMargin
Bottom

Pagination

AcTwips

The margin between the


bottom edge and the
contents of segments of
split controls. This does not
apply to the last segment.
The default is 0".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

SplitMarginTop

Pagination

AcTwips

The margin between the


top edge and the contents
of segments of split
controls. This does not
apply to the first segment.
The default is 0".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

TabPadding

Text Layout

AcPercentage The percentage by which


the width of the text chunk
is increased when
calculating the text chunks
end position to determine
the next tab stop.
The default is 7.5%.
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

Actuate Foundation Class Reference

Class AcDynamicTextControl

Property

Group

Type

Description

TabSpacing

Text Layout

AcTwips

The spacing between tab


stops, and the indentation
of bulleted and numbered
lists.
The default is 0.5".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced
e.Reports.

WidowAnd
OrphanControl

Pagination

Boolean

True (default) prevents the


last line of a paragraph
from appearing at the top
of a page by itself (widow)
and the first line of a
paragraph from appearing
at the bottom of the page by
itself (orphan).

Methods
Method

Type

Description

BuildText( )

Boolean

Parses tagged text and populates


the internal data structure of the
control.

GetAvailableHeight( )

AcTwips

Returns the height of the area in


which text can be placed within the
control.

GetAvailableWidth( )

AcTwips

Returns the width of the area in


which text can be placed within the
control.

GetFixedWidthFontF
aceName( )

String

Returns the name of the font to use


as the default fixed-width font.

GetPlaintext( )

String

Returns the Plaintext value.

GetTaggedText( )

String

Returns the TaggedText value.

GetText( )

String

Returns the Plaintext value.

KeepTaggedText( )

Boolean

Returns the value of the


KeepTaggedText property.

Chapter 3, AFC classes

259

AcDynamicTextControl::BuildText method

Method

Type

Description

LineSpacing( )

Double

Returns the value of the


LineSpacing property.

LineWidthPadding( )

AcPercentage

Returns the value of the


LineWidthPadding property.

MinimumLineHeight
()

AcTwips

Returns the value of the


MinimumLineHeight property.

ProcessText( )

N/A

Creates the internal data structure.

SpaceBetweenLines( )

AcTwips

Returns the value of the


SpaceBetweenLines property.

SpaceBetween
Paragraphs( )

AcTwips

Returns the value of the


SpaceBetweenParagraphs property.

TabPadding( )

AcPercentage

Returns the value of the TabPadding


property.

TabSpacing( )

AcTwips

Returns the value of the TabSpacing


property.

TextFormat( )

AcTextFormat Returns the value of the TextFormat


property.

WidowAndOrphan
Control( )

Boolean

SetTaggedText( )

Sets the TaggedText value

Returns the value of the


WidowAndOrphanControl
property.

AcDynamicTextControl::BuildText method
Parses tagged text and populates the internal data structure of the control.

Syntax
Description

Function BuildText( ) As Boolean


The BuildText( ) method parses tagged text and populates the internal data
structure of the control.
If the operation is unsuccessful, report execution fails.

Returns

True if the operation is successful.


False if the operation is unsuccessful.

260

Actuate Foundation Class Reference

AcDynamicTextControl::GetAvailableHeight method

AcDynamicTextControl::GetAvailableHeight method
Returns the height of the area in which text can be placed within the control.

Syntax
Description

Funtion GetAvailableHeight( ) As AcTwips


The GetAvailableHeight( ) method returns the height of the area in which text
can be placed within the control. This is the height of the control after it is
resized, less the top and bottom margins.

AcDynamicTextControl::GetAvailableWidth method
Returns the width of the area in which text can be placed within the control.

Syntax
Description

Funtion GetAvailableWidth( ) As AcTwips


The GetAvailableWidth( ) method returns the width of the area in which text
can be placed within the control. This is the width of the control, less the left
and right margins.

AcDynamicTextControl::GetFixedWidthFontFaceName
method
Returns the name of the font to use as the default fixed-width font.

Syntax
Description

Function GetFixedWidthFontFaceName( ) As String


The GetFixedWidthFontFaceName( ) method returns the name of the font to
use as the default fixed-width font.

AcDynamicTextControl::GetPlaintext method
Returns the Plaintext value.

Syntax
Description

Function GetPlaintext( ) As String


The GetPlaintext( ) method returns the controls Plaintext value. The Plaintext
value is the tagged text without the text formatting tags.

Chapter 3, AFC classes

261

AcDynamicTextControl::GetTaggedText method

AcDynamicTextControl::GetTaggedText method
Returns the TaggedText value.

Syntax
Description

Function GetTaggedText( ) As String


The GetTaggedText( ) method returns the controls TaggedText value. The
TaggedText value is the tagged text including the text formatting tags.

AcDynamicTextControl::GetText method
Returns the text of the control or a specified portion of text.

Syntax
Parameter

Function GetText( ) As String


start
The start position of the returned text.
length
The number of characters to return.

Description

The GetText( ) method returns the specified portion of text without the text
formatting tags.

AcDynamicTextControl::KeepTaggedText method
Returns the value of the KeepTaggedText property.

Syntax
Description

Function KeepTaggedText( ) As Boolean


The KeepTaggedText( ) returns the value of the KeepTaggedText property.

AcDynamicTextControl::LineSpacing method
Returns the value of the LineSpacing property.

Syntax
Description

262

Function LineSpacing( ) As Double


The LineSpacing( ) method returns the value of the LineSpacing property.

Actuate Foundation Class Reference

AcDynamicTextControl::LineWidthPadding method

AcDynamicTextControl::LineWidthPadding method
Returns the value of the LineWidthPadding property.

Syntax
Description

Function LineWidthPadding( ) As AcPercentage


The LineWidthPadding( ) method returns the value of the LineWidthPadding
property.

AcDynamicTextControl::MinimumLineHeight
method
Returns the value of the MinimumLineHeight property.

Syntax
Description

Function MinimumLineHeight( ) As AcTwips


The MinimumLineHeight( ) method returns the value of the
MinimumLineHeight property.

AcDynamicTextControl::ProcessText method
Creates the internal data structure.

Syntax
Description
See also

Sub ProcessText( )
The ProcessText( ) method creates the internal data structure for the control
and calls the BuildText( ) method.
AcDynamicTextControl::BuildText method

AcDynamicTextControl::SetTaggedText method
Sets the TaggedText value.

Syntax
Parameter
Description

Sub SetTaggedText( newText As String )


newText
The value to set.
The SetTaggedText( ) method sets the TaggedText value for the control.

Chapter 3, AFC classes

263

AcDynamicTextControl::SpaceBetweenLines method

AcDynamicTextControl::SpaceBetweenLines
method
Returns the value of the SpaceBetweenLines property.

Syntax
Description

Function SpaceBetweenLines( ) As AcTwips


The SpaceBetweenLines( ) method returns the value of the SpaceBetweenLines
property.

AcDynamicTextControl::SpaceBetweenParagraphs
method
Returns the value of the SpaceBetweenParagraphs property.

Syntax
Description

Function SpaceBetweenParagraphs( ) As AcTwips


The SpaceBetweenParagraphs( ) method returns the value of the
SpaceBetweenParagraphs property.

AcDynamicTextControl::TabPadding method
Returns the value of the TabPadding property.

Syntax
Description

Function TabPadding( ) As AcPercentage


The TabPadding( ) method returns the value of the TabPadding property.

AcDynamicTextControl::TabSpacing method
Returns the value of the TabSpacing property.

Syntax
Description

264

Function TabSpacing( ) As AcTwips


The TabSpacing( ) method returns the value of the TabSpacing property.

Actuate Foundation Class Reference

AcDynamicTextControl::TextFormat method

AcDynamicTextControl::TextFormat method
Returns the value of the TextFormat property.

Syntax
Description

Function TextFormat( ) As AcTextFormat


The TextFormat( ) method returns the value of the TextFormat property.

AcDynamicTextControl::WidowAndOrphanControl
method
Returns the value of the WidowAndOrphanControl property.

Syntax
Description

Function WidowAndOrphanControl( ) As Boolean


The WidowAndOrphanControl( ) method returns the value of the
WidowAndOrphanControl property.

Chapter 3, AFC classes

265

Class AcEllipseControl

Class AcEllipseControl
A class you use in the report design to display a circle.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcEllipseControl

Description

An ellipse is a constant control that is fully defined at design time. The


attributes you are likely to set are the color of the ellipse, its size, and the style
of the line around the ellipse.
Although the properties of an ellipse are typically set in the Design Editor, you
can write code to change its attributes at run time when the Factory builds it.
For example, you could change the color of the ellipse depending on the value
of another control. To accomplish this task, you can override the ellipses
Build( ) or BuildFromRow( ) method. The Build method you override depends
on whether the ellipse is contained in a frame that processes data rows or not.
For more information about when Build( ) and BuildFromRow( ) are called,
see AcBaseFrame::Build method and AcDataFrame::BuildFromRow method.

Variables
Variable

Type

Description

FillColor

AcColor

The color with which to fill the shape.

LineStyle

AcLineStyle

The style of line to draw around the shape.

Properties

266

Property

Type

Description

FillColor

AcColor

The color with which to fill the shape.

LineStyle

AcLineStyle

The style of line to draw around the shape.


You can set the lines color, its width, and
type (single, double, dotted, and so on).

Actuate Foundation Class Reference

Class AcEllipseControl

Considerations for HTML reports


HTML does not provide an ellipse graphic. Therefore, the ellipse control is not
supported in HTML reports. If you include an ellipse control in your design,
AFC ignores it when generating the HTML output.

Chapter 3, AFC classes

267

Class AcExcelApp

Class AcExcelApp
Creates an Excel object within a report design.
AcExcelApp

Description

The AcExcelApp is the root class that contains all instances of classes you use
to generate and work with Excel files. You create other objects using functions
in AcExcelApp or functions in other objects created from AcExcelApp.
For information about how Actuate gets font information for rendering Excel
files, see Chapter 16, Designing page layouts, in Developing Advanced
e.Reports.

Methods
Method

Type

Description

AddWorkbook( )

AcExcelWorkbook Adds a new Excel file.

DeleteWorkbook( )

N/A

FindWorkbook( )

AcExcelWorkbook Finds a workbook.

New( )

N/A

Creates an Excel application


instance.

SetFontScalingFactor( )

N/A

Specifies scaling factor to


apply to a font.

Deletes a workbook.

AcExcelApp::AddWorkbook method
Adds a new workbook.

Syntax
Description

AddWorkbook( ) As AcExcelWorkbook
The AddWorkbook( ) method adds a new workbook. Actuate assigns a default
filename to the workbook, for example Book1.xls. The default path to the
workbook is the directory that contains the .roi file. For reports generated on
the server, the path listed in the AC_VIEWSERVER_EXCELOUTPUTDIR
environment variable is the default path.
To change either the filename or the default path for the file, use the
AcExcelWorkbook::SaveAs method. To set a default directory for all Excel
output, use the AC_VIEWSERVER_EXCELOUTPUTDIR environment
variable.

268

Actuate Foundation Class Reference

AcExcelApp::DeleteWorkbook method

Returns

The handle to the workbook if the workbook is added.


An empty handle if an error occurred.

Example

Dim excelWorkbook As AcExcelWorkbook


Set excelWorkbook = excelApp.AddWorkbook()

AcExcelApp::DeleteWorkbook method
Deletes a workbook.

Syntax

Function DeleteWorkbook( wbName As String )


or
Function DeleteWorkbook( workbook As AcExcelWorkbook )

Parameter

wbName
The fully qualified name of the workbook to delete.
workbook
The handle to the workbook to delete.

Description

The DeleteWorkbook( ) method deletes a workbook.

Example

excelApp.DeleteWorkbook(workbookName);
excelApp.DeleteWorkbook (excelWorkbook)

AcExcelApp::FindWorkbook method
Finds the specified workbook.

Syntax

Function FindWorkbook( wbName As String ) As AcExcelWorkbook


or
Function FindWorkbook( index As Integer ) As AcExcelWorkbook

Parameter

wbName
The fully qualified name of the workbook to find.
index
The index of the workbook to find.

Description

The FindWorkbook( ) method finds the specified workbook.

Chapter 3, AFC classes

269

AcExcelApp::New method

Returns

The handle to the workbook if found.


An empty handle if the workbook is not found or if an error occurred.

Example

The following example shows how to find the workbook myWorkbook:


Dim excelWorkbook As AcExcelWorkbook
excelWorkbook = excelApp.FindWorkbook( myWorkbook )

AcExcelApp::New method
Creates a new Excel application instance.

Syntax
Description
Returns
Example

Sub New( )
The New( ) method creates a new Excel application. New() should be the first
method you call.
The handle to the class.
The following example creates an new Excel application instance:
Dim excelApp As AcExcelApp
Set excelApp = New AcExcelApp

AcExcelApp::SetFontScalingFactor method
Specifies a scaling factor to apply to the specified font.

Syntax
Parameter

Sub SetFontScalingFactor( face As String, scalingFactor As Double, startSize


As Integer, endSize As Integer )
face
The font to which to apply the scaling factor.
scalingFactor
The scaling factor. Column width is adjusted if scalingFactor is greater than
one.
startSize
The smallest font size for which to apply the font scaling factor.
endSize
The largest font size for which to apply the font scaling factor.

270

Actuate Foundation Class Reference

AcExcelApp::SetFontScalingFactor method

Description

The SetFontScalingFactor( ) method specifies a scaling factor to apply to the


specified font.
SetFontScalingFactor( ) applies the scaling factor to font sizes between
startSize to endSize. If either startSize or endSize is zero, the scaling factor is
applied to every font size. If either startSize or endSize is less than zero, the
scaling factor is not applied.

Chapter 3, AFC classes

271

Class AcExcelCell

Class AcExcelCell
The class that represents a cell in a worksheet.
AcExcelRange
AcExcelCell

Description

The AcExcelCell class represents a cell in a worksheet.


An AcExcelCell object is an AcExcelRange object in which
rowNumTop=rowNumBottom, columnNumLeft=columnNumRight.
AcExcelCell does not override any methods of the AcExcelRange class.
The cell can contain up to 4,095 characters.

272

Actuate Foundation Class Reference

Class AcExcelColumn

Class AcExcelColumn
The class that represents a column in a worksheet.
AcExcelRange
AcExcelColumn

Description

The AcExcelColumn class represents a column in a worksheet.


AcExcelColumn is derived from AcExcelRange class.
An AcExcelColumn object is an AcExcelRange object in which
columnNumLeft=columnNumRight.

Methods
Method

Type

Description

GetColumnWidth( )

Double

Returns the column width.

SetColumnWidth( )

N/A

Sets the column width.

AcExcelColumn::GetColumnWidth method
Returns the column width.

Syntax
Description
Returns

Function GetColumnWidth( ) As Double


The GetColumnWidth() method returns column width, in number of
characters, that can be displayed in a column.
The column width if it was explicitly set.
The default column width, 8.43 characters, if the column width was not
explicitly set.

AcExcelColumn::SetColumnWidth method
Sets the column width.

Syntax
Parameter

Sub SetColumnWidth( width As Double )


width
The number of characters that can be displayed in the column. Must be 0-255.
Chapter 3, AFC classes

273

AcExcelColumn::SetColumnWidth method

Description

274

The SetColumnWidth( ) method sets the number of characters that can be


displayed in a column with a standard font. The default column width is 8.43,
the standard font is Arial size 10. The default value is assigned when the
column is created.

Actuate Foundation Class Reference

Class AcExcelRange

Class AcExcelRange
The base class for the AcExcelCell, AcExcelColumn, and AcExcelRow classes.
AcExcelRange

Description

AcExcelRange class is the base class for AcExcelCell, AcExcelColumn, and


AcExcelRow classes.
An AcExcelCell object is an AcExcelRange object in which
rowNumTop=rowNumBottom and columnNumLeft=columnNumRight.
An AcExcelColumn object is an AcExcelRange object in which
columnNumLeft=columnNumRight.
An AcExcelRow object is an AcExcelRange object in which
rowNumTop=rowNumBottom.
Unless otherwise stated, all Set functions set the property for every cell in the
range. If all cells contain the same property values, Get functions return the
property value. If any cell contains different property values, Get functions
return null.

Methods
Method

Type

Description

GetBackgroundColor( )

AcColor

Returns the background color.

GetBorder( )

AcExcel
Border

Returns the border.

GetFont( )

AcFont

Returns the font.

GetHorizonalAlignment( )

AcExcelH
Alignment

Returns the horizontal


alignment.

GetIndent( )

Integer

Returns the number of indent


characters.

GetMergeCells( )

Boolean

Returns the setting of the


merge cells option.

GetNumberFormat( )

String

Returns the string used for


formatting the numeric data.

GetValue( )

Variant

Returns the contents of the


range.

GetValueAsDate( )

Date

Converts the contents of the


range into date format.

Chapter 3, AFC classes

275

AcExcelRange::GetBackgroundColor method

Method

Type

Description

GetVerticalAlignment( )

AcExcelV
Alignment

Returns the vertical alignment.

GetWrapText( )

Boolean

Returns the setting of the wrap


text option.

SetBackgroundColor( )

N/A

Sets the background color.

SetBorder( )

N/A

Sets the border.

SetFont( )

N/A

Sets the font.

SetHorizontalAlignment( )

N/A

Sets the horizontal alignment.

SetIndent( )

N/A

Sets the number of characters


for the indent.

SetMergeCells( )

N/A

Turns the merge cells option


on and off.

SetNumberFormat( )

N/A

Sets the format used for


displaying numeric data.

SetValue( )

N/A

Sets the contents for the range.

SetVerticalAlignment( )

N/A

Sets the vertical alignment for


the range.

SetWrapText( )

N/A

Turns the wrap text option on


and off.

AcExcelRange::GetBackgroundColor method
Returns the background color.

Syntax
Description
Returns

Function GetBackgroundColor( ) As AcColor


The GetBackgroundColor( ) method retrieves the background color of the
range.
The background color if it is the same for all cells in the range.
Null if the background color is different for any cells in the range.

AcExcelRange::GetBorder method
Returns the border.

Syntax

276

Function GetBorder( which As Integer ) As AcExcelBorder

Actuate Foundation Class Reference

AcExcelRange::GetFont method

Parameter

Description
Returns

which
The side of the border to access. Values are:


ExcelBorderTop

ExcelBorderBottom

ExcelBorderLeft

ExcelBorderRight

The GetBorder( ) method returns the border of the range.


The border if the border attribute for the specified border is the same for all
cells in the range.
Null if the border attribute for the specified border is different for any cells in
the range.

AcExcelRange::GetFont method
Returns the font used for the range.

Syntax
Description
Returns

Function GetFont( ) As AcFont


The GetFont( ) method returns the font used for the range.
The font used for the range if all cells in the range use the same font.
Null if cells in the range use different fonts.

AcExcelRange::GetHorizontalAlignment method
Returns the horizontal alignment setting.

Syntax
Description
Returns

Function GetHorizontalAlignment( ) As AcExcelHorizontalAlignment


The GetHorizontalAlignment( ) method returns the setting of the horizontal
alignment option.
The horizontal alignment setting if it is the same for all cells in the range.
Null if the horizontal alignment setting of any cell in the range is different.

Chapter 3, AFC classes

277

AcExcelRange::GetIndent method

AcExcelRange::GetIndent method
Returns the indent value.

Syntax
Description
Returns

Function GetIndent( ) As Integer


The GetIndent( ) method returns the number of characters that the text in the
range is indented from the left edge of the cell.
The number of indent characters if the indent is set and is the same for all cells
in the range.
0 if the indent for any cell is not set.
Null if the indent is different for any cells in the range.

AcExcelRange::GetMergeCells method
Returns the setting of the merge cells option.

Syntax
Description
Returns

Function GetMergeCells( ) As Boolean


The GetMergeCells( ) method returns the setting of the merge cells option.
True if cells in the range are merged.
False if the merge cells option is set to False for all cells in the range or if the
merge cells option is set to True for all cells but the cells are not merged.
Null if the merge cells setting of any cell in the range is different.

AcExcelRange::GetNumberFormat method
Returns the string used for formatting numbers in the range.

Syntax
Description

Returns

Function GetNumberFormat( ) As String


The GetNumberFormat( ) method returns the string used for formatting
numbers in the range. The string might be different from the string passed in
SetNumberFormat( ) method.
The string used for formatting the range if all cells in the range use the same
format string.
Null if cells in the range use different format strings.

278

Actuate Foundation Class Reference

AcExcelRange::GetValue method

AcExcelRange::GetValue method
Returns the contents of the range.

Syntax
Description

Returns

Function GetValue( ) As Variant


The GetValue( ) method returns the contents of the range. If the return value is
not a String or Date, Actuate Basic converts return values into the appropriate
format. If the return value is a Date, use the GetValueAsDate( ) method instead
of the GetValue( ) method.
The contents of the range if all cells in the range contain the same value.
Null if calls in the range contain different values.

See also

AcExcelRange::GetValueAsDate method

AcExcelRange::GetValueAsDate method
Converts the contents of the range into date format.

Syntax
Description
Returns

Function GetValueAsDate( ) As Date


The GetValueAsDate( ) method converts the contents of the range into date
format.
The date value of the range if all cells in the range contain the same value.
Null if cells in the range contain different values.

AcExcelRange::GetVerticalAlignment method
Returns the vertical alignment setting.

Syntax

Function GetVerticalAlignment( ) As AcExcelVerticalAlignment

Description

The GetVerticalAlignment( ) method returns the setting of the vertical


alignment option.

Returns

The vertical alignment setting if it is the same for all cells in the range.
Null if the vertical alignment setting of any cell in the range is different.

Chapter 3, AFC classes

279

AcExcelRange::GetWrapText method

AcExcelRange::GetWrapText method
Returns the setting of the wrap text option.

Syntax
Description
Returns

Function GetWrapText( ) As Boolean


The GetWrapText( ) method returns the setting of the wrap text option.
The wrap text setting if it is the same for all cells in the range.
Null if the wrap text setting of any cell in the range is different.

AcExcelRange::SetBackgroundColor method
Sets the background color.

Syntax
Parameter
Description

Sub SetBackgroundColor( color As AcColor )


color
The color to set.
The SetBackgroundColor( ) method sets the background color for the range.
You can use up to 48 custom colors in a workbook. This includes colors used
for the background colors, the font, and the border.
If the color is invalid, SetBackgroundColor( ) sets the background color to
white.

AcExcelRange::SetBorder method
Sets the border.

Syntax
Parameter

Sub SetBorder( border As AcExcelBorder, which As Integer )


border
The side of the border to set. Values are:


ExcelBorderTop

ExcelBorderBottom

ExcelBorderLeft

ExcelBorderRight

By default, no border is set.

280

Actuate Foundation Class Reference

AcExcelRange::SetFont method

which
The border to set.

Description

The SetBorder( ) method sets the border for the range.


If the border color is invalid, SetBorder( ) sets the border color to black.
If the border style value is greater than zero, SetBorder( ) sets the border style
to zero (ExcelBorderNone). If the border style value is greater than 13,
SetBorder( ) sets the border style to 13 (ExcelBorderSlantedDashDot).

AcExcelRange::SetFont method
Sets the font properties.

Syntax
Parameter
Description

Sub SetFont( font As AcFont )


font
The font to set.
The SetFont( ) method sets the font properties for the range. You can use up to
512 fonts in a single file, including default Excel fonts. You can use up to 48
custom colors. These limits include colors used for the background colors, the
font, and the border.
If the font color is invalid, SetFont( ) sets the font color to black.
If the font size is less than one, SetFont( ) sets the font size to one. If the font
size is greater than 409, SetFont( ) sets the font size to 409.
If the font name is an empty sting, SetFont( ) sets the font to Arial.

AcExcelRange::SetHorizontalAlignment method
Sets horizontal alignment option.

Syntax
Parameter

Sub SetHorizontalAlignment( h As AcExcelHorizontalAlignment )


h
The horizontal alignment option to set. Values are:


ExcelHAlignGeneral

ExcelHAlignLeft

ExcelHAlignCenter

ExcelHAlignRight

ExcelHAlignFill
Chapter 3, AFC classes

281

AcExcelRange::SetIndent method

Description

ExcelHAlignJustify

ExcelHAlignCenterAcrossSelection

The SetHorizontalAlignment( ) method sets horizontal alignment options for


the range.
If <h> is less than zero, SetHorizontalAlignment( ) sets horizontal alignment
to zero (ExcelHAlignmentGeneral). If <h> is greater than six,
SetHorizontalAlignment( ) sets horizontal alignment to six
(ExcelHAlignmentCenterAcrossSelection).

AcExcelRange::SetIndent method
Sets the indent property.

Syntax
Parameter
Description

Sub SetIndent( indent As Integer )


indent
The number of characters to indent. Must be 0-15.
The SetIndent( ) method sets the indent for the range. Specify the indent as an
integer denoting the number of characters to indent. If indent is set, the
horizontal alignment type automatically changes to left (indent).
If <indent> is less than zero, SetIndent( ) sets the indent to zero. If <indent> is
greater than 15, SetIndent( ) sets the indent to 15.

AcExcelRange::SetNumberFormat method
Sets the number format properties.

Syntax
Parameter
Description

Sub SetNumberFormat( numFormat As String )


numFormat
The format to set.
The SetNumberFormat( ) method sets the number format properties for the
range.
To display numbers in a specific format, use SetNumberFormat( ) in
conjunction with SetValue( ). When using SetNumberFormat( ) with
SetValue( ), you must call SetValue( ) before SetNumberFormat( ).

282

Actuate Foundation Class Reference

AcExcelRange::SetNumberFormat method

You specify the format using the constants listed in the following table or a
different format.

Example

Constant

Format

ExcelCurrencyFloat

$0.00

ExcelCurrencyFloatWithSeparator

$#,##0.00

ExcelCurrencyInt

$0

ExcelCurrencyIntWithSeparator

$#,##0

ExcelExp

0.00E+00

ExcelFixed

0.00

ExcelFloat

0.00

ExcelFloatWithSeparator

#,##0.00

ExcelGeneralDate

mm/dd/yyyy hh:mm:ss AM/PM

ExcelGeneralNumber

General

ExcelInt

ExcelIntWithSeparator

#,##0

ExcelLongDate

dddd, mmmm dd, yyyy

ExcelLongTime

hh:mm:ss AM/PM

ExcelMediumDate

dd-mmm-yy

ExcelMediumTime

h:mm AM/PM

ExcelPercent

0.00%

ExcelShortDate

mm/dd/yyyy

ExcelShortTime

hh:mm

ExcelStandard

0.00

The following example shows how to use the SetNumberFormat( ) and


SetValue( ) methods to display a date in the mm-yyyy format:
Dim date As Date
date=DateValue (11-1982)
Cell.SetValue (date)
Cell.SetNumberFormat (mm-yyyy)

See Also

AcExcelRange::SetValue method

Chapter 3, AFC classes

283

AcExcelRange::SetValue method

AcExcelRange::SetValue method
Sets the contents for every cell in the range.

Syntax
Parameter
Description

Sub SetValue( val As Variant )


val
The value to set.
The SetValue( ) method sets the contents of every cell in the range.
If the numeric value is of Date or Currency type, SetValue( ) displays the
number in default Date or Currency Format. To display numbers in a different
format, use SetValue( ) in conjunction with SetNumberFormat( ). When using
SetNumberFormat( ) with SetValue( ), you must call SetValue( ) before
SetNumberFormat( ).
The maximum number of characters for cell string values is 255.

See Also

AcExcelRange::SetNumberFormat method

AcExcelRange::SetVerticalAlignment method
Sets the vertical alignment option.

Syntax
Parameter

Description

Sub SetVerticalAlignment( v As AcExcelVerticalAlignment )


v
The vertical alignment option to set. Values are:


ExcelVAlignTop

ExcelVAlignCenter

ExcelVAlignBottom

ExcelVAlignJustify

The SetVerticalAlignment( ) method sets vertical alignment option for the


range.
If <v> is less than zero, SetHorizontalAlignment( ) sets horizontal alignment to
zero (ExcelVAlignmentTop). If <h> is greater than three,
SetHorizontalAlignment( ) sets horizontal alignment to three
(ExcelVAlignJustify).

284

Actuate Foundation Class Reference

AcExcelRange::SetMergeCells method

AcExcelRange::SetMergeCells method
Turns the merge cells option on and off.

Syntax
Parameter
Description

Sub SetMergeCells( mergeCells As Boolean )


mergeCells
True turns on the merge cells option. False turns off the merge cells option.
The SetMergeCellsOption( ) method turns the merge cells option on and off.
When the merge cells option is on, the top left-most cell contains the option
settings and all other cells contain the default settings. These settings include
value, font, and alignment of the first cell in the range with a set value.
Setting <mergeCells> to True on both a column and a row in a single
worksheet causes all cells in the worksheet to be created. This setting can use
all virtual memory in a system.

AcExcelRange::SetWrapText method
Turns the wrap text option on and off.

Syntax
Parameter
Description

Sub SetWrapText( wrapText As Boolean )


wrapText
True turns on the wrap text option. False turns off wrap text option.
The SetWrapText( ) method turns the wrap text option on and off.

Chapter 3, AFC classes

285

Class AcExcelRow

Class AcExcelRow
The class that represents a row in a workbook.
AcExcelRange
AcExcelRow

Description

The AcExcelRow class represents a row in a workbook. AcExcelRow is derived


from AcExcelRange class.
An AcExcelRow object is an AcExcelRange object in which
rowNumTop=rowNumBottom.

Methods
Method

Type

Description

GetRowHeight( )

Double

Returns the row height, in


points.

SetRowHeight( )

N/A

Sets the row height.

AcExcelRow::GetRowHeight method
Returns the row height, in points.

Syntax
Description
Returns

Function GetRowHeight( ) As Double


The GetRowHeight( ) method returns the row height, in points.
The row height if explicitly set.
The default row height, 12.75 points, if not explicitly set.

286

Actuate Foundation Class Reference

AcExcelRow::SetRowHeight method

AcExcelRow::SetRowHeight method
Sets the row height.

Syntax

Sub SetRowHeight( height As Double )

Parameter

height
The row height in points. Must be 0-409.

Description

The SetRowHeight( ) method sets the row height. The default row height is
12.75 points. The default value is assigned when the row is created. Excel
automatically adjusts row height to fit row contents, therefore, you usually do
not need to call SetRowHeight( ).

Chapter 3, AFC classes

287

Class AcExcelWorkbook

Class AcExcelWorkbook
Contains information about a specific workbook.
AcExcelWorkbook

Description

Use AcExcelWorkbook to add, find, save, and delete worksheets in a


workbook.To instantiate the class, use the AcExcelApp::AddWorkbook
method.

Methods
Method

Type

Description

AddWorksheet( )

AcExcelWork
Sheet

Adds a worksheet to the


workbook.

DeleteWorksheet( )

N/A

Deletes a worksheet from the


workbook.

FindWorksheet( )

AcExcelWork
Sheet

Finds a worksheet in the


workbook.

GetFullName( )

String

Returns the name of the


workbook.

Save( )

N/A

Saves the workbook.

SaveAs( )

N/A

Saves the workbook with the


specified filename.

AcExcelWorkbook::AddWorksheet method
Adds a worksheet to the workbook.

Syntax
Description

Returns

Function AddWorksheet( ) As AcExcelWorksheet


The AddWorksheet( ) method adds a worksheet to the workbook. The new
worksheet is added after the most recently created worksheet.
AddWorksheet( ) assigns a unique label to the worksheet, such as Sheet1.
The handle to the worksheet if it is added.
An empty handle if an error occurred.

Example

288

Dim excelWorksheet As AcExcelWorksheet


Set excelWorksheet = excelWorkbook.AddWorksheet()

Actuate Foundation Class Reference

AcExcelWorkbook::DeleteWorksheet method

AcExcelWorkbook::DeleteWorksheet method
Deletes a worksheet from the workbook.

Syntax

Function DeleteWorksheet( wsName As String )


or
Function DeleteWorksheet( worksheet As AcExcelWorksheet )

Parameter

wsName
The fully qualified name of the worksheet to delete.
worksheet
The handle to the worksheet to delete.

Description

The DeleteWorksheet( ) method deletes a worksheet from the workbook if the


worksheet exists.

Example

excelWorkbook.DeleteWorksheet(worksheetName);
excelApp.DeleteWorksheet (excelWorksheet)

AcExcelWorkbook::FindWorksheet method
Finds the specified worksheet.

Syntax

Function FindWorksheet( wsName As String ) As AcExcelWorksheet


or
Function FindWorksheet( index As Integer ) As AcExcelWorksheet

Parameter

wsName
The unique name of the worksheet to find.
index
The index of the worksheet to find.

Description
Returns

The FindWorksheet( ) method finds the specified worksheet within the


workbook.
The handle to the worksheet if found.
An empty handle if the worksheet is not found or if an error occurred.

Example

The following example shows how to find the worksheet Sheet1:


Dim excelWorksheet As AcExcelWorksheet
Set excelWorksheet = excelWorkbook.FindWorksheet( Sheet1 )

Chapter 3, AFC classes

289

AcExcelWorkbook::GetFullName method

AcExcelWorkbook::GetFullName method
Returns the fully qualified name of the workbook.

Syntax
Description
Returns

Function GetFullName( ) As String


The GetFullName( ) method returns the fully qualified name of the workbook.
The name of the workbook.

AcExcelWorkbook::Save method
Saves the workbook.

Syntax
Description

Function Save( )
The Save( ) method saves the workbook to disk. For reports generated on the
client, the workbook is saved in the directory that contains the .roi file. For
reports generated on the server, the workbook is saved in directory specified
in the AC_VIEWSERVER_EXCELOUTPUTDIR environment variable. If the
AC_VIEWSERVER_EXCELOUTPUTDIR environment variable is not set,
reports generated on the server are saved in the $AC_SERVER_HOME/Excel
directory.
If the workbook is successfully saved, the report generates without an error. If
an error occurs during this operation, an error message to signal an I/O error
is logged and the Excel file is not saved.

AcExcelWorkbook::SaveAs method
Saves the workbook with a specified name.

Syntax
Parameter

Description

290

Function SaveAs( wbName As String ) As Integer


wbName
The file name. Can be fully qualified or only the file name. If only the file name
is specified, the workbook is saved in the default directory. Can not be an
empty string or a Null value.
The SaveAs( ) method saves the file to disk with the specified name. The
specified name overwrites the default name assigned when the workbook is
created. For reports generated on the client, the workbook is saved in the
directory that contains the .roi file. For reports generated on the server, the
workbook is saved in directory specified in the

Actuate Foundation Class Reference

AcExcelWorkbook::SaveAs method

AC_VIEWSERVER_EXCELOUTPUTDIR environment variable. If the


AC_VIEWSERVER_EXCELOUTPUTDIR environment variable is not set,
reports generated on the server are saved in the $AC_SERVER_HOME/Excel
directory.
If the workbook is successfully saved, the report generates without an error. If
an error occurs during this operation, an error message to signal an I/O error s
logged and the Excel file is not saved.

Chapter 3, AFC classes

291

Class AcExcelWorksheet

Class AcExcelWorksheet
Contains information about a specific worksheet.
AcExcelWorksheet

Description

A worksheet contains cells that can be identified by the cells unique


coordinate composed of a row number and a column number. Use
AcExcelWorksheet to manipulate cells in a worksheet. Use the
AcExcelWorkbook::AddWorksheet method to obtain the handle to the
worksheet.
The worksheet can contain up to 65,536 rows and up to 256 columns.

Methods
Method

Type

Description

Autofit( )

N/A

Adjusts the column width to fit


the contents.

GetCell( )

AcExcelCell

Returns the handle to the cell to


access.

GetColumn( )

AcExcelColumn Returns a handle to the column


to access.

GetDisplayGridlines( ) Boolean

Returns the gridline settings.

GetName( )

String

Returns the name of the


worksheet.

GetRange( )

AcExcelRange

Returns the handle to the cells


to access.

GetRow( )

AcExcelRow

Returns the handle to the row


to access.

SetDisplayGridlines( )

N/A

Turns the gridlines on or off.

SetName( )

N/A

Sets the name of the worksheet.

AcExcelWorksheet::Autofit method
Adjusts the column width to fit the contents.

Syntax

292

Function AutoFit( )

Actuate Foundation Class Reference

AcExcelWorksheet::GetCell method

Description

The AutoFit( ) method adjusts the column width of all cells in the worksheet to
fit the contents of the tallest cell.

AcExcelWorksheet::GetCell method
Returns the handle to the cell to access.

Syntax
Parameter

Function GetCell( row As Integer, col As Integer ) As AcExcelCell


row
The row number of the cell to access. Must be 1-65,536.
col
The column number of the cell to access. Must be 1-256.

Description
Returns

The GetCell( ) method returns a cell in the worksheet. GetCell( ) creates the cell
if it does not exist.
The handle to the cell if successful.
An empty handle if the row or column is out of range.

Example

The following example returns a handle to cell 2 in row 1:


Dim cell As AcExcelCell
Set cell = excelWorksheet.GetCell(1, 2)

AcExcelWorksheet::GetColumn method
Returns the handle to the column to access.

Syntax
Parameter
Description
Returns

Function GetColumn( col As Integer ) As AcExcelColumn


col
The column number to access. Must be 1-256.
The GetColumn( ) method accesses a column in the worksheet.
The handle to the column if successful.
An empty handle if the column is out of range.

Example

The following example returns a handle to column 1:


Dim range As AcExcelColumn
Set range = excelWorksheet.GetColumn(1)

Chapter 3, AFC classes

293

AcExcelWorksheet::GetDisplayGridlines method

AcExcelWorksheet::GetDisplayGridlines method
Returns the gridline setting.

Syntax
Description
Returns

Function GetDisplayGridlines( ) As Boolean


The GetDisplayGridlines( ) method returns the gridline setting.
True if the gridlines are turned on.
False if the gridlines are turned off.

AcExcelWorksheet::GetName method
Returns the name of the worksheet.

Syntax
Description
Returns

Function GetName( ) As String


The GetName( ) method returns a unique name of the worksheet.
The name of the worksheet.

AcExcelWorksheet::GetRange method
Returns the handle to the cells to access.

Syntax
Parameter

Function GetRange( cell1 As AcExcelCell, cell2 As AcExcelCell ) As


AcExcelRange
cell1
The handle to the first cell to access.
cell2
The handle to the last cell to access.

Description
Returns

The GetRange( ) method returns a handle to the range of cells you want to
access. GetRange( ) creates the range if it does not exist.
The handle to the range if successful.
An empty handle if an error occurred.

294

Actuate Foundation Class Reference

AcExcelWorksheet::GetRow method

Example

The following example returns a range of cells A1 through C3:


Dim cell1 As AcExcelCell
Dim cell2 As AcExcelCell
Set cell1 = excelWorksheet.GetCell ( 1,1 )
Set cell2 = excelWorksheet.GetCell ( 3,3 )
range = excelWorksheet.GetRange ( cell1, cell2 )

AcExcelWorksheet::GetRow method
Returns the handle to the row to access.

Syntax
Parameter
Description
Returns

Function GetRow( row As Integer ) As AcExcelRow


row
The row number to access. Must be 1-65,536.
The GetRow( ) method returns a handle to the row you want to access.
GetRow( ) creates the row if it does not exist.
The handle to the row if successful.
An empty handle if the row is out of range.

Example

The following example returns a handle to column 1:


Dim row As AcExcelRow
Set row = excelWorksheet.GetRow(1)

AcExcelWorksheet::SetDisplayGridlines method
Turns the gridlines on and off.

Syntax
Parameter
Description

Sub SetDisplayGridlines( bGrid As Boolean )


bGrid
True turns on the gridlines. False turns off the gridlines.
The SetDisplayGridlines( ) method turns the gridlines on or off. The default
setting is True.

Chapter 3, AFC classes

295

AcExcelWorksheet::SetName method

AcExcelWorksheet::SetName method
Sets the name of the worksheet.

Syntax
Parameter
Description

296

Function SetName( wsName As String )


wsName
The name to set.
The SetName( ) method sets the name of the worksheet. The name of the
worksheet must be unique in a workbook. If the worksheet with the specified
name exists in the workbook, the name remains unchanged.

Actuate Foundation Class Reference

Class AcFlow

Class AcFlow
An abstract base class that defines the logic for placing frames in a flow, the
printable area of a page.
AcComponent
AcReportComponent
AcVisualComponent
AcFlow

Description

AcFlow is the abstract base class for AcTopDownFlow, the flow you use in a
report design. AcFlow defines the protocol that specifies how subpages,
content, header, and footer frames are added to a flow, and how flow space is
allocated. Its derived class, AcTopDownFlow, implements the details for
executing those tasks.

Factory protocol
Method

Task

Start( )

Prepares the flow for receiving frames.

AddFrame( )

Adds each frame to the flow.

Finish( )

Identifies that the flow has received all the


frames that it will get.

Subclassing AcFlow
Create a subclass directly from AcFlow if your report requires a flow other
than a top-down flow. For example, you might need a grid layout that flows
from left to right. AcFlow defines several methods that you must override to
specify implementation details. These methods, called pure virtual methods,
are empty in AcFlow.

Considerations for HTML reports


HTML documents are all one long page. HTML does not support the concept
of page breaks. Therefore, the AFC ignores pagination classes, including this
one, when generating HTML for a report.

Chapter 3, AFC classes

297

Class AcFlow

Variables
Variable

Type

Description

BackgroundColor

AcColor

Specifies the background color of the


flow. Default is TransparentColor.

Border

AcBorder

Specifies the border, if any, to draw


around the flow.

Rounding

AcRounding

Specifies if the corners of the flow are


rounded.

Margins

AcMargins

The space to allow between the border


and the contained frames.

Property

Type

Description

BackgroundColor

AcColor

Specifies the background color of the


flow. Default is TransparentColor.

Border

AcBorder

Specifies the border, if any, to draw


around the flow.

Rounding

AcRounding

Specifies if the corners of the flow are


rounded.

Margins

AcMargins

The space to allow between the border


and the contained frames.

Properties

Methods

298

Method

Type

Description

AddFrame( )

N/A

Adds a frame to the flow.

AddHeader( )

Boolean

Adds a page header to the flow.

AddSubpage( )

Boolean

Adds a subpage to the flow.

AdjustFooter( )

N/A

Resizes the amount of space within the


flow reserved for the page footer.

CanFitFrame( )

Boolean

Checks if the flow contains enough


space to contain the given frame.

CanFitHeight( )

Boolean

Checks if the flow can contain the height


of the component.

GetFreeSpace( )

AcSize

Returns the unused space in the flow.

Actuate Foundation Class Reference

AcFlow::AddFrame method

See also

Method

Type

Description

GetInsideSize( )

AcSize

Returns the size of the content rectangle.

IsEmpty( )

Boolean

Indicates whether or not the flow


contains a data frame.

ReleaseSpace( )

N/A

Releases reserved space back to the flow.

ReserveSpace( )

N/A

Reserves a part of the available space


within the flow.

ResetSpace( )

N/A

Resets the amount of space in the flow to


zero.

ShiftFooterUp( )

Boolean

Moves the footer so it appears


immediately after the last frame in the
flow.

Class AcBasePage
Class AcTopDownFlow

AcFlow::AddFrame method
Adds the frame to the flow.

Syntax
Parameter
Description

See also

Sub AddFrame( frame As AcFrame )


frame
The frame to add to the flow.
Derived classes override AddFrame( ), a pure virtual method in AcFlow, to
specify how frames are placed in the flow. If you create a subclass from
AcFlow, you must override AddFrame( ) to specify the implementation
details.
AcPageList::EjectPage method

AcFlow::AddHeader method
Adds a page header frame to the flow.

Syntax
Parameter

Function AddHeader( header As AcFrame ) As Boolean


header
The page header frame.

Chapter 3, AFC classes

299

AcFlow::AddSubpage method

Description

Returns

Derived classes override AddHeader( ), a pure virtual method in AcFlow, to


specify how header frames are placed at the top of the flow. If you create a
subclass from AcFlow, you must override AddHeader( ) to specify the
implementation details.
True if the page header was added to the flow.
False if the page header was not added to the flow.

AcFlow::AddSubpage method
Adds a subpage to the flow.

Syntax
Parameter
Description

Returns

Function AddSubpage( subpage As AcSubpage ) As Boolean


subpage
The subpage to add to the flow.
Derived classes override AddSubPage( ), a pure virtual method in AcFlow, to
specify how subpages are placed in the flow. If you create a subclass from
AcFlow, you must override AddSubPage( ) to specify the implementation
details.
True if the subpage was added to the flow.
False if the subpage was not added to the flow.

AcFlow::AdjustFooter method
Changes the available space in the flow to contain the correct amount of space
for the page footer.

Syntax
Parameter
Description

300

Sub AdjustFooter( footer As AcFrame )


footer
The page footer.
Derived classes override the AdjustFooter( ) method in AcFlow to modify the
amount of space in the flow reserved for the page footer. When the AFC starts
the flow, it reserves space for the page footer in the flow. Later, as the page
footer is built, the size of the page footer can change based on the data row
processing. AdjustFooter can modify the amount of space reserved for the
page footer to account for any page footer size differences between the
estimate made by the AFC at flow start time and the final size of the page
footer after it is finished.

Actuate Foundation Class Reference

AcFlow::CanFitFrame method

AcFlow::CanFitFrame method
Checks if the flow contains enough space to contain a frame.

Syntax
Parameter
Description

Returns

Function CanFitFrame( frame As AcBaseFrame ) As Boolean


frame
The frame to check for fit.
Derived classes override CanFitFrame( ), a pure virtual method in AcFlow, to
specify how to determine if a frame fits in a flow. If you create a subclass from
AcFlow, you must override CanFitFrame( ) to specify the implementation
details.
True if the frame will fit into the flow.
False if the frame will not fit into the flow.

AcFlow::CanFitHeight method
Checks if the flow contains enough space to contain a frame.

Syntax
Parameter
Description

Returns

Function CanFitHeight ( height As Integer ) As Boolean


height
The height of the component.
Derived classes override CanFitHeight( ), a pure virtual method in AcFlow, to
specify how to determine if a frame fits in a flow. If you create a subclass from
AcFlow, you must override CanFitHeight( ) to specify the implementation
details.
True if the frame will fit into the flow.
False if the frame will not fit into the flow.

AcFlow::GetFreeSpace method
Returns the unused space in the flow.

Syntax
Description

Function GetFreeSpace( ) As AcSize


Free space is the area of the flow minus the space occupied by frames in the
flow. Derived classes override GetFreeSpace( ), a pure virtual method in
AcFlow, to specify how to return the available space. If you create a subclass

Chapter 3, AFC classes

301

AcFlow::GetInsideSize method

from AcFlow, you must override GetFreeSpace( ) to specify the


implementation details.

Returns

The amount of unused space, in twips, available in the flow.

AcFlow::GetInsideSize method
Returns the size of the content rectangle.

Syntax
Description
See also

Function GetInsideSize( ) As AcSize


Returns the size of the content rectangle, after allowing for margins.
Class AcTopDownFlow

AcFlow::IsEmpty method
Indicates whether or not the flow contains a data frame.

Syntax
Description

Function IsEmpty( ) As Boolean


The IsEmpty( ) method indicates whether or not the flow contains a data
frame such as content or before or after frame.

AcFlow::ReleaseSpace method
Releases space back to the flow.

Syntax
Parameter

Sub ReleaseSpace( width As Integer, height As Integer )


width
The width (in twips) of the space to release.
height
The height (in twips) of the space to release.

Description

302

In derived classes, ReleaseSpace( ) releases back to the flow all or part of the
space reserved with ReserveSpace( ). Derived classes override ReleaseSpace( ),
a pure virtual method in AcFlow, to specify how to free space. If you create a
subclass from AcFlow, you must override ReleaseSpace( ) to specify the
implementation details.

Actuate Foundation Class Reference

AcFlow::ReserveSpace method

Be careful when using ReleaseSpace( ). If you release too much space, the next
frame added to the flow might overlap existing contents of the flow.

See also

AcFlow::ReserveSpace method

AcFlow::ReserveSpace method
Reserves a part of the available space within the flow.

Syntax
Parameter

Sub ReserveSpace( width As Integer, height As Integer )


width
The width, in twips, of the space to reserve.
height
The height, in twips, of the space to reserve.

Description

Derived classes override ReserveSpace( ), a pure virtual method in AcFlow, to


specify how to reserve space. If you create a subclass from AcFlow, you must
override ReserveSpace( ) to specify the implementation details.
In derived classes, you can call ReserveSpace( ) to expand a frame or subpage,
or to leave a gap between frames.

See also

AcFlow::ReleaseSpace method

AcFlow::ResetSpace method
Sets the amount of space in the flow to zero.

Syntax
Description

See also

Sub ResetSpace( )
Derived classes can override ResetSpace( ), a pure virtual method in AcFlow,
to reset the amount of space available for frames remaining in the flow to zero.
If you create a subclass from AcFlow, you must override ResetSpace( ) only if
you want the AFC to perform automatic balancing of the contents between
multiple flows. You request automatic balancing by setting the BalanceFlows
property on the page or subpage to Y.
AcFlow::ReleaseSpace method
AcFlow::ReserveSpace method

Chapter 3, AFC classes

303

AcFlow::ShiftFooterUp method

AcFlow::ShiftFooterUp method
Moves the footer so it appears immediately after the last content frame in the
flow.

Syntax
Parameter
Description

Sub ShiftFooterUp( footer As AcFrame )


footer
The page footer frame.
Derived classes override ShiftFooterUp( ), a pure virtual method in AcFlow, to
specify where to place a footer frame. If you create a subclass from AcFlow,
you must override ShiftFooterUp( ) to specify the implementation details.
By default, page footers appear at the bottom of the flow. In derived classes,
you can call ShiftFooterUp( ) to move a specified footer so that it appears just
after the other frames in the flow.

304

Actuate Foundation Class Reference

Class AcFrame

Class AcFrame
The base class for frames used in a report design.
AcComponent
AcReportComponent
AcVisualComponent
AcBaseFrame
AcDataFrame
AcFrame

Description

A frame is a container for visual components such as controls, graphs, and


other nested frames. Data controls must be placed in a frame. Constant
controls can be placed in a frame or a page.
In a report design, a frame and its contents are typically associated with a data
row. For example, if a data row contains name, address, and telephone data,
you would place in your report design a frame and three data controls within
that frame to display the data.
The framework uses a standard protocol for creating frames, making changes
in the design of a report easy. For example, you can easily move a frame from
the Content slot to the PageHeader slot of a report section.
You can set margins within a frame to define the viewing area within that
frame. The Margins variable defines the space outside the content region. The
following figure illustrates the components of the content region, the margin,
and the border origin with margins set.
Border origin
Frame
Border
Content region

Margin

The content region can have a border. The figure also illustrates the border
layout in relation to the content region and frame.

Chapter 3, AFC classes

305

Class AcFrame

Considerations for HTML reports


When an AcFrame is rendered as an HTML table, the following properties
govern its appearance.
Appearance
property

Type

Description

BackgroundColor

AcColor

Determines the color of each cell in


the HTML table, unless a control in
that cell overrides the color.

Border.Pen

AcLineStyle

Set this property to anything other


than NullLine to set a border around
the HTML table.

Border.Width

AcLineStyle

Determines the width of the border


around the HTML table if Border.Pen
is not set to NullLine.

Margins.Top and
Margins.Bottom

AcMargins

Determines the amount of


whitespace above and below the
HTML table.

Margins.Left and
Margins.Right

AcMargins

Determines the amount of white


space on either side of the table.

Factory protocol
A frame is contained by some other component, such as a section or another
frame. The frames container calls the methods in AcFrame.

306

Method

Task

New( )

Container instantiates the frame.

Start( )

Container starts the frame.

N/A

Frame instantiates all of its controls and


nested frames.

Build( )
BuildFromRow( )

Container builds the frame.

Finish( )

Container finishes the frame and does any


cleanup work.

N/A

Container places the frame on the page.

Actuate Foundation Class Reference

Class AcFrame

Viewer Protocol
Task
1 The user decides which page to display. The Viewer then
asks that page to display.
2 A page consists of flows that have frames in them. A page
asks the frames to display.
3 A frame asks the controls that it contains to display.
4 The individual controls within each frame display.

Subclassing AcFrame
Each time you drag a frame off the palette and drop it into the report design,
the Design Editor instantiates a subclass of AcFrame. You can use the Method
Editor to override methods in the derived class to do special processing or
change default properties of the frame.

Variables
Variable

Type

Description

Margins

AcMargins

The amount of space reserved outside the


border. This space is not filled with the
background color. The overall frame size as
given by the size instance variable includes
both the outside and inside margins.

Shadow

AcShadow

The depth and color of the shadow. The


default is no shadow.

Rounding

AcRounding

The amount of rounding to apply to the


border. The default is no rounding.

Chapter 3, AFC classes

307

Class AcFrame

Properties

308

Property

Group

Type

AutoSplit
Vertical

Pagination AcAutoSplit

Specifies how the frame or control


is split vertically over multiple
pages:
 DefaultSplitting (default)if
the frame contains a dynamic
text control, split the frame to
maximize use of space within
a flow. Otherwise, the frame is
not split.
 DoNotSplitdo not split. Text
that does not fit within a flow
is truncated.
 SplitIfNecessarysplit the
frame if it cannot fit as the first
non-decoration frame in a
flow.
 SplitIfPossiblesplit to
maximize use of space within
a flow.
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced e.Reports.

Custom
DHTML
Footer

DHTML

String

Enables use of custom browser


scripting control in an HTML
form.
CustomDHTMLFooter is ignored
by the PDF converter and has no
effect on Actuate Viewer.

Custom
DHTML
Header

DHTML

String

Enables use of custom browser


scripting control in an HTML
form.
CustomDHTMLFooter is ignored
by the PDF converter and has no
effect on Actuate Viewer.

Actuate Foundation Class Reference

Description

Class AcFrame

Property

Group

Type

Description

Margins

Shadow

AcMargins

The amount of space reserved


outside the border. This space is
not filled with the background
color. The overall frame size as
given by the size instance variable
includes both the outside and
inside margins.

NoSplit
Bottom

Pagination AcTwips

The height of the area that must


not be split at the bottom of the
frame.
The default is 1".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced e.Reports

NoSplitTop

Pagination AcTwips

The height of the area that must


not be split at the top of the frame.
The default is 1".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced e.Reports.

Rounding

Windows
Viewer
Only

AcRounding The amount of rounding to apply


to the border. The default is no
rounding.

Shadow

Shadow

AcShadow

The depth and color of the


shadow. The default is no shadow.

Chapter 3, AFC classes

309

Class AcFrame

Property

Group

Type

SplitMargin
Bottom

Pagination AcTwips

SplitMargin
Top

Pagination AcTwips

Description
The margin between the bottom
edge and the contents of segments
of split frames.
The margin is not applied to the
last segment.
The default is 0".
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced e.Reports.
The margin between the top edge
and the contents of segments of
split frames. The margin is not
applied to the first segment.
The default is 0.
For more information, see
Chapter 12, Working with
dynamic text controls, in
Developing Advanced e.Reports.

Methods

310

Method

Type

Description

AddToAdjustSizeList( )

N/A

Propagates resizing and


repositioning requests from a nested
or page decoration frame from the
frames contents to the frames
visual container.

AdjustContentVertical
Geometry( )

N/A

Adjusts the height of the frame and


the vertical position and height of
the frames contents.

AutoSplitVertical( )

AcAutoSplit

Returns the value of the


AutoSplitVertical property.

Custom
DHTMLFooter( )

String

Enables use of custom browser


scripting control in an HTML form.

Custom
DHTMLHeader( )

String

Enables use of custom browser


scripting control in an HTML form.

GetBorderOrigin( )

AcPoint

Returns the upper left coordinates


of the border.

Actuate Foundation Class Reference

AcFrame::AddToAdjustSizeList method

Method

Type

Description

GetBorderRect( )

AcRectangle Returns the origin and size of the


rectangle.

GetBorderSize( )

AcSize

Returns the size of the border.

NoSplitBottom( )

AcTwips

Returns the value of the


NoSplitBottom property.

NoSplitTop( )

AcTwips

Returns the value of the NoSplitTop


property.

SplitMarginBottom( )

AcTwips

Returns the value of the


SplitMarginBottom property.

SplitMarginTop( )

AcTwips

Returns the value of the


SplitMarginTop property.

AcFrame::AddToAdjustSizeList method
Propagates resizing and repositioning requests from a nested or page
decoration frame from the frames contents to the frames visual container.

Syntax
Parameter
Description

Sub AddToAdjustSizeList( component As AcVisualComponent )


component
The AddToAdjustSizeList( ) method propagates resizing and repositioning
requests from a nested or page decoration frame from the frames contents to
the frames visual container.

AcFrame::AdjustContentVerticalGeometry method
Adjusts the height of the frame and the vertical position and height of the
frames contents.

Syntax
Description

Sub AdjustContentVerticalGeometry( )
The AdjustContentVerticalGeometry( ) method adjusts the height of the frame
and the vertical position and height of the frames contents.

Chapter 3, AFC classes

311

AcFrame::AutoSplitVertical method

AcFrame::AutoSplitVertical method
Returns the value of the AutoSplitVertical property.

Syntax
Description

Function AutoSplitVertical( ) As AcAutoSplit


The AutoSplitVertical( ) method returns the value of the AutoSplitVertical
property.

AcFrame::CustomDHTMLFooter method
Enables use of custom browser scripting control in an HTML form.

Syntax
Description
See also

Function CustomDHTMLFooter( ) As String


Override CustomDHTMLFooter( ) to enable use of custom browser scripting
control in an HTML form. CustomDHTMLFooter( ) is called at view time.
AcFrame::CustomDHTMLHeader method

AcFrame::CustomDHTMLHeader method
Enables use of custom browser scripting control in an HTML form.

Syntax
Description
See also

Function CustomDHTMLHeader( ) As String


Override CustomDHTMLHeader( ) to enable use of custom browser scripting
control in an HTML form. CustomDHTMLHeader( ) is called at view time.
AcFrame::CustomDHTMLFooter method

AcFrame::GetBorderOrigin method
Returns the upper-left coordinates of the border.

Syntax
Description
Returns

312

Function GetBorderOrigin( ) As AcPoint


The origin coordinates are the upper-left position of the border.
The origin coordinates of the border.

Actuate Foundation Class Reference

AcFrame::GetBorderRect method

See also

AcFrame::GetBorderRect method
AcFrame::GetBorderSize method

AcFrame::GetBorderRect method
Returns the origin and size of the content area.

Syntax
Description
Returns
See also

Function GetBorderRect( ) As AcRectangle


The rectangle defines the size and position of the border.
The upper-left coordinates and the size of the border.
AcFrame::GetBorderOrigin method
AcFrame::GetBorderSize method

AcFrame::GetBorderSize method
Returns the size of the content area.

Syntax
Description
Returns
See also

Function GetBorderSize ( ) As AcSize


The size of the rectangle is the space that it takes up within a frame.
The size, in twips, of the content area.
AcFrame::GetBorderOrigin method
AcFrame::GetBorderRect method

AcFrame::NoSplitBottom method
Returns the value of the NoSplitBottom property.

Syntax
Description

Function NoSplitBottom( ) As AcTwips


The NoSplitBottom( ) method returns the value of the NoSplitBottom
property.

Chapter 3, AFC classes

313

AcFrame::NoSplitTop method

AcFrame::NoSplitTop method
Returns the value of the NoSplitTop property.

Syntax
Description

Function NoSplitTop( ) As AcTwips


The NoSplitTop( ) method returns the value of the NoSplitTop property.

AcFrame::SplitMarginBottom method
Returns the value of the SplitMarginBottom property.

Syntax
Description

Function SplitMarginBottom( ) As AcTwips


The SplitMarginBottom( ) method returns the value of the SplitMarginBottom
property.

AcFrame::SplitMarginTop method
Returns the value of the SplitMarginTop property.

Syntax
Description

314

Function SplitMarginTop( ) As AcTwips


The SplitMarginTop( ) method returns the value of the SplitMarginBottom
property.

Actuate Foundation Class Reference

Class AcGraph

Class AcGraph
An abstract base class that defines the core characteristics of all graph types.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcGraph

Description

AcGraph provides the interface to the Actuate graph engine. It defines the
properties of graphs, such as the type and general format of the graph, x-axis
and y-axis attributes, legend information, and so on. It also defines the
methods that compute x and y values, format graph labels, and return
information about where a graph is clicked at view time.
The classes you use in a report designAcDetailGraph, AcSummaryGraph,
and AcHLCGraphderive from AcGraph. These subclasses implement the
methods for building graphs from data rows. HTML reports treat graphs as
.JPEG images.

Methods
Method

Type

Description

CalculateEndingValue( )

Variant

Returns the ending date of the


graph.

CalculateRangeUnit( )

N/A

Calculates a new range unit if a


default value has been set.

CalculateStartingValue( )

Variant

Returns the starting date of the


graph.

CalculateTickIntervalUnit( )

N/A

Calculates a new tick interval unit


if a default value was set.

ComputeLabels( )

N/A

Computes the labels.

ComputeMinMax( )

N/A

Computes the x and y minimum


and maximum values.

ComputeYOverlayMinMax( )

N/A

Computes the minimum and


maximum values for the y-axis
for the overlay graph.

Chapter 3, AFC classes

315

Class AcGraph

Method

Type

Description

CustomYOverlayLabels( )

N/A

Calculates the y labels of the


overlay axis.

FormatXLabel( )

String

Formats an x label value.

FormatYLabel( )

String

Formats a y label value.

FormatYOverlayLabel( )

N/A

Formats an overlay axis label.

GetHitPoint( )

Integer

Returns the value of the category


that was clicked at view time.

GetHitSet( )

Integer

Returns the value of the series


that was clicked at view time.

GetHitXValue( )

Double

Returns the x value of the data


point that was clicked at view
time.

GetHitYValue( )

Double

Returns the y value of the data


point that was clicked at view
time.

GetSeriesKey( )

Variant

If an expression in the SeriesKey


is entered, returns the Key code of
the data row.

General properties and variables

316

Property

Type

Description

AxisColor

AcColor

Color of the axis lines.

BackgroundColor

AcColor

Background color of the graph.


Ignored if BackgroundIsClear is
True.

BackgroundIsClear

Boolean

True if the background of the


graph is clear.

GraphBackground
Color

AcColor

Color of the rectangle around the


graph.

GraphBackground
IsClear

Boolean

True if the rectangle around the


graph itself (not including titles or
the legend) is clear.

Actuate Foundation Class Reference

Class AcGraph

Property

Type

Description

GraphBorderStyle

AcGraphBorder
Style

Style for the border around the


graph:
 GraphNoBorder
 GraphSolidBorder
 GraphDropShadow
 GraphShadowAndBorder
 GraphRaisedBorder
 GraphLoweredBorder

GraphType

AcGraphType

The graph type is one of the


following:
 Graph2DArea
 Graph3DArea
 Graph2DBar
 Graph3DBar
 Graph2DPie
 Graph3DPie
 GraphCandleStick
 GraphHLC
 GraphLine
 GraphOHLC
 GraphScatter
 GraphTape

GridColor

AcColor

Color of the grid lines


superimposed over the graph.

Title properties and variables


Property

Type

Description

AxisTitleFont

AcFont

Font of the x- and y-axis titles.

LabelFont

AcFont

Font for the x- and y-axis value labels,


and of the data labels adjacent to each
point.

TitleBackground
Color

AcColor

Background color for the rectangle


enclosing the title.

TitleBackground
IsClear

Boolean

True indicates that the area under the


title should be transparent.

Chapter 3, AFC classes

317

Class AcGraph

Property

Type

Description

TitleBorderStyle

AcGraph
BorderStyle

TitleFont

AcFont

Font for the graph title.

TitleText

String

Title that appears above the graph.

Style for the border around the title:


GraphNoBorder
 GraphSolidBorder
 GraphDropShadow
 GraphShadowAndBorder
 GraphRaisedBorder
 GraphLoweredBorder

Data properties and variables

318

Property

Type

Description

DataSetCount

Integer

The number of data series. This value


is computed when the graph is
displayed. When designing the graph,
this property contains the number of
sample points to show. Do not set
DataSetCount to 1 for a multiple series
graph.

PointCount

Integer

The number of points in each data


series. This value is computed when
the graph is displayed. When
designing the graph, this property
contains the number of sample points
to show.

PointLabelColor

AcColor

The color of the labels displayed for


each point.

PointLabelStyle

AcGraphPoint
LabelStyle

The style of the labels displayed for


each point:
 GraphNoPointLabels
 GraphTextLabels
 GraphNumericLabels
 GraphColoredTextLabels
 GraphColoredNumericLabels

Actuate Foundation Class Reference

Class AcGraph

Property

Type

Description

Points( )

AcGraphPoint

An array of size (PointCount or


SeriesCount) that holds the data for
each point in the graph. Each point is a
structure that has the following
members:
 X As Double
 Y As Double
 Z As Double
 Label As String
(Variable only)

SampleMax

Maximum for the sample values.


(Property only)

SampleMin

Minimum for the sample values.


(Property only)

ValuesColorList

A comma-separated list of color names


or RGB values to identify different
data series.

Expressions properties and variables


Property

Type

YOverlayValueExp Expression

Description
Allows users to specify a value
expression for the overlay graph.

Chapter 3, AFC classes

319

Class AcGraph

X-axis properties and variables

320

Property

Type

Description

Range

Integer

The total number of units to be


displayed along the x-axis.
This property is validated at run time.
The default value is 1.

RangeUnit

AcGraphUnitType

The unit used for the Range. The values


are:
 GraphDefaultUnit: The system
calculates the Range and RangeUnit
and ignores the value of Range.
 GraphDayUnit: The unit is days.
 GraphHourUnit: The unit is hours.
 GraphNumberUnit: The unit is
numbers.
 GraphMinuteUnit: The unit is
minutes.
 GraphMonthUnit: The unit is
months.
 GraphQuarterUnit: The unit is
quarters.
 GraphWeekUnit: The unit is weeks.
The week must start on a Sunday.
 GraphYearUnit: The unit is years.

RoundTo

AcGraphRoundTo

Specifies how data is rounded:


 GraphRoundToInterval: Rounding
is based on the TickInterval unit.
 GraphRoundToRange: Rounding is
based on the RangeUnit.
The default is GraphRoundToInterval.

TickInterval

Integer

The number of units (specified in


TickIntervalUnit) between tick marks.
The number of tick marks displayed is
calculated by dividing the Range by
the TickInterval.
This property is validated at run time.
The default value is 1.

Actuate Foundation Class Reference

Class AcGraph

Property

Type

Description

TickInterval
Unit

AcGraphUnitType

XAxis
Position

AcGraph
XAxisPosition

XAxisStyle

AcGraph
AxisStyle

The unit used for the TickInterval:


GraphDefaultUnit: For
AcDetailGraph, the system
calculates the interval. For
AcSummaryGraph, the system sets
TickIntervalUnit to
GraphMonthUnit.
 GraphDayUnit: The interval is days.
 GraphHourUnit: The interval is
hours.
 GraphNumberUnit: The interval is
numbers.
 GraphMinuteUnit: The interval is
minutes.
 GraphMonthUnit: The interval is
months. This is the default for
AcSummaryGraph.
 GraphQuarterUnit: The interval is
quarters.
 GraphWeekUnit: The interval is
weeks. The week must start on a
Sunday.
 GraphYearUnit: The interval is
years.


The position of the x-axis:


GraphXAxisAuto
 GraphXAxisBottom
 GraphXAxisNone
 GraphXAxisTop
Determines how origin is calculated:
GraphZeroOrigin: The origin is 0.
 GraphAutoOrigin: The system
calculates the origin.
 GraphCustomOrigin: The origin is
specified in the graph design.

XLabelCount

Integer

The number of x-axis labels in the


XLabels( ) array. (Variable only)

XLabel
Format

String

The format string used to create custom


x-axis labels.

Chapter 3, AFC classes

321

Class AcGraph

Property

Type

Description

XLabels( )

String

The x-axis labels. (Variable only)

XLabelsList

322

A comma-separated list of quoted


x-axis values. (Property only)

XLabelStyle

AcGraphLabel
Style

The kind of labels to show along the xaxis:


 GraphNoLabels
 GraphAutoLabels
 GraphCustomLabels
 GraphExpressionLabels

XMajorGrid
Style

AcLinePen

The style of line to draw for the major


grid lines:
 DashDotDotLine
 DashDotLine
 DashLine
 DotLine
 DoubleLine
 InsideFrameBorder
 NullLine
 ShortDotLine
 SingleLine

XMajorTick
Count

Integer

For graphs with x values, this is the


number of ticks to display. For graphs
without x values, this is the frequency
of the ticks.

XMajorTick
Style

AcGraphTick
Style

The kind of tick marks to include:


 GraphNoTicks
 GraphAutoTicks
 GraphCustomTicks

XMax

Double

Sets the maximum x-axis limits. This


value is computed when the graph is
displayed. When the graph is being
designed, this value is used for
displaying sample data.

XMin

Double

Sets the minimum x-axis limits. This


value is computed when the graph is
displayed. When the graph is being
designed, this value is used for
displaying sample data.

Actuate Foundation Class Reference

Class AcGraph

Property

Type

Description

XMinorGrid
Style

AcLinePen

The style of line to draw for the minor


grid lines.

XShow
MinorTicks

Boolean

True indicates the graph displays


minor tick marks. If so, there will
always be five minor tick marks
between major tick marks.

XTitle

String

The text of the label to show for the xaxis.

XTitleBack
groundColor

AcColor

The background color of the x-axis title.

XTitle
Background
IsClear

Boolean

True means the x title background is


transparent.

XTitleBorder
Style

AcGraph
BorderStyle

The style of the rectangle that encloses


the x-axis title:
 GraphNoBorder
 GraphSolidBorder
 GraphDropShadow
 GraphShadowAndBorder
 GraphRaisedBorder
 GraphLoweredBorder

XValueSet

AcGraph
XValueSet

Indicates how many x values are


available in the Points( ) array:
 GraphDefaultXValues: No x values
are available, the graph should
provide default spacing along the xaxis.
 GraphXValuePerDataSet: There is
one set of x values provided in the
points for the first (or only) data set
that apply to all points.
 GraphXValuePerPoint: Each point
has its own x value.

XVertical
Labels

Boolean

True to show x-axis labels vertically


instead of horizontally.

Chapter 3, AFC classes

323

Class AcGraph

Y-axis properties and variables


Property

Type

Description

YAxisPosition

AcGraph
YAxisPosition

The position of the y-axis:


 GraphYAxisAuto
 GraphYAxisLeft
 GraphYAxisNone
 GraphYAxisRight

YAxisStyle

AcGraph
AxisStyle

The location of the graph


origin:
 GraphZeroOrigin: The
origin is 0.
 GraphAutoOrigin: The
system calculates the
origin.
 GraphCustomOrigin: The
origin is specified in the
graph design.

YLabelCount

Integer

The number of y-axis labels in


the YLabels( ) array. (Variable
only)

YLabelFormat

String

The format string used to


create custom y-axis labels.

YLabels( )

String

The set of custom y-axis labels.


If used, it must be of the size
given by YMajorTickCount +
1. (Variable only)

YLabelsList

YLabelStyle

324

A comma-separated list of
quoted y-axis values.
(Property only)
AcGraphLabel
Style

Actuate Foundation Class Reference

The kind of labels to show


along the y-axis:
 GraphNoLabels
 GraphAutoLabels
 GraphCustomLabels
 GraphIntervalLabels

Class AcGraph

Property

Type

Description

YMajorGridStyle

AcLineStyle

The style of line to draw for


the major grid lines:
 DashDotDotLine
 DashDotLine
 DashLine
 DotLine
 DoubleLine
 InsideFrameBorder
 NullLine
 ShortDotLine
 SingleLine

YMajorTickCount

Integer

For graphs with y values, this


is the number of ticks to
display. For graphs without y
values, this is the frequency of
the ticks.

YMajorTickStyle

AcGraphTick
Style

The kind of tick marks to


include:
 GraphNoTicks
 GraphAutoTicks
 GraphCustomTicks

YMax

Double

Sets the maximum y-axis


limits. This value is computed
when the graph is displayed.
When the graph is being
designed, this value is used for
displaying sample data.

YMin

Double

Sets the minimum y-axis


limits. This value is computed
when the graph is displayed.
When the graph is being
designed, this value is used for
displaying sample data.

YMinorGridStyle

AcLineStyle

The style of line to draw for


the minor grid lines:
 GraphDefaultLines
 GraphPatternLines
 GraphThickLines

Chapter 3, AFC classes

325

Class AcGraph

326

Property

Type

Description

YMinorTicks

Boolean

True indicates the graph


displays minor tick marks. If
so, there will always be five
minor tick marks between
major tick marks.

YTickInterval

Integer

The number of units between


tick marks of the y-axis.
The default value is 1.
To compute labels based on
YTickInterval, the YLabelStyle
property must be set to
GraphIntervalLabels.

YTitle

String

The text of the label to show


for the y-axis.

YTitleBackground
Color

AcColor

The background color of the yaxis title.

YTitleBackground
IsClear

Boolean

True means the Y-title


background is transparent.

YTitleBorderStyle

AcGraphBorder
Style

The style of the rectangle that


encloses the y-axis title:
 GraphNoBorder
 GraphSolidBorder
 GraphDropShadow
 GraphShadowAndBorder
 GraphRaisedBorder
 GraphLoweredBorder

YTitleOrientation

AcGraph
YOrientation

Determines how the text


appears for the y-axis title. The
default is Up, which rotates
the text 90 degrees
counterclockwise:
 GraphYLabelHoriz
 GraphYLabelUp
 GraphYLabelDown

YVerticalLabels

Boolean

True to show y-axis labels


rotated 90 degrees.

Actuate Foundation Class Reference

Class AcGraph

Y-overlay properties and variables


Property

Type

Description

YOverlayAxisStyle

AcGraphAxisStyle

The location of the overlay


graph origin:
 GraphZeroOrigin: The
origin is 0.
 GraphAutoOrigin: The
system calculates the
origin.
 GraphCustomOrigin: The
origin is specified in the
graph design.

YOverlayDisplay

Boolean

Indicates whether the overlay


graph is to be drawn. Must be
set to True for the YOverlay
properties to take effect. If the
base graph is not of the
supported types, the YOverlay
Display property is ignored.
The default is False.

YOverlayKeyValue

String

The value of the series key that


corresponds to the overlay
graph.
The default is an empty string
which indicates that the last
series in the graph is the
overlay graph data.

YOverlayLabel
Format

String

The format of the overlay


label.

YOverlayLabelStyle

AcGraphLabel
Style

The type of label to show:


 GraphNoLabels
 GraphAutoLabels
 GraphCustomLabels
 GraphExpressionLabels
 GraphIntervalLabels

YOverlayLineColor

AcColor

The color of the overlay line.


The default is Black.

YOverlayLinePattern

AcLinePen

The pattern of the overlay line.


The default is Auto.

Chapter 3, AFC classes

327

Class AcGraph

328

Property

Type

Description

YOverlayLineStyle

AcGraphLineStyle

The type of lines to use for the


overlay graph:
 GraphAutoLines
 GraphPatternLines
 GraphThickLines
The default is Auto.

YOverlayLine
Thickness

Integer

Thickness of the overlay line.


The default is 1.

YOverlayMajorTick
Count

Integer

The number of ticks to display


on the overlay axis.

YOverlayMajorTick
Style

AcGraphTickStyle

The type of tick marks to


include on the overlay axis:
 GraphNoTicks
 GraphAutoTicks
 Graph Custom Ticks

YOverlayMax

Double

Sets the maximum y-axis


limits of the overlay graph.
This value is computed when
the graph is displayed. When
the graph is being designed,
this value is used for
displaying sample data.

YOverlayMin

Double

Sets the minimum y-axis limits


of the overlay graph. This
value is computed when the
graph is displayed. When the
graph is being designed, this
value is used for displaying
sample data.

YOverlayTickInterval Integer

The number of units between


tick marks of the overlay axis.
The default value is 1.
To compute labels based on
YOverlayTickInterval, the
YOverlayLabelStyle property
must be set to
GraphIntervalLabels.

Actuate Foundation Class Reference

Class AcGraph

Property

Type

Description

YOverlayShow
Line

Boolean

True, the default setting,


shows lines connecting the
points of the overlay graph.

YOverlayShow
Symbols

Boolean

True, the default setting,


shows symbols for each point
of the overlay graph.

YOverlayTitle

String

The title of the overlay axis.

YOverlayTitle
BackgroundColor

AcColor

The background color of the


title bar of the overlay axis.

YOverlayTitleBorder
Style

AcGraphBorder
Style

The style of the rectangle that


encloses the overlay axis title:
 GraphNoBorder
 GraphSolidBorder
 GraphDropShadow
 GraphShadowAndBorder
 GraphRaisedBorder
 GraphLoweredBorder

YOverlayTitle
Orientation

AcGraph
YOrientation

Determines how the text of the


overlay axis title reads.
 GraphYLabelHoriz: The
text reads from left to right.
 GraphYLabelUp: The text
reads from bottom to top.
 GraphYLabelDown: The
text reads from top to
bottom.
The default is
GraphYLabelUp.

YOverlayVertical
Labels

Boolean

Specifies whether labels for


the overlay axis are displayed
vertically or horizontally. True
shows labels vertically.
The default is False.

Chapter 3, AFC classes

329

Class AcGraph

Legend properties and variables

330

Property

Type

Description

LegendBackground
Color

AcColor

Background color for the legend.

LegendBackground
IsClear

Boolean

True if the legend is transparent.

LegendColorText

Boolean

True if the legend entries are the same


color as the line, point, or bar they
identify. False if they are all the color
given by LegendFont.Color.

LegendFont

AcFont

The font of the legend labels.

LegendLabelCount

Integer

The number of labels in the


LegendLabels( ) array. It should be
either 0 or DataSetCount (except for
pie charts, when it is of the size
PointCount).

LegendLabels

String

The set of legend labels. The size of


this array is DataSetCount. (Variable
only)

LegendPosition

AcGraph
Legend
Position

The position of the legend:


 GraphLegendNone
 GraphLegendTop
 GraphLegendTopRight
 GraphLegendTopLeft
 GraphLegendLeft
 GraphLegendRight
 GraphLegendBottomLeft
 GraphLegendBottom
 GraphLegendBottomRight
Legends larger than 50 characters are
truncated. If the length exceeds 25
characters, legends to be displayed at
the corners of the graph are
displayed at the bottom.

Actuate Foundation Class Reference

Class AcGraph

Property

Type

Description

LegendSize

Integer

The relative size of the legend from 0


(smallest) to 100 (largest). Size
controls the spacing of legend entries.

LegendBorderStyle

AcGraph
BorderStyle

The style of box to draw around the


legend:
 GraphNoBorder
 GraphSolidBorder
 GraphDropShadow
 GraphShadowAndBorder
 GraphRaisedBorder
 GraphLoweredBorder

Graph-specific properties and variables


Property

Type

Description

BarGrouping

AcGraphBar
Grouping

Bar chart only.


 Specifies how the bar chart groups
data:
GraphBarNoGrouping
 GraphBarCluster
 GraphBarClusterZ (3D only)
 GraphBarStack
 GraphBarStackPercentage

BarOrientation

AcGraphBar
Orientation

Bar chart only.


Specifies how the bar chart draws the
bars:
 GraphBarVertical
 GraphBarHorizontal
 GraphBarHorizontalReversed

HLCBarStyle

AcHLCBar
Style

HLC and OHLC graphs only.


Determines how the graph displays
high, low, and close tick marks:
 GraphHLCAllBars
 GraphHLCNoClose
 GraphHLCNoBars

Chapter 3, AFC classes

331

Class AcGraph

Property

Type

LineStyle

AcGraphLine Line graphs only.


Style
Identifies the kind of lines to use to plot
the data:
 GraphDefaultLines
 GraphPatternLines
 GraphThickLines

LineStylesList

332

Description

Line graphs only.


A comma-separated list of line styles;
one style for each data set.
(Property only)
 DashDotDotLine
 DashDotLine
 DashLine
 DotLine
 DoubleLine
 NullLine
 ShortDotLine
 SingleLine

LineThickness

Integer

Line and scatter graphs only.


Thickness of lines in graph-specific
units.

PointsArePercent

Boolean

Area graphs only.


True indicates that the numbers in the
points are percentage figures. If False,
then the points are absolute numbers.

ShowAsPercent

Boolean

Area graphs and pie charts only.


Draws the graph showing the
percentage of each data point as the
sum of all points in that data set. The
area always fills the full graph height.

ShowLines

Boolean

Line graphs only.


True shows lines connecting the points.

ShowSticks

Boolean

Line and scatter graphs only.


True shows lines from the y-axis to each
point.

Actuate Foundation Class Reference

AcGraph::CalculateEndingValue method

Property

Type

Description

ShowSymbols

Boolean

Line and scatter graphs only.


True shows symbols for each point.

TimeSeries

Boolean

Determines whether the graph is a time


series graph. Must be set to True to
display correct labels. If set to true, the
labels are always drawn on the x-axis.
The default is False.

AcGraph::CalculateEndingValue method
Returns the ending date of the graph.

Syntax
Description

Function CalculateEndingValue( ) As Variant


The CalculateEndingValue( ) method returns the ending point of the graph.
CalculateEndingValue( ) is called by the CustomXLabels( ) method.
Override CalculateEndingValue( ) to change the calculation of the ending date.

AcGraph::CalculateRangeUnit method
Calculates a new range unit.

Syntax
Description

Sub CalculateRangeUnit( )
The CalculateRangeUnit( ) method calculates a new range unit if the default
value has been set. CalculateRangeUnit( ) uses the tick interval values to
determine the correct unit.
CalculateRangeUnit( ) is called by the CalculateStartingValue( ) method.

AcGraph::CalculateStartingValue method
Returns the starting date of the graph.

Syntax
Description

Function CalculateStartingValue( ) As Variant


The CalculateStartingValue( ) method returns the starting point of the graph.
CalculateStartingValue( ) is called by the CustomXLabels( ) method.

Chapter 3, AFC classes

333

AcGraph::CalculateTickIntervalUnit method

Override CalculateStartingValue( ) to change the calculation of the starting


date.

AcGraph::CalculateTickIntervalUnit method
Calculates a new tick interval unit.

Syntax
Description

Sub CalculateTickIntervalUnit( )
The CalculateTickIntervalUnit( ) method calculates a new tick interval unit if
the default value was set. For AcDetailGraph, CalculateTickIntervalUnit( )
uses the largest and smallest data points to determine the best units to use so
that 5 to 7 labels are displayed in the graph.
CalculateTickIntervalUnit( ) is called by the CalculateStartingValue() method.

AcGraph::ComputeLabels method
Computes the labels for the x-axis and y-axis.

Syntax
Description

Sub ComputeLabels( )
The framework calls ComputeLabels( ) to calculate and format the labels on
the X- and y-axis. The processing that ComputeLabels( ) performs depends on
the value of the XLabelStyle and YLabelStyle properties. If you set those
properties to GraphCustomLabels, ComputeLabels( ) calls FormatXLabel( )
and FormatYLabel( ), respectively, to format the labels. If you specified a
different value for XLabelStyle and YLabelStyle, this method does nothing.
The framework will generate default labels.
If you set the TimeSeries property, this method calls the CustomXLabels( )
method.
Override ComputeLabels( ) if you want to change the way labels are
computed. If you want to change the way labels are formatted, override
FormatXLabel( ) or FormatYLabel( ).

See also

334

AcGraph::FormatXLabel method
AcGraph::FormatYLabel method

Actuate Foundation Class Reference

AcGraph::ComputeMinMax method

AcGraph::ComputeMinMax method
Computes the minimum and maximum values for each axis.

Syntax
Description

Sub ComputeMinMax( )
The ComputeMinMax( ) method computes the minimum and maximum
values for each axis if not already specified. To have ComputeMinMax
compute these values, you must set the properties appropriately:


Set XValueSet to a value other than GraphDefaultXValues.

Set YAxisStyle to GraphCustomOrigin.

AcGraph::ComputeYOverlayMinMax method
Computes the minimum and maximum values for the overlay axis.

Syntax
Description

Sub ComputeYOverlayMinMax( )
The ComputeYOverlayMinMax( ) method computes the minimum and
maximum values for the overlay axis. The minimum and maximum values are
used by the CustomYOverlayLabels( ) method to calculate the best fitting
labels. ComputeYOverlayMinMax( ) is called by the ComputeMinMax( )
method.

AcGraph::CustomYOverlayLabels method
Calculates the Y-labels of the overlay axis.

Syntax
Description

Sub CustomYOverlayLabels( )
The CustomYOverlayLabels( ) method computes the label of the overlay axis
by using the YOverlayMin and YOverlayMax values.
CustomYOverlayLabels( ) then divides this by the number of tick marks and
creates the labels at each mark. CustomYOverlayLabels( ) is called by the
ComputeLabels( ) method.
Override CustomYOverlayLabels( ) if you want to change the way labels are
computed. If you want to change the way labels are formatted, override
FormatYOverlayLabel( ).

See also

AcGraph::FormatYOverlayLabel method

Chapter 3, AFC classes

335

AcGraph::FormatXLabel method

AcGraph::FormatXLabel method
Formats a custom x-axis label.

Syntax
Parameter
Description

Function FormatXLabel( x As Double ) As String


x
The number of the x-axis label to format.
If you set the XLabelStyle property to GraphCustomLabels, ComputeLabels( )
calls FormatXLabel( ) to format each label on the x-axis. By default,
FormatXLabel( ) calls the Format$( ) function and uses the format argument
specified in the XLabelFormat property.
Override this method to change the way labels on the x-axis are formatted.

Returns
See also

The formatted string.


AcGraph::ComputeLabels method
AcGraph::FormatYLabel method

AcGraph::FormatYLabel method
Formats a custom y-axis label.

Syntax
Parameter
Description

Returns
See also

336

Function FormatYLabel( y As Double ) As String


y
The number of the y-axis label to format.
If you set the YLabelStyle property to GraphCustomLabels, ComputeLabels( )
calls FormatYLabel( ) to format each label on the y-axis. By default,
FormatYLabel( ) calls the Format$( ) function and uses the format argument
specified in the YLabelFormat property. Override this method to change the
way labels on the y-axis are formatted.
The formatted string.
AcGraph::ComputeLabels method
AcGraph::FormatXLabel method

Actuate Foundation Class Reference

AcGraph::FormatYOverlayLabel method

AcGraph::FormatYOverlayLabel method
Formats an overlay axis label.

Syntax
Parameter
Description

Function FormatYOverlayLabel(y As Double) As String


y
The number of the overlay axis label to format.
The FormatYOverlayLabel method formats the overlay axis labels.
FormatYOverlayLabel( ) calls the Format$( ) function and uses the format
argument specified in the YOverlayLabelFormat property.
FormatYOverlayLabel( ) is called by the CustomYOverlayLabels( ) method.
Override this method to change the way labels on the y-axis are formatted.

Returns
See also

The formatted label.


AcGraph::CustomYOverlayLabels method

AcGraph::GetHitPoint method
Returns the value of the category that was clicked at view time.

Syntax
Description

Function GetHitPoint( ) As Integer


Call GetHitPoint( ) to determine which category a user clicked. You can use
this information to execute an action, such as hyperlinking to related data, in
response to a mouse event. You typically call GetHitPoint( ) in mouse event
methods, such as OnLButtonClick( ) or OnLButtonDblClk( ).
Actuate numbers each category sequentially, starting with 0. The following
illustration shows a single-series and a multi-series bar graph, and the value
GetHitPoint( ) returns when each bar is clicked. Each bar or set of bars
associated with a label on the x-axis is a category.

Chapter 3, AFC classes

337

AcGraph::GetHitSet method

For each bar clicked,


GetHitPoint() returns:

For each bar clicked,


GetHitPoint() returns: 0

Returns
See also

The number of the category that was clicked. This number is stored in the first
index of the Point( ) array.
AcGraph::GetHitSet method
AcGraph::GetHitXValue method
AcGraph::GetHitYValue method

AcGraph::GetHitSet method
Returns the value of the series that was clicked at view time.

Syntax
Description

338

Function GetHitSet( ) As Integer


Call GetHitSet( ) to determine which series in a multi-series graph a user
clicked. You can use this information to execute an action, such as
hyperlinking to related data, in response to a mouse event. You typically call

Actuate Foundation Class Reference

AcGraph::GetHitSet method

GetHitSet( ) in mouse event methods, such as OnLButtonClick( ) or


OnLButtonDblClk( ).
Actuate numbers each series sequentially, starting with 0. In a single-series
graph, GetHitSet( ) always returns 0 no matter which data point is clicked
because there is only one series. If you want to detect which data point of a
single-series graph is clicked, use GetHitPoint( ) instead.
The following illustrations show a single-series and a multi-series bar graph,
and the value GetHitSet( ) returns when each bar is clicked.
For each bar clicked,
GetHitSet() returns:

For each bar clicked,


GetHitSet() returns:

This graph contains


three series

Returns
See also

The number of the series that was clicked. This number is stored in the second
index of the Point( ) array.
AcGraph::GetHitPoint method
AcGraph::GetHitXValue method
AcGraph::GetHitYValue method

Chapter 3, AFC classes

339

AcGraph::GetHitXValue method

AcGraph::GetHitXValue method
Returns the x value of the data point that was clicked at view time.

Syntax
Description

Function GetHitXValue( ) As Double


Call GetHitXValue( ) to get the x-axis value of the data point in a scatter graph
that a user clicked. The value GetHitXValue( ) returns is meaningful only for
scatter graphs because the x-axis is used to plot numeric values. Other graph
types use the x-axis to represent categories. To detect the category a user clicks,
use GetHitPoint( ).
You typically call GetHitXValue( ) in mouse event methods, such as
OnLButtonClk( ) or OnLButtonDblClk( ).
The following illustration shows a scatter graph, and the value
GetHitXValue( ) returns when each data point is clicked.
For each data point clicked,
GetHitXValue() returns:
550

600

650

700

750

600

650

700

750

500

Quantity

400

300

200

100
500

550

Price

Returns
See also

The x value of the data point that was clicked.


AcGraph::GetHitPoint method
AcGraph::GetHitSet method
AcGraph::GetHitYValue method

AcGraph::GetHitYValue method
Returns the y value of the data point that was clicked at view time.

Syntax
340

Function GetHitYValue( ) As Double

Actuate Foundation Class Reference

AcGraph::GetSeriesKey method

Description

Call GetHitYValue( ) to get the y-axis value of the data point a user clicked.
You can use this information to execute an action, such as displaying the value,
in response to a mouse event. You typically call GetHitYValue( ) in mouse
event methods, such as OnLButtonClk( ) or OnLButtonDblClk( ).
The following illustration shows a bar graph, and the value GetHitYValue( )
returns when each bar is clicked.
For each bar clicked,
GetHitYValue() returns:

Returns
See also

28996570 22589433 20422074

The y value of the data point that was clicked.


AcGraph::GetHitPoint method
AcGraph::GetHitSet method
AcGraph::GetHitXValue method

AcGraph::GetSeriesKey method
If an expression in the SeriesKey is entered, returns the Key code of the data
row.

Syntax
Parameter
Description

Returns

Function GetSeriesKey( row As AcDataRow ) As Variant


row
The data row.
By default, the GetSeriesKey method returns nothing. It is overridden in code
generation when the user enters an expression in the SeriesKey. In this case,
calling this function returns the Key code of the data row passed.
The Key code of the data row.

Chapter 3, AFC classes

341

Class AcGroupSection

Class AcGroupSection
This class groups related rows into a section based on a key column.
AcComponent
AcReportComponent
AcSection
AcDataSection
AcGroupSection

Description

Reports often contain grouped data, many times with subtotals for each group.
For example, a report of customers could group the customers by state.
AcGroupSection is the report component that creates groups within your
report. Grouping is based on a key column in your data row, which you
identify by setting the Key property, and optionally, the GroupOn and
GroupInterval properties. You use the GroupOn and GroupInterval properties
when you need to convert a key column in your data row into a value that is
more suitable for your report. For example, if your key column contains the
full date that an item was sold and you need to produce a quarterly sales
report, use the GroupOn property to group the data by quarter. Actuate
extracts the date information from the key column, converts it to a calendar
quarter, and creates groups based on calendar quarter. Or, if you need to
produce a bimonthly report, set GroupOn to GroupOnMonth and set
GroupInteval to 2.
A group section is a data section, and so it inherits the Before, After, Page
Header, Page Footer, and Content slots. Use the After slot to create subtotals
over your group. Use the Content slot to process each row in the group. The
Content can be a frame, or another group section to create a nested group.
You always use a group section with a report section. If that report section uses
a query data stream, then the report section ensures that the query sorts the
data rows as needed for the group sections. Specifically, the report section tells
the query data stream to sort the data based on the columns identified in the
Key properties of group sections associated with the report. If you had
specified an Order By clause in your query, then the columns you specified
appear after the key columns in the modified Order By clause.
To specify a group to use with a query data source, set the Key property to the
name of a column in your data row. You must use the database column name,
not the Basic variable name in the data row. Actuate ensures the rows are
sorted correctly as explained above.

342

Actuate Foundation Class Reference

Class AcGroupSection

If your data stream is other than a query, you must ensure that the data stream
returns the rows sorted in the correct order as needed by the group sections.
Actuate cannot automatically sort the rows for you. You must still specify the
Key property for each group section, but in this case, the Key property must be
the name of a Basic variable in the data row.
If you want to do a level break on a computed value (such as a range of
account numbers) or by looking at only a substring within a field (such as the
area code portion of a phone number), then you must create a column that
represents this value in your data stream. For example, if you are using a
query data stream, you must create a computed column to hold the value that
you want to be the key.
You can nest group sections. Each group is identified not just by its own key,
but by the entire set of keys of any enclosing group sections. For example,
suppose you want a list of customers and their orders by state. You create a
report to do the query, then an outer group for states, and an inner group for
customers. Assume also that your database contains both Alabama and
Alaska, and both states have only one customer and both customers have the
name Smith. Actuate will treat the customers as belonging to different
groups. That is, the full key of the first customer is (Alabama, Smith) and
the full key of the second customer is (Alaska, Smith). Another way of
thinking about this is that, when an outer group ends, then all nested groups
end also.

Building group sections


Group sections nest within a report section that reads the rows from a data
stream and passes each to its contents by calling the contents
BuildFromRow( ) method. The group section uses this method to
incrementally build up the group, one row at a time. When the enclosing
section calls BuildFromRow( ) on a group section for the first time, the group
section creates the Before and, optionally, the Page Header components as
described for AcDataSection. Also, on the first row, BuildFromRow( ) calls the
generated GetKey( ) method to identify and store the key value that identifies
this group.
For each row after the first, BuildFromRow( ) again calls GetKey( ) to
determine the key value for that row. If the key value differs from the one that
identifies the group, then the row is actually the first row of the next group. In
this case, BuildFromRow( ) produces its After component as described by
AcDataSection, and returns False without processing the data row. When the
enclosing section sees the return value False, it starts a new group section to
represent the new data group and passes the data row to that new group.

Chapter 3, AFC classes

343

Class AcGroupSection

In summary, BuildFromRow( ) creates its contents as follows:




If the row is the first row, BuildFromRow( ) produces the Page Header and
Before components as described in AcDataSection. BuildFromRow( ) also
records the rows key value.

If the row is not the first row, then BuildFromRow( ) compares the rows
key value with the recorded key value. If the key values differ, then
BuildFromRow( ) produces the After and Page Footer components as
described in AcDataSection, and returns False.

If there is no current content, then BuildFromRow( ) calls NewContent( ) to


create one.

Passes the row to the contents BuildFromRow( ) method. If the content


accepts the row, then BuildFromRow( ) returns True.

Finishes the current content and instantiates a new one by calling


NewContent( ).

Calls the contents BuildFromRow( ) method. This time, the content must
accept the row, then BuildFromRow( ) returns True.

Variables

344

Variable

Type

Description

KeyValue

Variant

The value of the key column for the


group.

Actuate Foundation Class Reference

Class AcGroupSection

Properties
Property

Type

Description

GroupInterval

Function

GroupInterval works with GroupOn


to control how data is grouped in the
report. GroupInterval contains the
number of intervals to group together.
If you specify GroupOnPrefix, set
GroupInterval to the number of
characters in the prefix.
The default is 1.

GroupOn

AcGroupOn
Type

GroupOn controls how data is


grouped in the report:
 GroupOnCustom: The developer
builds a custom group key in the
GetKeyValue method.
 GroupOnDay: Group key is the
full date excluding the time.
 GroupOnHour: Group key is the
full date and time excluding
minutes and seconds.
 GroupOnInterval: Provides
grouping for keys with data types
other than Currency, Date/Time,
Double, Integer, Single, or String.
 GroupOnMinute: Group key is the
full date and time excluding
seconds.
 GroupOnMonth: Group key is
year and month.
 GroupOnPrefix: Group key is the
first n characters of a key.
 GroupOnQuarter: Group key is a
calendar quarter.
 GroupOnWeek: Group key is the
full date converted to a week
within a year.
 GroupOnYear: Group key is the
year.
The default is GroupOnEveryValue.

Key

Expression

The database column that identifies


the group.

Chapter 3, AFC classes

345

AcGroupSection::GetIntervalValue method

Considerations for setting GroupOn property


GroupOnDay/Hour/Minute/Month/Quarter/Week/Year are valid for key
columns with Date/Time data types only. GroupOnPrefix is valid for string
data types only.

Methods
Method

Type

Description

GetInterval
Value( )

Variant

Determines the group interval from


the key and a grouping interval type.

GetKey( )

Variant

Gets the key value from a data row.

GetKeyString( )

String

Returns the key value for a group


formatted as a string.

GetKeyValue( )

Variant

Returns the group key for the data


row.

IsSameKey( )

Boolean

Checks if the group section key has


changed.

SetTocEntry( )

N/A

Computes the Table of Contents label


for this section.

AcGroupSection::GetIntervalValue method
Determines the group interval from the key and a grouping interval type.

Syntax
Parameter

Function GetIntervalValue( value As Variant,


interval As AcGroupingIntervalType ) As Variant
value
The key column.
interval
An AcGroupingIntervalType constant.

Description

Returns

346

Call GetIntervalValue to get the value of the grouping interval from the
current key. For example, if the interval argument is GroupOnMonth and the
value argument is 990915, the return value is 9.
The value for the groups GroupInterval property.

Actuate Foundation Class Reference

AcGroupSection::GetKey method

AcGroupSection::GetKey method
Extracts the key value from a data row.

Syntax
Parameter
Description

Returns

Function GetKey( row As AcDataRow ) As Variant


row
The data row to use.
The GetKey( ) method extracts the key value for the group from a data row.
The framework generates this method for you based on the column you enter
in the Key property for the group section.
The key value for the group.

AcGroupSection::GetKeyString method
Returns the key value as a string.

Syntax
Description
Returns
Example

Function GetKeyString( ) As String


The GetKeyString( ) method formats the groups key value as a string.
The string containing the groups key value.
The user-defined function, GetKeyValue, returns the value for a control that
contains the group section key. The function calls GetKeyString to return the
key as a string value after the group section is located:
Function GetKeyValue( ) As String
' Gets the key value of the Group Section containing this control.
Dim myGroupSection As AcGroupSection
Dim component As AcReportComponent
Set component=GetContainer()
Do While Not component Is Nothing
If IsKindOf( component, "AcGroupSection") Then
Exit Do
End If
Set component = component.GetContainer()
Loop
If Not component Is Nothing Then
Set myGroupSection = component
GetKeyValue = myGroupSection.GetKeyString()
End If
End Function

Chapter 3, AFC classes

347

AcGroupSection::GetKeyValue method

AcGroupSection::GetKeyValue method
Returns the group key for the data row.

Syntax
Parameter
Description

Returns

Function GetKeyValue( row As AcDataRow ) As Variant


row
The data row to use.
The framework calls this method when you set the GroupOn property to
GroupOnCustom. Override the GetKeyValue( ) method to provide the group
key to use for the data row. If you call the default GetKeyValue method, the
framework returns the value for the Key property.
The value for the groups key.

AcGroupSection::IsSameKey method
Checks if the group section key has changed.

Syntax
Parameter

Function IsSameKey( curKey As Variant, prevKey As Variant ) As Boolean


curKey
The current group section key.
prevKey
The prior group section key.

Description

Returns

IsSameKey( ) compares the value of the current and the prior group section
keys. If you are using the results of a computation to determine whether you
should do a level break, call IsSameKey to help you make this determination.
True if the keys are equal.
False if the keys are not equal.

AcGroupSection::SetTocEntry method
Sets the Table of Contents entry for the data row.

Syntax
Parameter

348

Sub SetTocEntry( row As AcDataRow )


row
The data row to use for the Table of Contents entry.

Actuate Foundation Class Reference

Class AcHLCChart

Class AcHLCChart
A subclass of AcChart that displays data in a high-low-close or open-highlow-close chart.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcChart
AcHLCChart

Description

AcHLCChart shows ranges of values. A high-low-close chart shows each


range as a vertical line with three optional horizontal bars to mark specific
values. An open-high-low-close chart shows one additional data value, the
opening or starting value in the range.
Use the high-low-close or open-high-low-close chart to display a set of y-axis
values per x-axis category, for example, daily high-low-close stock prices,
high-low-average temperatures, or other data that can be represented in sets of
three or four values.
AcHLCChart inherits the general attributes of charts from AcChart, and
defines methods for reading the four values from a single data row and
populating the chart with that data.

Properties
Property

Type

Description

CloseValueExp

Expression

The value expression for the closing


value.

DateExp

Expression

The expression used to generate labels


along the x-axis.

DualYValueExp Expression

The value expression for the dual


chart.

HighValueExp

Expression

The height of the high mark.

LabelExp

Expression

The expression used to generate labels


along the category axis for non-time
series graphs.

Chapter 3, AFC classes

349

AcHLCChart::AddPoint method

Property

Type

Description

LowValueExp

Expression

The height of the low mark.

OpenValueExp

Expression

The height of the open mark (bar or


edge of box).

Method

Type

Description

AddPoint( )

N/A

Adds a data point at the end of the list


of data points.

GetClose
Value( )

Double

Returns the close value for the chart.

GetDateValue( ) Variant

If an expression in the DateExp


property is entered, returns the date
value of the data row.

GetHigh
Value( )

Double

Returns the high value for the chart.

GetLabel
Value( )

String

Returns the label value for the chart.

GetLowValue( )

Double

Returns the low value for the chart.

GetOpen
Value( )

Double

Returns the open value for the chart.

Methods

AcHLCChart::AddPoint method
Adds a data point at the end of the list of data points.

Syntax
Parameters

Sub AddPoint( yOpen As Double, yHigh As Double, yLow As Double, yClose


As Double, Label As String )
yOpen
The open y value of the data point.
yHigh
The high y value of the data point.
yLow
The low y value of the data point.
yClose
The close y value of the data point.

350

Actuate Foundation Class Reference

AcHLCChart::GetCloseValue method

Label
The text of the label for the data point.

Description

The AddPoint( ) method adds a point at the end of the list of points for the
chart. Each data point consists of four y values, one each for open, close, high,
and low. This method assumes that only one data set exists.

AcHLCChart::GetCloseValue method
Sets the close value for the chart.

Syntax
Parameter
Description
Returns

Function GetCloseValue( row As AcDataRow ) As Double


row
The data row.
Override the GetCloseValue( ) method to set the close value for the chart.
The close value for the chart.

AcHLCChart::GetDateValue method
If an expression in the DateExp is entered, returns the date value of the data
row.

Syntax
Parameter
Description

Returns

Function GetDateValue( row As AcDataRow ) As Date


row
The data row.
By default, the GetDateValue( ) method returns nothing. It is overridden in
code generation when the user enters an expression in the DateExp property.
In this case, calling this function returns the date value of the data row passed.
The date value of the data row.

AcHLCChart::GetHighValue method
Sets the high value for the chart.

Syntax
Parameter

Function GetHighValue( row As AcDataRow ) As Double


row
The data row.

Chapter 3, AFC classes

351

AcHLCChart::GetLabelValue method

Description
Returns

Override the GetHighValue( ) method to set the high value for the chart using
the values of data row columns.
The high value for the chart.

AcHLCChart::GetLabelValue method
Sets the label value for the chart.

Syntax
Parameter
Description
Returns

Function GetLabelValue( row As AcDataRow ) As String


row
The data row.
Override the GetLabelValue( ) method to set the label value for the chart using
the values of data row columns.
Returns the label value for the chart.

AcHLCChart::GetLowValue method
Sets the low value for the chart.

Syntax
Parameter
Description
Returns

Function GetLowValue( row As AcDataRow ) As Double


row
The data row.
Override the GetLowValue( ) method to set the low value for the chart using
the values of data row columns.
The low value for the chart.

AcHLCChart::GetOpenValue method
Sets the open value for the chart.

Syntax
Parameter
Description
Returns
352

Function GetOpenValue( row As AcDataRow ) As Double


row
The data row.
Override the GetOpenValue( ) method to set the open value for the chart using
the values of data row columns.
The open value for the chart.

Actuate Foundation Class Reference

Class AcHLCGraph

Class AcHLCGraph
A class you use in the report design to display data in a high-low-close or
open-high-low-close graph.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcGraph
AcHLCGraph

Description

Use the high-low-close or open-high-low-close graph to display a set of y-axis


values per x-axis category, for example, daily high-low-close stock prices,
high-low-average temperatures, or other data that can be represented in sets of
three or four values.
AcHLCGraph inherits the general attributes of graphs from AcGraph, and
defines methods for reading the four values from a single data row and
populating the graph with that data. HTML reports treat graphs as JPG
images.

Properties
Property

Type

Description

CloseValueExp

Expression

The value expression for the closing


value.

DateExp

Expression

The expression used to generate labels


along the category axis for time series
graphs.

HighValueExp

Expression

The height of the high mark.

LabelExp

Expression

The expression used to generate labels


along the category axis for non-time
series graphs.

LowValueExp

Expression

The height of the low mark.

OpenValueExp

Expression

Determines the height of the open


mark (bar or edge of box).

Chapter 3, AFC classes

353

AcHLCGraph::AddPoint method

Methods
Method

Type

Description

AddPoint( )

N/A

Adds a point to the end of the list of


points for the graph.

GetClose
Value( )

Double

Returns the close value for the graph.

GetDateValue( ) Variant

If an expression in the DateExp is


entered, returns the date value of the
data row.

GetHigh
Value( )

Double

Returns the high value for the graph.

GetLabel
Value( )

String

Returns the label value for the graph.

GetLowValue( )

Double

Returns the low value for the graph.

GetOpen
Value( )

Double

Returns the open value for the graph.

AcHLCGraph::AddPoint method
Adds a point to the end of the list of points.

Syntax
Parameter

Sub AddPoint( yOpen As Double, yHigh As Double, yLow As Double, yClose


As Double, Label As String )
yOpen
The open y value.
yHigh
The high y value.
yLow
The low y value.
yClose
The close y value.
Label
The text of the label for the data point.

Description

354

Adds a point to the end of the list of points for the graph. This method
assumes that there is only one data set. Each data point actually consists of
four y values, one each for open, close, high, and low.

Actuate Foundation Class Reference

AcHLCGraph::GetCloseValue method

AcHLCGraph::GetCloseValue method
Sets the close value for the graph.

Syntax
Parameter
Description
Returns

Function GetCloseValue( row As AcDataRow ) As Double


row
The data row.
Override GetCloseValue( ) to set the close value for the graph.
The close value for the graph.

AcHLCGraph::GetDateValue method
If an expression in the DateExp is entered, returns the date value of the data
row.

Syntax
Parameter
Description

Returns

Function GetDateValue( row As AcDataRow ) As Date


row
The data row.
By default, the GetDateValue( ) method returns nothing. It is overridden in
code generation when the user enters an expression in the DateExp property.
In this case, calling this function returns the date value of the data row passed.
The date value of the data row.

AcHLCGraph::GetHighValue method
Sets the high value for the graph.

Syntax
Parameter
Description
Returns

Function GetHighValue( row As AcDataRow ) As Double


row
The data row.
Override GetHighValue( ) to set the high value for the graph using the values
of data row columns.
The high value for the graph.

Chapter 3, AFC classes

355

AcHLCGraph::GetLabelValue method

AcHLCGraph::GetLabelValue method
Sets the label value for the graph.

Syntax
Parameter
Description
Returns

Function GetLabelValue( row As AcDataRow ) As String


row
The data row.
Override GetLabelValue( ) to set the label value for the graph using the values
of data row columns. The HasLabelExpr property must be set to False.
Returns the label value for the graph.

AcHLCGraph::GetLowValue method
Sets the low value for the graph.

Syntax
Parameter
Description
Returns

Function GetLowValue( row As AcDataRow ) As Double


row
The data row.
Override GetLowValue( ) to set the low value for the graph using the values of
data row columns.
The low value for the graph.

AcHLCGraph::GetOpenValue method
Sets the open value for the graph.

Syntax
Parameter
Description
Returns

356

Function GetOpenValue( row As AcDataRow ) As Double


row
The data row.
Override GetOpenValue to set the open value for the graph using the values of
data row columns.
The open value for the graph.

Actuate Foundation Class Reference

Class AcHtmlAppletControl

Class AcHtmlAppletControl
A class you use in an HTML report design to add a Java applet.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcHtmlObjectControl
AcHtmlAppletControl

Description

Use AcHtmlAppletControl to add a Java applet to your HTML report. This


description assumes that you are already familiar with Java, and know how to
add a Java applet to an HTML document you create manually.
The HTML applet control generates an HTML <applet></applet> tag in
your HTML report.
The following steps describe how to attach an applet to a report:
1 Drag an applet control from the palette and drop it into the frame where
you want the applet to appear.
2 Size the applet.
e.Report Designer Professional uses inches or twips to size the applet. The
web browser uses pixels. e.Report Designer Professional uses 40 pixels per
inch when it generates the HTML height and width attributes for the
applet.
3 Set the AppletName name property to the name of the Java class you want
to use. This value is equivalent to the HTML Code attribute.
4 If the Java code does not reside in the same directory as the report, set the
CodeBase property to specify the machine and directory on which the code
resides. This value is equivalent to the HTML Codebase attribute.
5 Set the other properties as required.
6 If your applet requires parameters, override the HtmlParams( ) method to
set the value of each parameter. For more information, see
AcHtmlAppletControl::HtmlParams method.
For more information about building reports with applets, see Chapter 21,
Building HTML reports, in Developing Advanced e.Reports.

Chapter 3, AFC classes

357

Class AcHtmlAppletControl

Considerations for using Java applets


e.Report Designer Professional does not support Java applets. The control is a
placeholder.
Size. HTML requires that the size of an applet window be set using pixels.
However, Actuate controls are sized in twips, which are much smaller than a
pixel. Actuate assumes 40 twips per pixel. For example, if you set an applet
control to be 4,000 x 4,000 in size, the control will appear several inches in size
in the web browser, depending on your monitor, and the control will appear
about a quarter-inch in size in the Design Editor.
Parameters. Most Java applets take one or more parameters. You must
override HtmlParams( ) method to specify the parameters.
Design Editor. The Design Editor cannot display the actual applet. The control
you see in the Design Editor is a placeholder.

Variables

358

Variable

Type

Description

Alignment

AcHtmlImage
Alignment

Specifies the alignment of the


applet window within the flow
of text in the report. For more
information about alignment
options, see
AcHtmlImageAlignment in
Chapter 2, AFC data types.

AlternateText

String

In browsers that do not support


Java applets, specifies the text
that appears in place of the
applet.

AppletName

String

The name of the Java applet.

CodeBase

String

The base URL for the applet


code.

ErrorText

String

If the web browser cannot load


or start the applet, the message
that appears in place of the
applet window.

Actuate Foundation Class Reference

Class AcHtmlAppletControl

Variable

Type

Description

Margin

Integer

The number of pixels of


horizontal and vertical space
between the applet window
and the surrounding text.

Size

AcSize

Specifies the height and width


of the applet window in pixels.
(Inherited.)

Property

HTML attribute

Description

Alignment

align=option

Specifies the alignment of the


applet window within the flow
of text in the report. For more
information about alignment
options, see
AcHtmlImageAlignment in
Chapter 2, AFC data types.

Properties

AlternateText

In browsers that do not support


Java applets, specifies the text
that appears in place of the
applet.

AppletName

code=name

The name of the Java applet.

CodeBase

codebase=url

The base URL for the applet


code.

ErrorText

alt=text

If the web browser cannot load


or start the applet, the message
that appears in place of the
applet window.

Margin

hspace=width
vspace=height

The number of pixels of


horizontal and vertical space
between the applet window
and the surrounding text.

Size

height=height
width=width

Specifies the height and width


of the applet window in pixels.
(Inherited.)

Chapter 3, AFC classes

359

AcHtmlAppletControl::HtmlParams method

Methods
Method

Type

Description

HtmlParams( )

N/A

Override this method to specify


parameters to the Java applet.

SetParam( )

N/A

Call this method from


AcHtmlAppletControl::HtmlParams( )
to specify each parameter.

AcHtmlAppletControl::HtmlParams method
Specifies the parameters to a Java applet included in a report design.

Syntax
Parameter
Description

Sub HtmlParams( htmlFile As Integer )


htmlFile
The channel number for the HTML source file being generated.
If the Java applet you include with your report design requires parameters,
you must override HtmlParams( ) to specify the parameters. In the code, call
SetParam( ) for each parameter. Each parameter has a name and a value. Your
override code should look like the following:
Sub HtmlParams( htmlFile As Integer )
SetParam( htmlFile, "Text", "Partners" )
SetParam( htmlFile, "TxFont", "Helvetica" )
SetParam( htmlFile, "TxHorizCenter", "true" )
SetParam( htmlFile, "TxVertCenter", "true" )
SetParam( htmlFile, "TxStyle", "Bold" )
SetParam( htmlFile, "TxPointSize", "36" )
SetParam( htmlFile, "TxDelayBetweenRuns", "250" )

End Sub

The htmlFile parameter is required. The second parameter to SetParam( ) is the


name of your applet parameter, and the third is the value. You must always
pass the value as a string. SetParam( ) generates the HTML
<param name= value=> tag.

AcHtmlAppletControl::SetParam method
Specifies each parameter to a Java applet included in a report design.

Syntax
360

Sub SetParam( htmlFile As Integer, param As String, value As String )

Actuate Foundation Class Reference

AcHtmlAppletControl::SetParam method

Parameter

htmlFile
The channel number for the HTML source file being generated.
param
The name of the parameter.
value
The value of the parameter.

Description

Call SetParam( ) from your override of HtmlParams( ) to specify each


parameter in your applet. You must pass the parameter value as a string, even
if that value need not be within quotation marks in an HTML value=val
attribute.
For a description and example of how to use SetParam( ), see the
HtmlParams( ) method.

Chapter 3, AFC classes

361

Class AcHtmlFrame

Class AcHtmlFrame
A frame that represents one or more lines of text in an HTML report.
AcComponent
AcReportComponent
AcVisualComponent
AcBaseFrame
AcDataFrame
AcFrame
AcHtmlFrame

Description

Use AcHtmlFrame as the container for controls that display text in an HTML
report. For example, you can use an HTML frame to create an HTML header,
list, or plain text. AcHtmlFrame adds an HtmlStyle property for specifying the
following HTML text formats:


Headers 1 though 6

Ordered (numbered) list

Unordered (bulleted) list

Table

Plain text

You can use the standard frame (AcFrame) in an HTML report. However,
AcHtmlFrame provides HTML-specific properties for formatting lines of text.
When an AcFrame is rendered as an HTML table, the following properties
govern its appearance.

362

Appearance
property

Type

Description

BackgroundColor

AcColor

Determines the color of each cell in


the HTML table, unless a control in
that cell overrides the color.

Border.Pen

AcLineStyle

Set this property to anything other


than NullLine to set a border around
the HTML table.

Actuate Foundation Class Reference

Class AcHtmlFrame

Appearance
property

Type

Description

Border.Width

AcLineStyle

Determines the width of the border


around the HTML table if Border.Pen
is not set to NullLine.

Margins.Top and
Margins.bottom

AcMargins

Determines the amount of white


space above and below the HTML
table. The amount of white space in
pixels is:
(Margins.Top + Margins.Bottom) / 2
/ TwipsPerPixel

Margins.Left and
Margins.Right

AcMargins

Determines the amount of white


space on either side of the table. The
amount of white space in pixels is:
(Margins.Left + Margins.Right) / 2 /
TwipsPerPixel

Variables
Variable

Type

Description

FillRow

Boolean

Determines whether or not AFC


creates empty cells for any HTML
table cell that contains data.

FixedColumn
Widths

Boolean

Determines whether or not the HTML


table column widths are set by the
AFC or by the web browser.

HtmlStyle

AcHtmlFrameStyle

The text style. Can be any one of the


six HTML header levels, standard text,
list, table, and so on. The default is
HtmlTable.

TextAlignment

AcHtmlAlignment

The horizontal alignment of the text,


which is left, center, or right.

Chapter 3, AFC classes

363

Class AcHtmlFrame

Properties

364

Property

HTML
Attribute/
Type

FillRow

Boolean

Determines whether or not AFC


creates empty cells for any HTML
table cell that contains data.

FixedColumn
Widths

N/A

Determines whether or not the HTML


table column widths are set by the
AFC or by the web browser.

HtmlStyle

(varies
depending on
the chosen
style)

The text style. Can be any one of the


six HTML header levels, standard text,
list, table, and so on. The default is
HtmlTable.

TextAlignment

align=style

The horizontal alignment of the text,


which is left, center, or right.

Actuate Foundation Class Reference

Description

Class AcHtmlImageControl

Class AcHtmlImageControl
A class you use in an HTML report design to display an image.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcImageControl
AcHtmlImageControl

Description

The HTML image control allows you to place an image into your HTML
report. You can use the standard image control (AcImageControl) in an HTML
report, but AcHtmlImageControl provides HTML-specific properties for
manipulating images in HTML. You should use AcHtmlImageControl only in
an HTML report (AcHtmlReport).
HTML reports support JPG image files. You can specify other types of graphic
files when you design an HTML report, as long as your web browser supports
those types of graphic files. During HTML report design, you specify the name
of the graphic file, but the file itself is not included until run time. Graphic files
with formats other than JPG do not display in your report design, but they do
display when the report runs in your web browser.

Variables
Variable

Type

Description

Alignment

AcHtmlImage
Alignment

Specifies the alignment of


surrounding text with the image.
To center the image on a line
separate from surrounding text,
use the Centered option.

AlternateText

String

In browsers that do not support


images, specifies the text to
display in place of the image.

LowResSourceURL

String

The URL of the initial image to


display as the web browser first
loads the page.

Chapter 3, AFC classes

365

Class AcHtmlImageControl

Variable

Type

Description

MapName

String

The name of the client-side image


map associated with the image.
This property takes effect only if
MapType is set to a client-side
map.

MapType

AcHtmlImage
Maptype

Specifies whether the image


represents a client-side or serverside image map.

Margin

AcSize

Specifies the amount of space, in


pixels, between the image and
surrounding text.

SourceURL

String

The URL of the image to display.


See note about image files below.

UseDefaultSize

Boolean

Determines whether to use the


default image size computed by
the browser. If set to True, then
AFC does not generate the height
and width HTML attributes. If
False, then AFC generates these
attributes from the Size property.

Property

HTML attribute

Description

Alignment

align=opt

Specifies the alignment of


surrounding text with the image.
To center the image on a line
separate from surrounding text,
use the Centered option.

AlternateText

alt=text

In browsers that do not support


images, specifies the text to
display in place of the image.

ImageName

src=basename

The name of the file to display for


the image in the e.Report
Designer Professional. AFC
computes the URL of the image
from this name if the SourceURL
property is not set. (See note
about image files below.)
(Inherited.)

Properties

366

Actuate Foundation Class Reference

Class AcHtmlImageControl

Property

HTML attribute

Description

LowResSourceURL

lowsrc=url

The URL of the initial image to


display as the web browser first
loads the page.

MapName

map=name

The name of the client-side image


map associated with the image.
This property takes effect only if
MapType is set to a client-side
map.

MapType

ismap

Specifies whether the image


represents a client-side or serverside image map.

Margin

hspace=width
vspace=height

Specifies the amount of space, in


pixels, between the image and
surrounding text.

Size

height=height
width=width

The size of the image, in pixels.


This property takes effect only if
UseDefaultSize is set to False.
(Inherited.)

SourceURL

src=url

The URL of the image to display.


This property takes effect during
View time. Setting the Embedded
property to ImageFactoryTime,
will not display the image during
Factory time.
(See note about image files
below.)

UseDefaultSize

Determines whether to use the


default image size computed by
the browser. If set to True, then
AFC will not generate the height
and width HTML attributes. If
False, then AFC generates these
attributes from the Size property.

Note about image files


The inherited ImageName property provides the file name of the image to
display in the Design Editor, and must be a valid file name for your operating
system. The SourceURL property gives the URL that a web browser uses to
access the same file over the Web. If you set both the ImageName and the
SourceURL properties, AFC sets the images src attribute using the value in
SourceURL. If you provide only an ImageName without a SourceURL, AFC
sets the images src attribute to the base name of the ImageName. The base

Chapter 3, AFC classes

367

Class AcHtmlImageControl

name is the file name itself, without the drive and directory path. For example,
if ImageName is set to C:/Reports/Custlist/Banner.gif, the base name is
Banner.gif. Therefore, AFC generates src=Banner.gif in HTML.

368

Actuate Foundation Class Reference

Class AcHtmlObjectControl

Class AcHtmlObjectControl
The base class for applets, plug-ins, and ActiveX controls.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcHtmlObjectControl

Description

AcHtmlObjectControl serves as the common superclass for the applet, plug-in,


and ActiveX control classes. You generally do not derive directly from
AcHtmlObjectControl. It has no methods, properties, or variables associated
with it.

Chapter 3, AFC classes

369

Class AcHtmlPlugInControl

Class AcHtmlPlugInControl
A class you use in an Html report design to add a Netscape plug-in.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcHtmlObjectControl
AcHtmlPlugInControl

Description

The AcHtmlPlugInControl lets you add a Netscape plug-in to your HTML


report. The description that follows assumes you are already familiar with
plug-ins, and how to add a plug-in to an HTML document you create
manually. The HTML plug-in control generates an HTML
<embed></embed> tag into your HTML report. The following steps
describe how to attach a plug-in to a report:
1 Drag a plug-in control from the palette and drop it into the frame where
you want the plug-in to appear.
2 Size the plug-in. e.Report Designer Professional uses inches (or twips) to
size the plug-in. The web browser uses pixels. e.Report Designer
Professional uses 40 pixels per inch when it generates the HTML height
and width attributes for the plug-in.
3 Set the SourceURL property to the name of the file to display in the plug-in.
This value is equivalent to the HTML src attribute. Alternatively, set the
MimeType property to the MIME type for the plug-in if the plug-in does
not require a file. This value is equivalent to the HTML type attribute.
4 Optionally set the PlugInPage property to specify the machine and/or
directory from which the user can download the plug-in if the plug-in is
not already installed on the users machine. This value is equivalent to the
HTML pluginspage attribute.
5 Set the other properties, if required.
6 If the plug-in requires parameters, override the HtmlParams( ) method to
set the value of each parameter. See the HtmlParams( ) method for details.

370

Actuate Foundation Class Reference

Class AcHtmlPlugInControl

Considerations for using plug-ins


e.Report Designer Professional does not support plug-ins. The control is a
placeholder.
Size. HTML requires that the size of a plug-in window be set using pixels or
ens, half the current text point size. However, Actuate controls are sized in
twips which are much smaller than a pixel. Actuate uses 40 twips per pixel. As
a result, if you set a plug-in control to be, say, 4,000 x 4,000 in size, it will
appear several inches in size in the web browser (depending on your monitor),
but it will appear only about a quarter-inch in size in the Design Editor.
Parameters. Many plug-ins take one or more parameters. You must override
a method called HtmlParams( ) to specify the parameters.
Design Editor. The Design Editor cannot display the actual plug-in. The
control you see in the Design Editor is simply a placeholder for the actual
plug-in.

Variables
Variable

Type

Description

Alignment

AcHtmlImage
Alignment

The alignment of the plug-in


window within the flow of text
in the report. For descriptions of
the alignment options, see
AcHtmlImageAlignment in
AFC data types.

IsHidden

Boolean

Specifies if the plug-in is to be


hidden, that is, have no visible
window. Check your browser
documentation to determine if
the browser supports this
option.

Margin

AcSize

The number of pixels of


horizontal and vertical space
between the plug-in window
and the surrounding text.

MimeType

String

The MIME type of the plug-in.


Use this for plug-ins that do not
require a file. You must specify
either the SourceURL property
or the MimeType property, but
not both.

Chapter 3, AFC classes

371

Class AcHtmlPlugInControl

Variable

Type

Description

PlugInPage

String

The URL of the page from which


the user can download the plugin if the user does not already
have it installed.

Size

AcSize

Specifies the height and width


of the plug-in window in pixels.
This property is inherited.

SizeUnits

AcHtmlPlugIn
Units

The type of units to use for the


Height and Width properties.

SourceURL

String

A URL that identifies the file to


display in the plug-in.

UseForegroundPalette

Boolean

Specifies whether the plug-in


uses its palette as a foreground
palette or a background palette.
The default is False.

Properties

372

Property

HTML attribute

Description

Alignment

align=option

The alignment of the plug-in


window within the flow of text in
the report. For descriptions of the
alignment options, see
AcHtmlImageAlignment in AFC
data types.

IsHidden

hidden=opt

Specifies if the plug-in is to be


hidden, that is, have no visible
window. Check your browser
documentation to determine if the
browser supports this option.

Margin

hspace=width
vspace=height

The number of pixels of


horizontal and vertical space
between the plug-in window and
the surrounding text.

MimeType

type=opt

The MIME type of the plug-in.


Use this for plug-ins that do not
require a file. You must specify
either the SourceURL property or
the MimeType property, but not
both.

Actuate Foundation Class Reference

AcHtmlPlugInControl::HtmlParams method

Property

HTML attribute

Description

PlugInPage

pluginspage=
url

The URL of the page from which


the user can download the plug-in
if the user does not already have it
installed.

Size

height=height
width=weight

Specifies the height and width of


the plug-in window in pixels.
(This property is inherited.)

SizeUnits

units=opt

The type of units to use for the


Height and Width properties.

SourceURL

src=name

A URL that identifies the file to


display in the plug-in.

UseForegroundPalette

palette=opt

Specifies whether the plug-in uses


its palette as a foreground palette
or a background palette. The
default is False.

Methods
Method

Type

Description

HtmlParams( )

N/A

Override this method to specify


parameters to the plug-in application.

SetParams( )

N/A

Call this method from HtmlParams( ) to


specify each parameter.

AcHtmlPlugInControl::HtmlParams method
Specifies the parameters to a plug-in included in a report design.

Syntax
Parameter
Description

Sub HtmlParams( htmlFile As Integer )


htmlFile
The channel number for the HTML source file being generated.
If the plug-in application you include with your report design requires
parameters, you must override HtmlParams( ) to specify the parameters. In
the code, call SetParam( ) for each parameter. Each parameter has a name and
a value. Your override code should look like the following:

Chapter 3, AFC classes

373

AcHtmlPlugInControl::SetParam method

Sub HtmlParams( htmlFile As Integer )


SetParam( htmlFile, "Loop", "True" )
SetParam( htmlFile, "AutoStart", "True" )
End Sub

The htmlFile parameter is required. The second parameter to SetParam( ) is


the name of your plug-in parameter, and the third is the value. You must
always pass the value as a string. The SetParam( ) method generates the
name=value portion of the HTML <embed> tag.

AcHtmlPlugInControl::SetParam method
Specifies each parameter to a plug-in application included in a report design.

Syntax
Parameter

Sub SetParam( htmlFile As Integer, param As String, value As String )


htmlFile
The channel number for the HTML source file being generated.
param
The name of the parameter.
value
The value of the parameter.

Description

Call this method from your override of HtmlParams() to specify each


parameter in your plug-in application. You must pass the parameter value as
a string, even if that value need not be within quotation marks in an HTML
value=val attribute.
For a description and example of how to use SetParam( ), see the
HtmlParams( ) method.

374

Actuate Foundation Class Reference

Class AcHtmlReport

Class AcHtmlReport
The base class for an HTML report.
AcComponent
AcReportComponent
AcReport
AcHtmlReport

Description

If you are designing an HTML report to be viewed through a web browser,


AcHtmlReport is the class you place in the topmost position of the report
design in the structure pane. AcHtmlReport defines the general characteristics
of an HTML report and the logic for generating HTML reports.
The HTML report adds an additional processing step in the Factory to
generate the HTML file or files that make up the report. First, the Factory
creates the standard .roi file. The HTML report then makes another pass over
the report to generate HTML output. The generated HTML files are
independent of the .roi file.

Variables
Variable

Type

Description

BackgroundColor

AcColor

The color name or value for the


background of the page. The default is
TransparentColor, which uses the
default set through the web browser.

BackgroundImage

String

The URL of an image to display as the


background for the page.

BackgroundSound

String

The URL of a sound file that plays


when the user views the page.

BackgroundStyle

AcHtml
Background
Style

Specifies whether the background


image scrolls or is fixed as the page
scrolls.

BaseFontSize

Integer

The relative size of the base font for


the HTML page. Valid values are 1 to
7. The default is 2.

Chapter 3, AFC classes

375

Class AcHtmlReport

376

Variable

Type

Description

LinkColor

AcColor

The color of links which the user has


not yet visited. The default is
TransparentColor, which uses the
default set through the web browser.

MaxTocDepth

Integer

The maximum number of levels to


display in the generated Table of
Contents.

PageSize

AcSize

The height and width of the page in


pixels. The value of 0 is special. Width
0 means the full width of the browser
window. Height 0 means the entire
height of the browser window.

TextColor

AcColor

The color of text on the page. The


default is TransparentColor, which
uses the default set through the web
browser.

Title

String

The title of the report. Report titles


appear at the top of the report. If the
report has a Table of Contents in a
separate frame, the title appears only
at the top of the report. If the report
has a Table of Contents at the top of
the report, the title appears once at the
top of the Table of Contents, and again
at the top of the report.

TocStyle

AcHtmlToc
Style

The style of the Table of Contents. The


TOC can appear at the top of the
report, or in a separate HTML frame,
or there can be no TOC. The default
style is to have no TOC.

TocWidth

Integer

The width of the TOC frame when the


TOC appears in a separate HTML
frame.

TocWidthUnits

AcHtml
Units

The units to use for the TOC width,


either a percent of the browser
window width or pixels.

VisitedLinkColor

AcColor

The color of links that have already


been visited. The default is
TransparentColor, which uses the
default set through the web browser.

Actuate Foundation Class Reference

Class AcHtmlReport

Properties
Property

HTML Attribute

Description

BackgroundColor

BGColor=color

The color name or value for the


background of the page. The
default is TransparentColor, which
uses the default set through the web
browser.

BackgroundImage

Background=
url

The URL of an image to display as


the background for the page.

BackgroundSound BGSound
Src=name

The URL of a sound file that plays


when the user views the page.

BackgroundStyle

BGProperties

Specifies whether the background


image scrolls or is fixed as the page
scrolls.

BaseFontSize

<BaseFontSize=
number>

The relative size of the base font for


the HTML page. Valid values are 1
to 7. The default is 2.

LinkColor

Link=color

The color of links that the user has


not yet visited. The default is
TransparentColor, which uses the
default set through the web
browser.

MaxTocDepth

The maximum number of levels to


display in the generated HTML
table of contents.

PageSize

TopMargin=
height
LeftMargin=
width

The height and width of the page in


pixels. The value of 0 is special. A
width of 0 means the full width of
the browser window. A height of 0
means the entire height of the
browser window.

TextColor

Text=color

The color of text on the page. The


default is TransparentColor, which
uses the default set through the web
browser.

Title

<Title>title
</Title>

The title of the report. The title


usually appears in the web
browsers window title.

Chapter 3, AFC classes

377

AcHtmlReport::GetRowFileName method

Property

HTML Attribute

Description

TocStyle

The style of the Table of Contents.


The TOC can appear at the top of
the report, in a separate HTML
frame, or as a control anywhere
within the report. The default style
is to appear as a control.

TocWidth

The width of the TOC frame when


the TOC appears in a separate
HTML frame.

TocWidthUnits

The units to use for the TOC width,


either a percent of the browser
window width or pixels.

ShowTitle

Whether or not to display the title


of the report in the report, as well as
in the web browsers window title.

VisitedLinkColor

VLink=color

The color of links that the user has


visited. The default is
TransparentColor, which uses the
default set through the web
browser.

Method

Type

Description

GetRowFile
Name( )

N/A

Returns the .row file name for an


.roi.

GetServerPrefix( )

String

Returns the location of the server


on which the HTML report will be
deployed.

WantHtml( )

Boolean

Determines whether or not to


generate HTML files for the report.

Methods

AcHtmlReport::GetRowFileName method
Returns the name of the .row file for a given .roi file.

Syntax

378

Function GetRowFileName( roiName As String ) As String

Actuate Foundation Class Reference

AcHtmlReport::GetServerPrefix method

Description

Override GetRowFileName( ) to change the name of the .row file for the .roi
file. The name of the .roi file must include the full path. HTML reports that run
on the Report Server use an .row file. By default, Actuate sets the .row file
name to the same name as the .rox.

AcHtmlReport::GetServerPrefix method
Returns the location of the server on which the HTML report will be deployed.

Syntax
Description

GetServerPrefix( ) As String
GetServerPrefix() affects how the AFC interprets server:// style hyperlinks
in HTML reports. An HTML report does not know where it will be deployed,
so you must override this method to give it that information.
The location format is:
http://web_server/acweb/rpt_server

If the hyperlink includes a server name, that server name is used instead of
rpt_server. If the destination location is relative to the root folder of the server,
AFC prepends the full server prefix.
The default value is the value which was set in the ReportCast URL prefix
property for the root folder of the Report Encyclopedia.

See also

Class AcDBConnection

AcHtmlReport::WantHtml method
Determines whether or not to generate HTML files for the report.

Syntax
Description
Returns

Function WantHtml( ) As Boolean


Actuate generates HTML files for HTML reports. Override this method and
set the return value to False to inhibit the HTML file generation.
True to generate an HTML file.
False to inhibit generation.

Example

You can override AcHtmlReport::WantHtml and AcReport::RoiIsTemporary


together to produce a parameterized report that has the user select whether
HTML files, .roi files, or both are built by the Factory. Use the following
procedure to build the report:

Chapter 3, AFC classes

379

AcHtmlReport::WantHtml method

1 Use the e.Report Designer Professional Parameter Editor to add a report


type selection parameter called Report_type. Report_type can have the
following values:


(H)tml to generate HTML files only

(S)tandard report to generate .roi files only

(B)oth standard and HTML reports to generate both

2 Override AcHtmlReport::WantHtml to examine the value of Report_type


and set return value to False if Report_type is set to S.
3 Override AcReport::RoiIsTemporary to examine the value of Report_type
and set return value to False if Report_type is set to S or B.

See also

380

AcReport::RoiIsTemporary method

Actuate Foundation Class Reference

Class AcHtmlRuleControl

Class AcHtmlRuleControl
A class you use in an HTML report design to display a horizontal line.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcHtmlRuleControl

Description

AcHtmlRuleControl represents the horizontal rule <HR> tag in HTML.


HTML provides only horizontal lines. HTML calls these lines rules. If you
include a horizontal line in a frame in an HTML report, AFC represents this
line as an HTML rule. If the line is vertical, or at an angle, AFC ignores the line
control when generating the HTML output. AFC uses the Position.Y and
EndPosition.Y properties to determine if the line is horizontal. AFC considers
the line to be horizontal if these two properties have the same value.
HTML requires that horizontal rules appear on a line by themselves. If you
include a line control in a frame on the same line as text, AFC will place text
before the line on one line, the rule on a second line, and text after the rule on a
third line.
Use AcHtmlRuleControl to include a horizontal line in an HTML report. You
can also use the standard line control (AcLineControl) in an HTML report.
However, AcHtmlRuleControl provides HTML-specific properties for
formatting the line.

Variables
Variable

Type

Description

Alignment

AcHtmlHorizontal
Alignment

Specifies if the rule is left,


center, or right-aligned.

NoShade

Boolean

Specifies if the rule is


drawn with 3-D shading.
If set to True, the rule is
drawn without shading.
The default is False.

Chapter 3, AFC classes

381

Class AcHtmlRuleControl

Variable

Type

Description

WidthUnits

AcHtmlUnits

Specifies whether the


width is measured in
pixels or as a percentage
of the window width.

Property

HTML attribute

Description

Alignment

align=type

Specifies if the rule is left,


center, or right-aligned.

NoShade

noshade

Specifies if the rule is


drawn with 3-D shading.
If set to True, the rule is
drawn without shading.
The default is False.

Size.Height

size=pixels

The height of the line in


pixels. 0 is the default line
height. (Inherited.)

Size.Width

width=value

The width of the line. 0


means the entire width of
the page. The width is
measured either as a
percentage of the
window width, or in
pixels. (Inherited.)

Properties

WidthUnits

382

Actuate Foundation Class Reference

Specifies if the width is


measured in pixels or as a
percentage of the
window width.

Class AcImageControl

Class AcImageControl
A class you use in the report design to display external images.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcImageControl

Description

Use AcImageControl to display images in your report. You can display a static
image file. Also, if your image file names are contained in a data column, you
can direct Actuate to present different images for each data row based on the
contents of the data column. In this case, the size of the images must be the
same.
If you distribute a report to users through e-mail or through the Report
Encyclopedia, use the Embedded property to include the image in the report
at image design time or image Factory time. If you do not embed images with
reports you distribute, an X appears in place of the image.
The following table lists the types of supported images.
File type

Supported formats

BMP

1 bit per pixel


4, 8, or 24 bits per pixel (RLE encoding)

GIF

4 or 8 bits per pixel. Displayed in DHTML reports


only.

JPG

24 bits per pixel

PCX

1, 4, 8, or 24 bits per pixel

TGA

8, 16, or 24 bits per pixel (RLE encoding)


32 bits per pixel with alpha channel

TIFF

1 bit per pixel (uncompressed)


8, 16, or 24 bits per pixel (LZW compression)
CCITT Fax Groups 3 and 4 compression

To use an image in your report, do the following:


1 Describe how to get the file name for the image:

Chapter 3, AFC classes

383

Class AcImageControl

If the image file name is located on the database, set the FileNameExp to
the name of the data column containing the image file name. The name
of the data column must be enclosed in brackets.

If the name of the data column is not enclosed in brackets, set the
FileName property to the file name of the image to display.

2 Set the Embedded property to direct Actuate when to include the image in
the report:


ImageDesignTime: e.Report Designer Professional compiles the .rod

ImageFactoryTime: the Factory builds the .roi

ImageViewTime: the Viewer or View/Print Process displays the .roi

If you distribute a report to users through e-mail or through the Report


Encyclopedia, set the image controls Embedded property to
ImageDesignTime or ImageFactoryTime. If you do not, an X appears in
place of the image.

Properties

384

Property

Type

Description

Border

AcLineStyle

The kind of border (if any) to display around


the image.

Embedded

AcImage
EmbedType

The time to embed the image:


 ImageDesignTime: e.Report Designer
Professional retrieves the image and
embeds it in the .rox file.
 ImageFactoryTime: The Factory retrieves
the image and embeds it in the .roi file.
 ImageViewTime: The Viewer or View
Process/Print process retrieves the image
when the report is viewed or printed.
The default is ImageDesignTime.

FileName

String

The name of an image file to display. If you


specify ImageFactoryTime or
ImageViewTime, you must provide the full
file path in the Windows Registry or in the
UNIX environment variable as appropriate.

FileName
Exp

Expression

If the image is derived from a data column


enter the name of the data column enclosed in
brackets. For example, enter [catalog.itempic]
to use the itempic data column from the
catalog table as the source for the image.

Actuate Foundation Class Reference

AcImageControl::GetBaseImageName method

Methods
Method

Type

Description

GetBaseImage
Name( )

String

Retrieves the file name for the


image to be displayed when the
report is viewed or printed.

GetFileName( )

String

Returns the file name for the image


to be displayed.

AcImageControl::GetBaseImageName method
Retrieves the file name for the image to be displayed when the report is
viewed or printed.

Syntax
Description

Returns

Function GetBaseImageName( ) As String


Call GetBaseImageName() to return the name of the file containing the image
without any path information. For example, if the file is contained in
C:\Actuate6\Examples\Gifs\Myimg.gif, then GetBaseImageName returns
Myimg.gif.
Name of the file containing the image.

AcImageControl::GetFileName method
Returns the file name for the image to be displayed when the report is viewed
or printed.

Syntax
Description

Returns

Function GetFileName( ) As String


Override GetFileName to specify a custom file name for the image to be
displayed. By default, GetFileName returns the value of the FileName member
variable. If the report runs on the client, the file name can be relative or
absolute. If you use a relative file name, the file name must be relative to the
directory that contains the .roi file. If the report runs on the report server, the
file name must be absolute.
Name of the file containing the image.

Chapter 3, AFC classes

385

Class AcInformixConnection

Class AcInformixConnection
Establishes a connection to an Informix database.
AcComponent
AcConnection
AcDBConnection
AcInformixConnection

Description

Use the AcInformixConnection class to establish a connection to an Informix


database. The application must set the database environment, user name, and
password prior to connecting. Once connected, the application should not
change these values.

Variables
Variable

Type

Description

DatabaseEnvironment

String

The name of the database and/or server


to connect to. Specify either a server and
a database, a database server only, or a
database only.

DllPath

String

The name of the .dll providing the client


database.

Password

String

The client password for the connection.

UserName

String

The client user name for the connection.

Property

Type

Description

DatabaseEnvironment

String

The name of the database and/or server


to connect to. Specify either a server and
a database, a database server only, or a
database only.

DllPath

String
Variable

The name of the DLL providing the


client database.

Properties

386

Password

String

The client password for the connection.

UserName

String

The client user name for the connection.

Actuate Foundation Class Reference

Class AcInformixConnection

Informix data types


The following table describes the default conversion between Actuate data
types and Informix data types.
Informix data type

Mapped to

Boolean

Actuate Integer. Can also be mapped to an


Actuate Long.

Byte

Actuate String.

Char

Actuate String.

Date

Actuate Date. Can also be mapped to an Actuate


String.

Datetime

Actuate Date. Can also be mapped to an Actuate


String.

Decimal

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Double precision

Actuate Double. Can also be mapped to an


Actuate Currency, Single, or String.

Int

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Int8

Actuate Long. Can also be mapped to an Actuate


Single, Double, Currency, or String.

Interval

Actuate String.

Lvarchar

Actuate String.

Money

Actuate Currency. Can also be mapped to an


Actuate Double, Integer, Long, Single, or String.

Nchar

Actuate String.

Nvarchar

Actuate String.

Serial

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Serial8

Actuate Long. Can also be mapped to an Actuate


Single, Double, Currency, or String.

Small float

Actuate Single. Can also be mapped to Actuate


Currency, Double, or String.

Small int

Actuate Integer. Can also be mapped to Actuate


Currency, Double, Long, Single, or String.

Text

Actuate String.

Varchar

Actuate String.

Chapter 3, AFC classes

387

Class AcIntegerControl

Class AcIntegerControl
A class you use in the report design to display integer data.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl
AcDataControl
AcIntegerControl

Description

Use AcIntegerControl to store and display whole numbers. Numbers with


fractions are rounded to the nearest whole number. If you require the precision
of real numbers, use a double control instead.
AcIntegerControl defines a DataValue variable to store the integer value. The
framework generates SetValue( ) to set the value in DataValue. SetValue( ) uses
the value expression you assign to the ValueExp property to generate the
value. Override SetValue( ) if you want to take control of setting the controls
data value.
If you want to change the value or properties of the integer control when the
Factory is building it, you can override the integer controls BuildFromRow( )
method. For example, you can change the properties of the control depending
on the value stored in the DataValue variable. For an example of how to
accomplish this task, see Class AcDataControl. BuildFromRow( ) sets the
value of a control, using data from a data row. A controls BuildFromRow( )
method is called by the enclosing frames BuildFromRow( ) method.

Variables

388

Variable

Type

Description

DataValue

Integer

Holds the integer value. The default is Null.

Actuate Foundation Class Reference

Class AcIterator

Class AcIterator
A base class for all iterators.

Description

AcIterator is the base class for all iterators. This class provides the methods
needed to work with iterators. Most of the time, you create an iterator in one of
the following two ways:


Call the NewIterator method on your collection

Call the GetContentIterator on your report component

These methods can return specialized iterators derived from AcIterator.


Always handle the returned iterator as an instance of AcIterator.

Traversing lists
AcIterator provides two ways to traverse lists of objects. The first way uses the
GetNext method to advance the iterator and return objects. You call the
methods HasMore and IsDone to test whether more objects exist or you have
reached the end of the list. The second way uses the MoveNext to move the
iterator and GetItem to retrieve the item. The return value from MoveNext
tells you when you have reached the end of the list. The latter way improves
list processing because positioning is independent of retrieval. You can also
combine MoveNext with the SkipTo and MoveTo methods to position the
iterator anywhere in the list.
You can position the iterator at a specific item in a list by specifying the items
position number. Items in the list are numbered sequentially starting with 1.
You use the MoveTo method to move the iterator to the correct item in the list
by specifying the position number for the item. Position numbers eliminate the
need to define counters in your code to keep track of the current position in the
list.

Updating items in a list


Iterators are valid only when iterating over a list that does not change. If you
create an iterator over a list, then change the list, the operation of the iterator is
unpredictable. If you must iterate over a list as it changes, you can create a
copy of the list and iterate over the copy until the changes are complete. Or,
you can call the Restart method on the iterator after you have finished
updating the list.

Chapter 3, AFC classes

389

Class AcIterator

Methods

Example

Method

Type

Description

GetItem( )

AnyClass

Returns the item pointed to by the iterator.

GetNext( )

AnyClass

Returns the next item in the list.

GetPosition( )

Integer

Returns the current position of the iterator.

HasMore( )

Boolean

Determines whether there are more items


in the list.

IsDone( )

Boolean

Determines whether there are no more


items in the list.

MoveNext( )

N/A

Moves the iterator to the next position in


the list.

MoveTo( )

N/A

Positions the iterator using an index.

Restart( )

N/A

Positions the iterator before the first item


in the list.

SkipTo( )

N/A

Positions the iterator to a location of an


item in the list.

The following example shows how you create a list and traverse it in
sequential order:
Dim iter As AcIterator
Dim obj As MyClass
Set iter = aCollection.NewIterator( )
Do While iter.HasMore( )
Set obj = iter.GetNext( )
Loop

The following example shows how you create a list and traverse it using
methods that help you process the list sequentially or randomly. The code calls
the NewIterator method on the collection to create the iterator:
Dim iter As AcIterator
Dim obj As MyClass
Set iter = aCollection.NewIterator( )
Do While iter.MoveNext( )
Set obj = iter.GetItem( )
Loop

See also

390

Class AcCollection
Class AcReportComponent

Actuate Foundation Class Reference

AcIterator::GetItem method

AcIterator::GetItem method
Returns the item pointed to by the iterator.

Syntax
Description

Returns

Function GetItem( ) As AnyClass


Use this method to retrieve an item pointed to by the iterator. GetItem does not
change the position of the iterator. This method can be called multiple times to
retrieve the item at a given position. You must not process lists using both
GetNext and GetItem methods because the iterator positioning logic is
different between the two methods.
An object.
Nothing if iterator is not pointing to an object.

See also

AcIterator::GetNext method
AcIterator::MoveNext method

AcIterator::GetNext method
Returns the next item in the list.

Syntax
Description

Returns
See also

Function GetNext( ) As AnyClass


Use GetNext to return the next item in the list. After GetNext returns the
object, it advances the iterator to point to the next item in the list. You must not
process lists using both GetNext and GetItem methods because the iterator
positioning logic is different between the two methods.
The next item in the list.
AcIterator::GetItem method

AcIterator::GetPosition method
Returns the current position of the iterator.

Syntax
Description

Function GetPosition( ) As Integer


Call this method to get the current position of the iterator. The items in the list
have position number 1, 2, and so on. Actuate positions new or restarted
iterators before the start of the list. GetPosition returns zero if the iterator is

Chapter 3, AFC classes

391

AcIterator::HasMore method

positioned before the start of the list. GetPosition returns the number of items
in the list plus one if the iterator is positioned past the end of the list.

Returns

An integer indicating the item number in the list.

AcIterator::HasMore method
Determines whether or not the iterator returns any additional items.

Syntax
Description

Returns

Function HasMore( ) As Boolean


This method determines whether there are more items in the list. This method
is the inverse of IsDone( ). This method can be used to detect if there are more
items when you use the GetNext( ) method to retrieve items.
True if there are other items in the list.
False if there are no more items in the list.

See also

AcIterator::GetNext method

AcIterator::IsDone method
Determines if there are more items in the list.

Syntax
Description

Returns

Function IsDone( ) As Boolean


This method determines whether there are more items in the list. This method
is the inverse of HasMore( ). This method can be used to detect if there are
more items when you use the GetNext( ) method to retrieve items.
True if there are no more items in the list.
False if there are more items in the list.

See also

AcIterator::GetNext method

AcIterator::MoveNext method
Moves the iterator to the next position in the list.

Syntax

392

Function MoveNext( ) As Boolean

Actuate Foundation Class Reference

AcIterator::MoveTo method

Description

Returns

Call the MoveNext( ) method to move the iterator to the next position. After
you create the iterator, you can call MoveNext to position the iterator at the
first item in the list. Then, you can call the GetItem( ) method to retrieve the
item from the list.
True if the next position is in the list.
False if the next position is past the end of the list.

See also

AcIterator::GetItem method

AcIterator::MoveTo method
Positions of the iterator using an index.

Syntax
Parameter
Description

Sub MoveTo( ByVal posn As Integer )


posn
The value of the index after re-positioning the iterator.
Call the MoveTo( ) method to change the position of the iterator using an
index. The first item in the list has a position index equal to one. If the iterator
is positioned before the start of the list, the position indexs value is less than
or equal to zero. If the iterator is positioned past the end of the list, the position
indexs value is greater than the number of items in the list.
The following statement positions the iterator at the third item in the list:
MoveTo (3)

AcIterator::Restart method
Positions the iterator before the first item in the list.

Syntax
Description

Sub Restart( )
Call the Restart( ) method to position the iterator at the beginning of the list.
After the Restart method executes, the iterator is located at position number
zero.

Chapter 3, AFC classes

393

AcIterator::SkipTo method

AcIterator::SkipTo method
Positions the iterator to the location of a specified object.

Syntax
Parameter
Description

Returns

Sub SkipTo( obj As AnyClass )


obj
The object to be located.
Call the SkipTo( ) method to locate a specified object in a list and position the
iterator to its location. Then, you can call the GetItem( ) method to return the
object. If the object cannot be found in the list, the position of the iterator
remains the same.
True if the object can be found.
False if the object cannot be found.

See also

394

AcIterator::GetItem method

Actuate Foundation Class Reference

Class AcLabelControl

Class AcLabelControl
A class you use in the report design to display static, nonsearchable text labels.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl
AcLabelControl

Description

A label control is a constant control that is fully defined at design time. Use it
to display titles and textual information that do not come from a data row. You
specify the text to display through the Text property. To display string data
from a data row, use AcTextControl instead.
Although the properties of a label control are typically set in the Design Editor,
you can write code to change its attributes at run time when the Factory builds
it. For example, you could change the color or text of the label depending on
the value of another control. To accomplish this task, you can override the
label controls Build( ) or BuildFromRow( ) method. The Build method you
override depends on whether the label control is contained in a frame that
processes data rows or not. For more information about when Build( ) and
BuildFromRow( ) are called, see the description for Class AcBaseFrame.

Variables
Variable

Type

Description

Text

String

Contains the text of the control.

Property

Type

Description

Text

String

Contains the text of the control.

Properties

Chapter 3, AFC classes

395

Class AcLeftRightPageList

Class AcLeftRightPageList
Builds a page list with alternating left-right pages.
AcComponent
AcpageList
AcLeftRightPageList

Description

The AcLeftRightPageList class provides a report format that has alternating


left and right pages. AcLeftRightPageList has two component relationships,
LeftPage and RightPage. It also has a FirstIsRight property that can be set in
the property sheet of the Design Editor.
When set to True, AcLeftRightPageList starts the first page as a right-hand
page. When set to False, AcLeftRightPageList starts the first page as a lefthand page.

Properties
Property

Type

Description

FirstIsLeft

Boolean

True if the first page in the page list is a lefthand page.

LeftPage

AcPage

The page style to use for left-hand pages.

RightPage

AcPage

The page style to use for right-hand pages.

Method

Type

Description

NewLeftPage( )

AcPage

Instantiates the left page.

NewRightPage( )

AcPage

Instantiates the right page.

Methods

396

Actuate Foundation Class Reference

AcLeftRightPageList::NewLeftPage method

AcLeftRightPageList::NewLeftPage method
Instantiates the left page.

Syntax
Description
Returns

Function NewLeftPage( ) As AcPage


This method is automatically generated by the Design Editor. Override this
method if you want to perform custom processing for new left pages.
The new page.

AcLeftRightPageList::NewRightPage method
Instantiates the right page.

Syntax
Description
Returns

Function NewLeftPage( ) As AcPage


This method is automatically generated by the Design Editor. Override this
method if you want to perform custom processing for new right pages.
The new page.

Chapter 3, AFC classes

397

Class AcLinearFlow

Class AcLinearFlow
An abstract base class that provides logic for adding frames to a flow that fills
in one direction, either top-down or left-to-right.
AcComponent
AcReportComponent
AcVisualComponent
AcFlow
AcLinearFlow

Description

AcLinearFlow is the abstract base class for flows that fill in one direction,
either top-down or left-to-right. Top-down flows fill with frames in the
standard top-down order, as described in Class AcTopDownFlow. The left-toright flow fills with frames starting on the left-hand side of the flow, with each
subsequent frame placed just to the right of the previous frame. When the
framework receives a frame that does not fit in the remaining space in the flow,
the framework advances to the next flow or page.
If you want to ensure that a flow is just large enough to hold its frames, with
no wasted space, set the ShrinkToFit property to True.

Variables

398

Variable

Type

Description

Alignment

AcFlowPlacement

Specifies how frames should be


aligned. To cause the frame to
appear left-justified within the
flow, specify FlowAlignLeftorTop.
To cause the frame to appear rightjustified, specify
FlowAlignRightorBottom. To have
the frame centered, specify
FlowAlignCenter. You can also do
custom alignment by specifying
FlowAlignCustom. If you choose
custom alignment, Actuate uses
the value of x in the Position
property to align the frame.

Margins

AcMargins

Space to allow between the border


and the contained frames.

Actuate Foundation Class Reference

Class AcLinearFlow

Variable

Type

Description

ShrinkToFit

Boolean

Set to True to make the flow just


large enough to hold the frames
that it contains. False is the default.

Property

Type

Description

Alignment

AcFlowPlacement

Specifies how frames should be


aligned. To cause the frame to
appear left-justified within the
flow, specify FlowAlignLeftorTop.
To cause the frame to appear rightjustified, specify
FlowAlignRightorBottom. To have
the frame centered, specify
FlowAlignCenter. You can also do
custom alignment by specifying
FlowAlignCustom. If you choose
custom alignment, Actuate uses
the value of x in the Position
property to align the frame.

Margins

AcMargins

Space to allow between the border


and the contained frames.

ShrinkToFit

Boolean

Makes the flow just large enough


to hold the frames that it contains.

Properties

Chapter 3, AFC classes

399

Class AcLineControl

Class AcLineControl
A class you use in the report design to display a line.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcLineControl

Description

A line control is a constant control that is fully defined at design time. The
properties you are likely to set are Position, EndPosition, and LineStyle.
Position specifies the starting coordinates of the line, and EndPosition specifies
the end coordinates. The X-coordinate is measured from the top left corner of
the frame that contains the line control. The Y-coordinate is measured from the
top of the enclosing frame.
The Line Style properties let you specify the color, style, and width of the line.
The length of the line is determined by the Position and EndPosition
properties and the width by the width property under LineStyle.

Variables
Variable

Type

Description

EndPosition

AcPoint

The endpoint of the line, relative to the


top left.

LineStyle

AcPoint

The style of the line.

Property

Type

Description

EndPosition

AcPoint

The endpoint of the line, relative to the


top left.

LineStyle

AcPoint

The style of the line.

Properties

400

Actuate Foundation Class Reference

Class AcLineControl

Considerations for HTML reports


HTML provides only horizontal lines. HTML calls these lines rules. If you
include a horizontal line in a frame in an HTML report, AFC represents this
line as an HTML rule. If the line is vertical, or at an angle, AFC ignores the line
control when generating the HTML output. AFC uses the Position.Y and
EndPosition.Y properties to determine if the line is horizontal. AFC considers
the line to be horizontal if these two properties have the same value.
HTML requires that horizontal rules appear on a line by themselves. If you
include a line control in a frame on the same line as text, AFC will place text
before the line on one line, the rule on a second line, and text after the rule on a
third line.
Use AcHtmlRuleControl to include a horizontal line in an HTML report.
AcHtmlRuleControl provides additional properties specifically for HTML
rules.

Chapter 3, AFC classes

401

Class AcList

Class AcList
A base class that defines the list interface.
AcCollection
AcOrderedCollection
AcList

Description

The AcList class is an abstract class that defines the list interface. It provides a
complete set of list operations including the ability to add an item anywhere in
the list, to remove an item anywhere in the list, or to obtain statistics about the
contents of the list.
Actuate defines one concrete subclass of AcList, AcSingleList, which
implements a single linked list.

Methods

Example

Method

Type

Description

AddToHead( )

N/A

Adds an item to the beginning of a list.

Contains( )

Boolean

Returns True if the list contains the item.

GetIndex( )

Integer

Returns the position of the node specified


in the list.

InsertAfter( )

N/A

Inserts a node in the list after the node


specified.

InsertBefore( )

N/A

Inserts a node in the list before the node


specified.

RemoveHead( )

AnyClass

Removes the first node from the list.

The following example shows how you create a list and traverse it with a list
iterator:
Class MyClass
Dim counter As Integer
End Class
Sub Main ( )
Dim list As AcList
Dim obj As MyClass
Dim count As Integer
Dim iterator As AcIterator

402

Actuate Foundation Class Reference

AcList::AddToHead method

'Create a list
Set list = New AcSingleList
'Create an object and add it to the list
Set obj = New MyClass
obj.counter = 1
list.AddToTail( obj )
'Create a second object and append it to the list
Set obj = New MyClass
obj.counter = 2
list.AddToTail( obj )
'Count the number of objects in the list
count = list.GetCount( )
MsgBox "Number of objects in the list: " & count
'Create a list iterator and get each object in the list
Set iterator = New AcSingleListIterator( list )
Do While iterator.HasMore( )
Set obj = iterator.GetNext( )
MsgBox "The position of this object in the list:" & obj.counter
Loop
'Delete the objects from the list
list.RemoveHead( )
list.RemoveHead( )
End Sub

See also

Class AcCollection
Class AcOrderedCollection
Class AcSingleList

AcList::AddToHead method
Adds an item to the beginning of the list.

Syntax
Parameter
Description

Sub AddToHead( item As AnyClass )


item
The node to add to the list.
Adds the item specified to the beginning of the list.

Chapter 3, AFC classes

403

AcList::Contains method

AcList::Contains method
Determines whether or not the list contains the item.

Syntax
Parameter
Description
Returns

Function Contains( item As AnyClass ) As Boolean


item
The list item.
This method determines whether or not a list contains the specified item. It
searches the list for the first occurrence of the item.
True if the list contains the specified item.
False if the list does not contain the specified item.

AcList::GetIndex method
Returns the position of the specified node.

Syntax
Parameter
Description
Returns

Function GetIndex( item As AnyClass ) As Integer


item
The node to locate in the list.
This method gets the index of the specified node from the list.
The position of the specified node in the list.
Zero if the node does not exist in the list.

AcList::InsertAfter method
Inserts an item following a specified node.

Syntax
Parameter

Sub InsertAfter( item As AnyClass, after As AnyClass )


item
The item to insert into the list.
after
The item after which to insert the specified item.

Description

404

Inserts a node following the specified node. If the specified node cannot be
located, InsertAfter( ) raises an error.

Actuate Foundation Class Reference

AcList::InsertBefore method

AcList::InsertBefore method
Inserts an item before the specified node.

Syntax
Parameter

Sub InsertBefore( item As AnyClass, before As AnyClass )


item
The item to insert into the list.
before
The item before which to insert the specified item .

Description

Inserts a node before the specified node. If the specified node cannot be
located, InsertBefore( ) raises an error.

AcList::RemoveHead method
Removes the first node from a list.

Syntax
Description
Returns

Function RemoveHead( ) As AnyClass


Removes and returns the first node from a list.
Returns the class of the new head node after the original head node is
removed.

Chapter 3, AFC classes

405

Class AcMemoryBuffer

Class AcMemoryBuffer
A data filter that converts a sequential data stream into one which allows
random access by buffering data rows in memory.
AcComponent
AcDataAdapter
AcDataFilter
AcSingleInputFilter
AcMemoryBuffer

Description

Many data sources provide only the ability to read rows in a sequential firstto-last order. However, there are times when you need to move through the
data in random order, perhaps making multiple passes over certain groups of
data to print the data first in a graph, then in a tabular format. The
AcMemoryBuffer class acts as a converter to change a sequential data source
into a random-access data stream. It does so by storing (buffering) data rows
in memory as you read them so that you can return back to them again later.
You do not need to use this class if your data source already provides random
access.
Because this data filter supports random access, the CanSeek( ) method
returns True, and all the various random-access methods such as SeekTo( ) and
Rewind( ) are available.
AcMemoryBuffer lets you manipulate data as if you had direct access to the
input source. You can locate rows by specifying a row number with SeekTo( )
or by specifying a relative position with SeekBy( ). You can rewind to the
beginning of the data buffer with Rewind( ) or advance to the end with
SeekToEnd( ). The row number starts at 1. See class AcDataAdapter for details.
Although not required, you may choose to flush the buffer occasionally to
remove from memory those rows that you no longer need. For example, if you
need to make two passes over the data for each customer, you can flush the
rows for each customer as you complete the process. Flushing the buffer
causes no change to the way you access rows. You simply will not be able to
seek back to revisit the flushed rows. See the FlushBuffer( ) and
FlushBufferTo( ) methods for details.
You can also use the memory buffer class to gather data rows that your
application creates programmatically. For example, you might want to
produce a report of account activity. For every account with exceptional items,
you want to create a second data row that you will print in a second report. To
do this, create a memory buffer without an input adapter, then call

406

Actuate Foundation Class Reference

AcMemoryBuffer::AddRowToBuffer method

AddRowToBuffer( ) to add each of your exception rows to the buffer. Then, in


a later report section, you can read and process these rows in the usual way.

Methods

See also

Method

Type

Description

AddRowToBuffer( )

N/A

Programmatically adds a row to the data


row buffer.

FlushBuffer( )

N/A

Frees the rows currently buffered.

FlushBufferTo( )

N/A

Frees the rows in the buffer up to and


including a specific row.

GetBufferCount( )

Integer

Gets the number of rows currently in the


buffer.

GetBufferStart( )

Integer

Gets the position (relative to the beginning


of the input set) of the first row in the
buffer. The first row is 1.

Class AcDataAdapter
Class AcDataSource
Class AcMemoryDataSorter
Class AcSingleInputFilter

AcMemoryBuffer::AddRowToBuffer method
Adds a row to the data row buffer.

Syntax
Parameter
Description

Sub AddRowToBuffer( row As AcDataRow )


row
The data row to add to the buffer.
AddRowToBuffer( ) adds the specified row to the end of the buffer. Use this
method to programmatically add a row to the buffer. This method does not
modify the current read position.

AcMemoryBuffer::FlushBuffer method
Frees the rows currently buffered.

Syntax

Sub FlushBuffer( )

Chapter 3, AFC classes

407

AcMemoryBuffer::FlushBufferTo method

Description

FlushBuffer( ) removes the current set of rows from the buffer. You may choose
to flush the buffer occasionally to remove from memory those rows that you
no longer need.
Flushing the buffer causes no change to the way you access rows. You simply
will not be able to seek back to revisit the flushed rows. For example, if the
buffer currently contains rows 20 through 40, and you flush the buffer, you can
still seek to row 41, 42, or any number up to the number of rows in the input
set. However, if you try to seek back to row 40 or earlier, you will get a Basic
run-time error.

See also

AcDataAdapter::FlushBuffer method
AcDataAdapter::FlushBufferTo method
AcMemoryBuffer::FlushBufferTo method

AcMemoryBuffer::FlushBufferTo method
Frees the rows in the buffer up to and including a specific row.

Syntax
Parameter
Description

Sub FlushBufferTo( posn As Integer )


posn
The data row to flush to.
FlushBufferTo( ) lets you flush rows in the buffer up to and including the row
at the given position. For example, when processing rows programmatically,
you may read rows from one customer until you reach the first row for the
next customer. After you are done processing the rows for the first customer,
you can flush those rows, but retain the first row for the next customer.
This method does nothing if the given position is before the first buffered row
or after the last buffered row. If the position is the same as the last row in the
buffer, then this method does the same thing as FlushBuffer( ).

See also

AcDataAdapter::FlushBuffer method
AcDataAdapter::FlushBufferTo method
AcMemoryBuffer::FlushBuffer method

AcMemoryBuffer::GetBufferCount method
Gets the number of rows currently in the buffer.

Syntax

408

Function GetBufferCount( ) As Integer

Actuate Foundation Class Reference

AcMemoryBuffer::GetBufferStart method

Description
Returns

This method determines the number of rows that are currently in the buffer.
Rows that have been flushed are not counted.
The number of rows currently in the buffer.

AcMemoryBuffer::GetBufferStart method
Gets the position of the first row in the buffer.

Syntax
Description

Returns

Function GetBufferStart( ) As Integer


If the buffer has data rows, this method returns the position of the first row,
relative to the beginning of the input set. If the buffer is empty, then this
function returns the position of the row that will become the first row in the
buffer the next time you call Fetch( ).
Returns the position, relative to the beginning of the input set, of the first row
in the buffer.

Chapter 3, AFC classes

409

Class AcMemoryDataSorter

Class AcMemoryDataSorter
A data filter that has the capability to sort rows in a memory buffer.
AcComponent
AcDataAdapter
AcDataFilter
AcSingleInputFilter
AcMemoryBuffer
AcRecordBuffer
AcMemoryDataSorter

Description

AcMemoryDataSorter is a data filter that uses the buffering capabilities of its


superclass, AcMemoryBuffer, to read and store data rows in memory. In
addition, it provides a sort algorithm that subclasses can refine to implement
the sort details.

Subclassing AcMemoryDataSorter
To implement the sort functions to process data rows:


Derive a class from AcMemoryDataSorter.

Override the Compare( ) method, which implements the sort algorithm.

Methods

See also

410

Method

Type

Description

Compare( )

Integer

A pure virtual method that must be


overridden to implement the comparison
logic.

CompareKeys( )

Integer

Compares two strings or numbers.

Class AcDataAdapter
Class AcDataSource
Class AcMemoryBuffer
Class AcSingleInputFilter

Actuate Foundation Class Reference

AcMemoryDataSorter::Compare method

AcMemoryDataSorter::Compare method
Compares two data rows.

Syntax
Parameter

Function Compare( row1 As AcDataRow, row2 As AcDataRow ) As Integer


row1
A reference to the first row to compare.
row2
A reference to the second row to compare.

Description

This method defines how the sort algorithm determines when one row is
considered smaller than another. The comparison is based on sort keys. A sort
key is a column on which you want to base the sort. The following example
shows a sort based on State and Customer Name.
When writing the Compare method, cascade the comparisons as follows:


If the first sort key column differs between the two rows, return 1 if
key 1 > key 2 or -1 if key 1 < key 2.

If the first sort key columns are the same, then repeat the process on the
second key, third key, and so on.

This process does not work, however, for real numbers because of the
rounding errors that can be introduced when converting from a floating point
to an integer.
You must override the Compare( ) method when you create a custom sort
filter. If you forget to override this method, you will get a run-time error when
the memory sorter attempts to sort the data.

Returns

A positive number if row1 goes after row2.


0 if row1 equals row2.
A negative number if row1 goes before row2.

Example

The following example compares two customers by state. If the states are
identical, then Compare( ) compares the customer names:
Function Compare( row1 As AcDataRow, row2 As AcDataRow ) As Integer
Dim Cust1 As CustomerRow
Dim Cust2 As CustomerRow
Set Cust1 = row1
Set Cust2 = row2
Compare = CompareKeys( Cust1.State, Cust2.State )
If Compare = 0 Then

Chapter 3, AFC classes

411

AcMemoryDataSorter::CompareKeys method

Compare = Cust1.CustName - Cust2.CustName


End If
End Function

See also

AcMemoryDataSorter::CompareKeys method

AcMemoryDataSorter::CompareKeys method
Compares two sort keys.

Syntax
Parameter

Function CompareKeys( key1 As Variant, key2 As Variant ) As Integer


key1
A reference to the first key to compare.
key2
A reference to the second key to compare.

Description

Returns

Call CompareKeys( ) to compare two key values in a column. You typically


call CompareKeys( ) from Compare( ), which defines the sort algorithm. For
an example of using CompareKeys( ), see the example in
AcMemoryDataSorter::Compare method.
-1 if key1 is less than key2.
0 if key1 equals key2.
1 if key1 is more than key2.

See also

412

AcMemoryDataSorter::Compare method

Actuate Foundation Class Reference

Class AcMSSQLConnection

Class AcMSSQLConnection
Establishes a connection to a Microsoft SQL database.
AcComponent
AcConnection
AcDBConnection
AcMSSQLConnection

Description

Use the AcMSSQLConnection class to establish a connection to a Microsoft


SQL database. The application must set the server name, user name, and
password prior to connecting. Once connected, the application should not
change these values.

Variables
Variable

Type

Description

DllPath

String

The name of the DLL providing client


database.

Password

String

The client password for the connection.

ServerName

String

The client server name for the connection.

UserName

String

The client user name for the connection.

Property

Type

Description

DllPath

String
Variable

The name of the DLL providing client


database. Default is the most common
name used for the connectivity DLL
provided by Microsoft.

Password

String
Variable

The client password for the connection.

ServerName

String
Variable

The client server name for the connection.

UserName

String
Variable

The client user name for the connection.

Properties

Chapter 3, AFC classes

413

Class AcMSSQLConnection

MS-SQL data types


The following table describes the default conversion between Actuate data
types and MS-SQL data types.

414

MS-SQL data type

Mapped to

Binary

Actuate String.

Bit

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single or String.

Char

Actuate String.

DateTime

Actuate Date. Can also be mapped to an Actuate


String.

Decimal

Actuate Double. Can also be mapped to an


Actuate Integer, Long, Single, or String.

Float

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Image

String

Int

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Money

Actuate Currency. Can also be mapped to Actuate


Double, Integer, Long, Single, or String.

Nchar

Actuate String.

Ntext

Actuate String.

NVarchar

Actuate String.

Numeric

Actuate Double. Can also be mapped to an


Actuate Integer, Long, Single, or String.

Real

Actuate Double. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Smallint

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

SmallDateTime

Actuate Date. Can also be mapped to an Actuate


String.

SmallMoney

Actuate Currency. Can also be mapped to Actuate


Double, Integer, Long, Single, or String.

Sysname

Actuate String.

Text

Actuate String.

TimeStamp

Actuate String.

Actuate Foundation Class Reference

Class AcMSSQLConnection

MS-SQL data type

Mapped to

Tinyint

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single or String.

Uniqueidentifier

Actuate String.

Varbinary

Actuate String.

Varchar

Actuate String.

Actuate accesses MS-SQL databases using the DB-library API. The DB-library
API only returns 255 characters of data. If the data column size for Char,
Varchar, Ntext, Nvar, or NChar exceeds 255 characters, the remainder of the
database column is truncated.

About queries
MS-SQL uses identifiers to name SQL server objects, such as servers and
databases, and database objects, such as tables, views, columns, and
procedures. Identifiers can include special characters and reserved words. You
must enclose any identifier that contains a special character or reserved word
in quotes. For example, if your table name contains blanks, enclose the table
name identifier with quotes in the SQL query as follows:
SELECT * FROM New York office

To enable the use of quoted identifiers by MS-SQL DB-library API, Actuate


issues the following command at the start of each session:
SET QUOTED_IDENTIFIER ON

Chapter 3, AFC classes

415

Class AcMultipleInputFilter

Class AcMultipleInputFilter
A base class for data filtersone type of data adapterthat accepts input from
any number of data adapters, processes the data, and then passes it to the next
data adapter or to the report.
AcComponent
AcDataAdapter
AcDataFilter
AcMultipleInputFilter

Description

AcMultipleInputFilter defines the mechanism for filtering and sorting data


from multiple data sources. Multi-input data filters work with data sources to
produce and deliver data rows to the report, as the following figure illustrates.
Data
Input Source

Data source
(e.g.
customers)

Data row 1
Multi-input
data filter

Data source
(e.g. orders)
Data row 2

Data row

Data source
(e.g. items)
Data row 3
Data stream
Report section

The data sources are not limited to retrieving data from a single input source,
as the figure suggests. For example, one data source could be receiving data
from an SQL database, and another from an ODBC database.
A multi-input data filter receives input from other data adapters, either data
sources or other data filters. You can use the Design Editor to specify the input
adapters that provide input rows to the filter.
To implement the filter algorithm, you must override the Fetch( ) method.
416

Actuate Foundation Class Reference

Class AcMultipleInputFilter

Working with the input adapters


The multiple input filter creates, opens, reads, and closes a set of one or more
input adapters. You specify these adapters by dropping them into the Input
slot in the structure pane. The multiple input filter automatically instantiates,
opens, and closes the adapters. You must write code in the Fetch( ) method to
work with the input adapters.
The Start( ) method of the multiple input filter instantiates each of the input
adapters that you specify in the Input slot in the structure pane. These
adapters live in an AcList called InputAdapters. Instead of (or in addition to)
the adapters you specify in the structure pane, you can also add adapters
programmatically by using the various methods on AcList. Start( ) then
iterates over these to give each adapter its connection and starts the adapter.
Similarly, Finish( ) iterates over each adapter to close the input adapter.
You must implement the Fetch( ) method to work with the adapters. When
you do, you can use the various list methods on AcList to work with the list of
adapters. Also, you can use an iterator (of type AcIterator) to easily loop over
the adapters. The adapters appear in the list in the same order that they
appeared in the structure pane.
You can build many kinds of filters using this class. For example, you can
create a subclass to:


Concatenate together the rows from each of the input filters. This is a union
filter.

Join or merge rows from one input adapter with those from a second input
adapter. This is a merge filter.

Return all rows from one adapter, except those that appear in another
adapter. This is a subtraction filter.

Subclassing AcMultipleInputFilter
Typically, you subclass AcMultipleInputFilter to create a custom filter:


Override Fetch( ) to specify how to process the data.

Optionally, override the Start( ) method to specify a different way to create


the input adapters.

Variables
Variable

Type

Description

InputAdapters

AcList

A list of the input adapters.

Chapter 3, AFC classes

417

Class AcMultipleInputFilter

Methods

Example

Method

Type

Description

NewInputAdapter( )

AcDataAdapter

Instantiates the input adapters


specified in the Input slot.

The following example overrides Start( ), Fetch( ), and Finish( ) to create a


union filter. It also defines two variables. The first is called UnionIter of type
AcIterator. The second is called CurrentInput of type AcDataAdapter:
Function Start( ) As Boolean
' Start the multiple input filter
Start = Super::Start( )
If Not Start Then
Exit Function
End If
' Keep track of the input adapter from which to read.
Set UnionIter = InputAdapters.NewIterator( )
Set CurrentInput = UnionIter.GetNext( )
End Function
Function Fetch( ) As AcDataRow
Do While True
' If all the adapters have been read, then just return Nothing.
If CurrentInput Is Nothing Then
Exit Function
End If
' Try to read the next row from the current input adapter.
Set Fetch = CurrentInput.Fetch( )
' If there is a row available, then return it.
If Not Fetch Is Nothing Then
Exit Function
End If
' Move to the next input adapter.
Set CurrentInput = UnionIter.GetNext( )
Loop
End Function
Sub Finish( )
' Delete the iterator created earlier
Set UnionIter = Nothing

418

Actuate Foundation Class Reference

AcMultipleInputFilter::NewInputAdapter method

' Finish the multiple input filter.


Super::Finish( )
End Sub

See also

Class AcDataAdapter
Class AcSingleInputFilter

AcMultipleInputFilter::NewInputAdapter method
Creates an input adapter.

Syntax
Description

Sub NewInputAdapter( )
Start( ) calls NewInputAdapter( ) to create the input adapters. You do not need
to override this method unless you want to specify a different way to create an
input adapter.
By default, this method instantiates the adapters you dropped into the Input
slot in the structure pane.

Chapter 3, AFC classes

419

Class AcObjectArray

Class AcObjectArray
A dynamic array of objects.
AcCollection
AcOrderedCollection
AcObjectArray

Description

Use AcObjectArray to create a resizable array of objects. AcObjectArray


provides the mechanism for resizing an array as needed. The object array can
be more efficient than an AcSingleList collection if your application traverses
the objects in the collection frequently.
Array indexes start at 1 and end at the GetCount( ) value. If you try to retrieve
a value beyond the bounds of an array using GetAt( ), Actuate returns a runtime error. You can, however, use SetAt( ) to set the value of an array beyond
its current upper bound. SetAt( ) resizes the array as needed.
To reduce memory allocations, the array expands its internal storage in
predefined increments. By default, the increment value is 10. Whenever the
object array needs to expand, the framework allocates 10 slots. If you expect
your array to grow in larger amounts, you can use SetGrowthIncrement( ) to
increase the increment value.

Methods

See also

420

Method

Type

Description

ResizeTo( )

N/A

Sets the size of the array.

SetAt( )

N/A

Places an object in a specified array


location.

SetGrowth
Increment( )

N/A

Sets the number of slots to add to the


array each time it expands.

Class AcCollection
Class AcIterator
Class AcOrderedCollection

Actuate Foundation Class Reference

AcObjectArray::ResizeTo method

AcObjectArray::ResizeTo method
Sets the size of the array.

Syntax
Parameter
Description

Sub ResizeTo( newSize As Integer )


newSize
The new size of the array.
Use ResizeTo( ) to change the size of the array. You typically do not need to
explicitly resize the array because the array methods do so automatically. For
example, when you use SetAt( ) to place an object in an array location and you
specify a location beyond the current size, SetAt( ) automatically resizes the
array.
If you want to increase or decrease the array size by a specific amount, use
ResizeBy( ).

See also

AcObjectArray::SetAt method

AcObjectArray::SetAt method
Places an object in a specified array location.

Syntax
Parameter

Sub SetAt( index As Integer, obj As AnyClass )


index
The location in which to store the object. The index must be 1 or greater.
obj
The object to store.

Description

Use SetAt( ) to store an object in a particular array location. If the index you
specify is beyond the current array size, SetAt( ) resizes the array accordingly.
If the index you specify is within the current array size, SetAt( ) places the
specified object in the existing location, replacing any object that might be
stored there.
To store an object to the end of the array, use AddToTail( ).

See also

AcOrderedCollection::AddToTail method

Chapter 3, AFC classes

421

AcObjectArray::SetGrowthIncrement method

AcObjectArray::SetGrowthIncrement method
Sets the number of slots to add to the array each time it expands.

Syntax
Parameter
Description

422

Sub SetGrowthIncrement( incr As Integer )


incr
The number of slots to add to the array whenever the array expands.
By default, the array expands its internal storage by 10 when the array grows.
Use SetGrowthIncrement( ) to increase the default increment value if you
expect your array to expand in larger amounts.

Actuate Foundation Class Reference

Class AcODBCConnection

Class AcODBCConnection
Establishes a connection to an ODBC database.
AcComponent
AcConnection
AcDBConnection
AcODBCConnection

Description

Use the AcODBCConnection class to establish a connection to an ODBC


database. The application must set the connection string, data source, user
name, and password prior to connecting. Once connected, the application
should not change these values.

Variables
Variable

Type

Description

ConnectionString String

Any additional text that ODBC needs to


establish its connection.

DataSource

String

The ODBC data source.

DllPath

String

The name of the DLL providing client


database.

Password

String

The client password for the connection.

UserName

String

The client user name for the connection.

Type

Description

Properties
Property

ConnectionString String
Variable

Any additional text that ODBC needs to


establish its connection.

DataSource

String
Variable

The ODBC data source.

DllPath

String

The name of the .dll providing client


database. Default is the most common
name used for the connectivity .dll
provided by ODBC.

Chapter 3, AFC classes

423

Class AcODBCConnection

Property

Type

Description

Password

String
Variable

The client password for the connection.

UserName

String
Variable

The client user name for the connection.

ODBC data types


The following table describes the default conversion between Actuate data
types and ODBC data types.

424

ODBC data type

Mapped to

Bigint

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Binary

Actuate String.

Bit

Actuate Integer. Can also be mapped to an


Actuate Double, Long, Single, or String.

Char

Actuate String.

Date

Actuate Date. Can also be mapped to an Actuate


String.

Decimal

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Double

Actuate Double. Can also be mapped to an


Actuate Currency, Single, or String.

Float

Actuate Double. Can also be mapped to an


Actuate Currency, Single, or String.

Guid

Actuate String.

Integer

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Interval_Day

Actuate Integer. Can also be mapped to an


Actuate Double, Long, Single, or String.

Interval_Day_To_Hour

Actuate String. Can also be mapped to an Actuate


Double, Integer, Long, or Single.

Interval_Day_To
_Minute

Actuate String. Can also be mapped to an Actuate


Double, Integer, Long, or Single.

Interval_Day_To
_Second

Actuate String. Can also be mapped to an Actuate


Double, Integer, Long, or Single.

Actuate Foundation Class Reference

Class AcODBCConnection

ODBC data type

Mapped to

Interval_Hour

Actuate Integer. Can also be mapped to an


Actuate Double, Long, Single, or String.

Interval_Hour_To
_Minute

Actuate String. Can also be mapped to an Actuate


Double, Integer, Long, or Single.

Interval_Hour_To
_Second

Actuate String. Can also be mapped to an Actuate


Double, Integer, Long, or Single.

Interval_Minute

Actuate Integer. Can also be mapped to an


Actuate Double, Long, Single, or String.

Interval_Minute
_To_Second

Actuate String. Can also be mapped to an Actuate


Double, Integer, Long, or Single.

Interval_Month

Actuate Integer. Can also be mapped to an


Actuate Double, Long, Single, or String.

Interval_Second

Actuate Integer. Can also be mapped to an


Actuate Double, Long, Single, or String.

Interval_Year

Actuate Integer. Can also be mapped to an


Actuate Double, Long, Single, or String.

Interval_Year_To
_Month

Actuate String. Can also be mapped to an Actuate


Double, Integer, Long, or Single.

Longvarbinary

Actuate String.

Longvarchar

Actuate String.

Numeric

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Real

Actuate Single. Can also be mapped to an Actuate


Currency, Double, or String.

Small_Int

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Time

Actuate String.

Timestamp

Actuate Date. Can also be mapped to an Actuate


String.

Tinyint

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Type_Date

Actuate Date. Can also be mapped to an Actuate


String.

Type_Time

Actuate String.

Type_Timestamp

Actuate Date. Can also be mapped to an Actuate


String.

Varbinary

Actuate String.

Chapter 3, AFC classes

425

Class AcODBCConnection

426

ODBC data type

Mapped to

Varchar

Actuate String.

Wchar

Actuate String.

Wlongvarchar

Actuate String.

Wvarchar

Actuate String.

Actuate Foundation Class Reference

Class AcOleContainerControl

Class AcOleContainerControl
Implements an OLE container control.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcOleControl
AcOleContainerControl

Description

An AcOleContainerControl holds either an OLE client item or an OCX (OLE


custom control). The term OLE container item is a general term for both.
AcOleContainerControl contains methods to execute actions for the specific
container as well as housekeeping methods. This control does not own a
client item, but it is associated with one. This class uses the inherited
properties ContextID and ContainerID (from AcOleControl) to find the
associated OLE container item.
The OLE container item is associated with an OLE data object. You can
manipulate the OLE object using OLE Automation. The method Object( )
references the OLE object.

Methods
Method

Type

Description

CloseOrDeactivate( )

Boolean

Closes or deactivates the specified OLE


container item.

DoVerb( )

Boolean

Executes the action specified for the


specified OLE container item.

Object( )

Object

Returns the OLE object associated with


the control.

OnActivate( )

N/A

Called before the container control is


displayed.

OnCreate( )

N/A

Called by the framework as the control is


created.

OnLButtonDblClk( )

Boolean

Overrides the default implementation in


AcVisualComponent.

Chapter 3, AFC classes

427

AcOleContainerControl::CloseOrDeactivate method

AcOleContainerControl::CloseOrDeactivate method
Closes or deactivates the specified OLE container.

Syntax
Description

Returns

CloseOrDeactivate( ) As Boolean
Closes or deactivates the specified OLE container. If the OLE container item is
in-place and active, CloseOrDeactivate( ) deactivates the container. If the OLE
container item is open within the server application, CloseOrDeactivate( )
closes the server application.
True if the OLE container was closed properly.
False if the item was neither open nor in-place and active.

AcOleContainerControl::DoVerb method
Executes the action specified for the OLE container.

Syntax
Parameter

Function DoVerb( verb As Integer, view As AcReportView ) As Boolean


verb
The action to take.
view
The view that contains the OLE container.

Description

Returns

Finds the associated container item and executes the verb specified. The
possible verbs are:
Verb

Description

OleverbPrimary

Primary verb for the container.

OleverbShow

Display container for editing.

OleverbOpen

Edit in server application or in a separate window.

OleverbHide

Hide the OLE container item.

True if the action specified was executed properly.


False if the action specified was not executed.

428

Actuate Foundation Class Reference

AcOleContainerControl::Object method

AcOleContainerControl::Object method
Returns the OLE data object associated with the OLE container item.

Syntax
Description

Returns

Function Object( ) As Object


Finds the associated OLE container item and returns its OLE object as an
Object data type. Use the returned object to manipulate the data object using
OLE Automation.
The OLE object associated with the OLE container item.

AcOleContainerControl::OnActivate method
Called by the framework as the control is opened.

Syntax
Description

Sub OnActivate( )
Called by the framework as the control is opened for display in the report. This
is different from activating the OLE container item using DoVerb( ). Override
this method in a subclass to manipulate the container item before it is
displayed.
The default implementation creates a copy if CreateClone is True and updates
the key values to identify the newly created clone.

AcOleContainerControl::OnCreate method
Called by the framework as the control is being created.

Syntax
Description

Sub OnCreate( )
Called by the framework as the control is being created. You can override this
method to perform custom initialization. The default implementation saves
the original container keys if CreateClone is True.

AcOleContainerControl::OnLButtonDblClk method
Overrides the default implementation in AcVisualComponent.

Syntax

Function OnLButtonDblClk( view As AcReportView, shift As AcShiftKeyState,


x As Integer, y As Integer ) As Boolean

Chapter 3, AFC classes

429

AcOleContainerControl::OnLButtonDblClk method

Parameter

view
The window the report is in.
Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. Shift can contain one of the following values:
Keys pressed

Bit value

Shift value

None

NoKeys

Shift

ShiftKey

Ctrl

ControlKey

Shift + Ctrl

Both ShiftKey and ControlKey

Alt

AltKey

Shift + Alt

Both ShiftKey and AltKey

Ctrl + Alt

Both CtrlKey and AltKey

x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.
y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

OnLButtonDblClk( ) is called by the framework in response to the user


double-clicking the OLE container control. This method overrides the default
implementation in AcVisualComponent.
The default implementation selects and activates the OLE container using the
primary verb. If the user presses the Ctrl key while double-clicking, the OLE
container item is activated using the Open verb instead.

Returns

True if the event is handled.


False if the event is not handled.

See also

430

AcOleContainerControl::DoVerb method
AcVisualComponent::OnLButtonDblClk method

Actuate Foundation Class Reference

Class AcOleControl

Class AcOleControl
An abstract class for OLE controls.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcOleControl

Description

AcOleControl is an abstract class for OLE controls. You normally do not


subclass AcOleControl.

Properties
Property

Type

Description

CreateClone

Boolean

True means that the Viewer creates a copy


(clone) of the original OLE container item
before displaying it. False means that the
Viewer displays the original OLE container
item.

TrueSize

Boolean

True means to disregard the size of the AFC


control. Displays the true size of the OLE
container item, as reported by the OLE server
application. False means to display the OLE
container item using the size specified in the
AFC control.

TrueSize property
The TrueSize property controls how the control is displayed. TrueSize is most
useful for linked OLE items, since the contents and the size can change
without using Actuate.
When TrueSize is True, the framework disregards the size of the AFC control.
It displays the true size of the OLE container, as reported by the OLE server
application. TrueSize is True by default, but the Design Editor automatically
changes it if the user changes the size of the AFC OleContainer control. The
user can change this setting in the Design Editor.

Chapter 3, AFC classes

431

Class AcOleControl

With TrueSize set to True, the content appears as it was intended by the server
application, but you have no control over the size it takes. It may, if the size
increased since the design was created, overwrite other elements of the report.
When TrueSize is False, the framework displays the OLE container using the
size specified in the AFC. When False, you will always know how much room
on the display the control is taking, but the content might appear distorted.

CreateClone property
This setting affects multiple OLE containers. If True, the AFC Basic code
creates a copy (clone) of the original OLE container. You can then change the
item before it displays. With a clone, the changes only affect this one instance.
If the CreateClone property is False, the change affects all instances. If you do
not intend to make changes to each instance, you can set this property to False
to reduce memory requirements.

Example

You want to show a graph using OLE, which will appear several times on each
page. The graph needs to change, using OLE Automation, depending on the
data in the report. Set CreateClone to True, otherwise changes to one graph
will affect all the others.
OLE Container
Copies

Multiple OLE Containers

Singe OLE Container

CreateClone = TRUE

CreateClone = FALSE

= AcOleContainerControls

The code displaying the OLE item removes the clones from memory when
done. The setting of CreateClones is used to determine this (see the previous
discussion). Thus, it is important that this property correctly reflects the status
of the OLE item. Be aware of this when modifying default behaviors.

432

Actuate Foundation Class Reference

Class AcOracleConnection

Class AcOracleConnection
Establishes a connection to an Oracle database.
AcComponent
AcConnection
AcDBConnection
AcOracleConnection

Description

Use the AcOracleConnection class to establish a connection to an Oracle


database. The application must set the server name, user name, and password
prior to connecting. Once connected, the application should not change these
values.

Variables
Variable

Type

Description

DllPath

String

The name of the .dll providing the client


database.

Password

String

The client password for the connection.

HostString

String

The client server name for the connection.

UserName

String

The client user name for the connection.

Properties
Property

Type

Description

DbInterface

String

The name of the .dll providing the client


database.
The default is acorcl90.

Password

String
Variable

The client password for the connection.

HostString

String
Variable

The client server name for the connection.

UserName

String
Variable

The client user name for the connection.

Chapter 3, AFC classes

433

Class AcOracleConnection

Oracle data types


The following table describes the conversion between Actuate data types and
Oracle data types.

434

Oracle data type

Mapped to

Timestamp

Oracle 9 only. Actuate Date Time. Can also be


mapped to Actuate String.

Timestamp With Time


Zone

Oracle 9 only. Actuate Date Time. Can also be


mapped to Actuate String.

Timestamp With Local


Time Zone

Oracle 9 only. Actuate Date Time. Can also be


mapped to Actuate String.

Interval Year To Month

Oracle 9 only. Actuate String.

Interval Day To Second

Oracle 9 only. Actuate String.

Char

Actuate String.

Date

Actuate Date. Can also be mapped to Actuate


String.

Long

Actuate String.

Long Raw

Actuate String.

Nchar

Actuate String.

Number(x, 0) Integer

Actuate Double. Can also be mapped to Actuate


Currency, Long, Single, or String.

Number(x, y) Float

Actuate Double. Can also be mapped to Actuate


Currency, Integer, Long, Single, or String.

Nvarchar2

Actuate String.

Raw

Actuate String.

Rowid

Actuate String.

String

Actuate String.

Urowid

Actuate String.

Varchar

Actuate String.

Varchar2

Actuate String.

Actuate Foundation Class Reference

Class AcOrderedCollection

Class AcOrderedCollection
The base class for the Actuate ordered collection classes.
AcCollection
AcOrderedCollection

Description

A collection contains objects of any type. An ordered collection enables you to


control the order in which objects appear in a collection.

Methods

See also

Method

Type

Description

AddToHead( )

N/A

Adds an item to the beginning of the


collection.

AddToTail( )

N/A

Adds an item to the end of the collection.

Copy( )

N/A

Copies the contents from another list to the


end of this list.

GetAt( )

AnyClass

Returns the item at the specified location


in the collection.

GetHead( )

AnyClass

Returns the first item in the collection.

GetTail( )

AnyClass

Returns the last item in the collection.

RemoveHead( )

AnyClass

Removes the first item in the collection.

RemoveTail( )

AnyClass

Removes the last item in the collection.

Class AcCollection
Class AcIterator

AcOrderedCollection::AddToHead method
Adds an item to the beginning of the collection.

Syntax
Parameter

Sub AddToHead( item As Anyclass )


item
The object to add to the collection.

Chapter 3, AFC classes

435

AcOrderedCollection::AddToTail method

Description

See also

Use AddToHead( ) to add an object to the beginning of a collection. If you


create an iterator over the collection immediately after calling AddToHead( ),
the object you just added is the first object the iterator returns.
Class AcIterator

AcOrderedCollection::AddToTail method
Adds an item to the end of the collection.

Syntax
Parameter
Description

See also

Sub AddToTail( item As Anyclass )


item
The object to add to the collection.
Use AddToTail( ) to add an object to the end of a collection. If you create an
iterator over the collection immediately after calling AddToTail( ), the object
you just added is the last object the iterator returns.
Class AcIterator

AcOrderedCollection::Copy method
Copies the contents from another list to the end of this list.

Syntax
Parameter
Description

Sub Copy ( from As AcList )


from
The list from which to copy items.
The Copy( ) method copies the contents of another list into the current list .
Copy( ) appends the contents to the end of the list. Copy( ) does not change the
content of the other list, the items are now in both lists.

AcOrderedCollection::GetAt method
Returns the item at the specified location in the collection.

Syntax
Parameter

436

Function GetAt( index As Integer ) As AnyClass


index
The position of the object to retrieve.

Actuate Foundation Class Reference

AcOrderedCollection::GetHead method

Description
Returns
See also

Use GetAt( ) to get a reference to the object at the specified location in the
collection. If you specify an invalid index, Actuate returns a run-time error.
A reference to the object at the specified location in the collection.
AcOrderedCollection::GetHead method
AcOrderedCollection::GetTail method

AcOrderedCollection::GetHead method
Returns the first item in the collection.

Syntax
Description

Returns
See also

Function GetHead( ) As AnyClass


Use GetHead( ) to get a reference to the first object in the collection. If the
collection is empty, Actuate returns a run-time error. Therefore, if you do not
know if the collection contains any objects, call IsEmpty( ) first.
A reference to the first object in the collection.
AcCollection::IsEmpty method
AcOrderedCollection::GetTail method

AcOrderedCollection::GetTail method
Returns the last item in the collection.

Syntax
Description

Returns
See also

Function GetTail( ) As AnyClass


Use GetTail( ) to get a reference to the last object in the collection. If the
collection is empty, Actuate returns a run-time error. Therefore, if you do not
know if the collection contains any objects, call IsEmpty( ) first.
A reference to the last object in the collection.
AcCollection::IsEmpty method
AcOrderedCollection::GetHead method

AcOrderedCollection::RemoveHead method
Removes the first item in the collection.

Syntax

Function RemoveHead( ) As AnyClass

Chapter 3, AFC classes

437

AcOrderedCollection::RemoveTail method

Description

Returns
See also

Use RemoveHead( ) to delete the first object in the collection. If the collection
is empty, Actuate returns a run-time error. If you do not know if the collection
contains any objects, call IsEmpty( ) first.
A reference to the deleted object.
AcCollection::IsEmpty method
AcOrderedCollection::AddToHead method

AcOrderedCollection::RemoveTail method
Removes the last item in the collection.

Syntax
Description

Returns
See also

438

Function RemoveTail( ) As AnyClass


Use RemoveTail( ) to delete the last object in the collection. If the collection is
empty, Actuate returns a run-time error. If you do not know if the collection
contains any objects, call IsEmpty( ) first.
A reference to the deleted object.
AcCollection::IsEmpty method
AcOrderedCollection::AddToTail method

Actuate Foundation Class Reference

Class AcPage

Class AcPage
The base class for all pages.
AcComponent
AcReportComponent
AcVisualComponent
AcBaseFrame
AcBasePage
AcPage

Description

The AcPage class represents pages in your report. When you create the page
class, you set the size of the page to the size and orientation you need. The
Factory creates pages, one at a time as needed, when building reports. Pages
are persistent in the .roi file. The Viewer displays pages as you browse through
a report. Pages can contain flows and other page decoration controls. Pages do
not work with data rows.
Pages are identified with two numbers. The first is the page index which
identifies the position (starting with 1) of the page within the report. The other
is the page number, which you can display on the page in the format you
desire (such as 3-3, 3-4, 3-5, etc.). You can automatically number and display
pages in your report by using the functionality of the AcPageNumberControl
class. Also, you can create a formatted page number by setting the
PageNumberFormat property or by overriding the FormatPageNumber( )
method.

Resizing the page


Pages provide the ability to grow or shrink depending on the number of
frames that appear within them. Pages can always grow as large as the flow in
which they appear. To shrink a page smaller than the size you draw them, set
the CanShrink property to True. If you allow a page to shrink, set the
MinimumHeight property to determine how small the subpage can get.
A page provides a simple model for moving and resizing its contents based on
where contents appear relative to the flows in that page. Consider the
following diagram.

Chapter 3, AFC classes

439

Class AcPage

X
Flow1

Flow top

Flow2

Flow
height

Flow midpoint

G
E

Flow bottom

Flow 1 and Flow 2 are flows. The items drawn with letters indicate various
controls. Controls fall into one of three groups depending on how changes in
size to the page affects the controls.
The first group are those that remain constant. A control remains constant if its
top is above the midpoint, and its bottom is above the flow bottom. In the
diagram, controls X, C, D, and F will remain unchanged as the page resizes.
The second group are controls that will maintain the same size, but the top
position will change to maintain a constant distance from the bottom of the
page. Controls fall into this group if their top is below the midpoint. In the
diagram, controls E, G, and Y fall into this group.
The third group are those controls that will maintain a constant position, but
will change size by the same amount that the flow changes size. A control falls
into this group if its top is at or above the flow top, and its bottom is at or
below the flow bottom. Controls A and B in the diagram fall into this group.
This allows you to create rulings alongside the flows.
There are times when you may want to have a ruling grow or shrink along
with the flow, but you want the ruling to be somewhat shorter than the flows
themselves. You can set the ResizeRegion property to indicate the tolerance for
resizing. If you set this property, the page will add its value to flow top and
subtract it from flow bottom to shrink the region that a control must span to be
resized.

440

Actuate Foundation Class Reference

Class AcPage

Factory protocol
Task

Method

1 Instantiates and starts the contents of the


frame.
2 Creates the formatted page number.

Start( )

3 Adds each frame to the page.

AddFrame( )

4 Finishes each of the content objects.

Finish( )

FormatPageNumber( )

Variables
Variable

Type

Description

PageIndex

Integer

The formatted page number.

PageNumber

String

The number of the page within the


report, starting with 1.

Property

Type

Description

CanExpand

Boolean

Specifies whether or not the page


can expand vertically. The default
is False.

MaximumHeight

Integer

The maximum page height before


a page break is forced. If
CanShrink and CanExpand are
both False, MaximumHeight is
ignored. If MaximumHeight is
smaller than the page height, the
page height is used as the
maximum height.
The default is 200 inches.

Properties

PageNumberFormat String Function

The format string to use when


formatting the page number. The
format must be compatible with
the Format$( ) function.

Chapter 3, AFC classes

441

AcPage::FormatPageNumber method

Methods
Method

Type

Description

FormatPageNumber( )

String

Returns the formatted page number.


You can override this method if your
formatting requires writing code.

PageNumberFormat( )

String

Returns the page number format.

Considerations for HTML reports


HTML documents are all one long page. HTML does not support the concept
of page breaks. Therefore, the AFC ignores pagination classes, including this
one, when generating HTML for a report.

See also

Class AcPageNumberControl

AcPage::FormatPageNumber method
Returns the formatted page number.

Syntax
Parameter
Description
Returns
See also

Function FormatPageNumber( pageIndex As Integer) As String


pageIndex
The index of the current page.
The default is to format the index using the PageNumberFormat( ) method.
Override this method to perform custom page number formatting.
The formatted page number.
AcPage::PageNumberFormat method

AcPage::PageNumberFormat method
Returns the page number format.

Syntax
Description
Returns

442

Function PageNumberFormat( ) As String


Returns the page number format property as a string. The format must be a
format acceptable to the Format$( ) function. The default is .
The page number format property as a string.

Actuate Foundation Class Reference

Class AcPageList

Class AcPageList
Instantiates and holds the pages for a report.
AcReportComponent
AcPageList

Description

The class AcPageList instantiates and holds the pages for a report. AcPageList
is an abstract class with methods for all types of page lists. Derived classes
provide the organization of the pages within the page list.

Page structure
The Actuate framework page structure consists of a page list, pages, flows,
and frames. A page list can contain multiple pages, a page can contain
multiple flows, and a flow can contain multiple frames. The following
illustration shows the page structure of page list, page, flow, and frame.
Frames
Data stream

Section

PageList
Events

Page

Flow

Frame

The page structure scheme works as follows: A page list receives a frame from
a section. The page list then attempts to place that frame on the current page.
The page attempts to place the frame in the current flow. If there is room for
the frame on the current page, the flow places the frame on the page. If there is
not room on the page for the frame, the page list builds another page. The
framework then places the frame on the new page.
The previous illustration also shows the roles of a data stream and section in
building a report. The data stream supplies data rows to the section. The data

Chapter 3, AFC classes

443

Class AcPageList

stream is not concerned with how those data rows will be placed in a frame,
that is the responsibility of the section.
The section builds frames from the data rows supplied by the data stream and
hands them off to the page list. The section is not concerned with how those
frames are placed on the page, that is the role of the page list. In the simplest
case, the section does not respond to any eventsit simply feeds frames to the
page list. In a more advanced case, the section can respond to events such as a
page break and send special frames such as headers and footers to the page list
when needed.
A section can also contain logic that causes the page list to eject a page. For
example, the section could generate a blank even-numbered page at the end of
the section if it is needed for double-sided printing.

Adding frames to the page


The AddFrame method adds a frame to the page list. If there is a current page,
and the frame will fit on that page, AddFrame places the frame on the page.
A frame can contain information about the page on which it will appear. For
example, if the frame has the PageBreakBefore property set, AddFrame will
eject the current page and instantiate a new page before placing the frame on
the new page:


When the page list does not have a current page (for example, a page has
just been ejected) AddFrame instantiates a new page. It does so by asking
each active component in the structure hierarchy to instantiate a page by
calling the NewPage( ) method, starting with the frame passed to
AddFrame( ).

Normally, the frame does not contain page informationit does not care
where it gets placed on the page. In this case, the page list traverses up the
content structure searching for page placement information from
successively higher branches. If the search goes all the way to the top, then
the page list instantiates the default page as defined in the page list
subclass.

When the page list does have a current page, the page list determines
whether the frame will fit. If so, it just places the frame on the current page.
If not, the page list ejects the current page, instantiates a new page, and
places the frame on the new page.

Once the frame is placed on a page, the page list determines if the frame has
the PageBreakAfter property set. If so, the page list ejects the page. If not, the
process of adding frames continues.

444

Actuate Foundation Class Reference

Class AcPageList

Page and structure hierarchies


The page hierarchy is connected to the structure hierarchy at both the top and
bottom ends. The following figure illustrates how the page hierarchy and
content hierarchy relate to each other. The hierarchies are connected at the top
by a report object and at the bottom by frames.

Report section

Report Object

PageList

Page structure

Group section

Page

Flow
Frames

Content structure
Controls

Current page
When the page list is running, it always has knowledge of the first and last
pages. Normally, the page list also has knowledge of the current page.
However, there are times when the page list does not have a current page. For
example, when a page is ejected and before another page is built, the page list
does not have a current page. The page list must build another page, but
delays that decision as late as possible. Specifically, if a section has the
PageBreakAfter property set to True, the page list will not have a current page
until it receives another frame. The following figure illustrates the state of the
page list after page 4 is ejected. The page list does not point to any page, that is,
the connection to the current page is broken.

Chapter 3, AFC classes

445

Class AcPageList

PageList

Page 1

Page 2

Page 3

Page 4

Subclassing AcPageList
AcPageList is an abstract class for all types of page lists. The derived classes
define the organization of the pages in the page list. The Actuate framework
provides three derived classes from AcPageList:


AcSimplePageList builds a page list with a series of body pages all of the
same style.

AcLeftRightPageList builds a page list with alternating left-right pages.

AcTitleBodyPageList builds a page list with a title page, followed by a


simple page list.

Variables
Variable

Type

Description

Pages

AcList

The list of all pages in the page list.

Method

Type

Description

EjectPage( )

N/A

Finishes the currently active page.

GetCurrentFlow( )

AcFlow

Returns the currently active flow on the


current page.

Methods

446

GetCurrentPage( )

AcPage

Returns the current page in the page list.

GetCurrentPage
ACL( )

String

Returns the ACL for the current page in


the page list.

GetEstimatedPage
Count( )

Integer

Provides an estimate of the number of


pages a report will contain.

GetFirstPage( )

AcPage

Returns the first page in the page list.

GetLastPage( )

AcPage

Returns the last page in the page list.

Actuate Foundation Class Reference

AcPageList::EjectPage method

Method

Type

Description

GetPageCount( )

Integer

Returns the number of total pages in the


page list.

NeedHeight( )

N/A

Ensures that a specified amount of


vertical space is available in the current
flow, and if not, starts a new flow.

NewPage( )

AcPage

An empty method that derived classes


override to instantiate a new page.

UseAccelerated
Checkpoints( )

Boolean

Creates additional page checkpoints in


the .roi file.

Considerations for HTML reports


HTML documents are all one long page. HTML does not support the concept
of page breaks. Therefore, the AFC ignores pagination classes, including this
one, when generating HTML for a report.

AcPageList::EjectPage method
Finishes the currently active page.

Syntax
Description

Sub EjectPage( )
The EjectPage( ) method finishes the currently active page. If no page is active,
EjectPage( ) does nothing.

AcPageList::GetCurrentFlow method
Returns the currently active flow on the current page.

Syntax
Description
Returns

Function GetCurrentFlow( ) As AcFlow


The currently active flow is the flow in which the Factory is currently placing
components.
The currently active flow (if any) on the current page (if any).
Nothing if no flow is active.

Chapter 3, AFC classes

447

AcPageList::GetCurrentPage method

AcPageList::GetCurrentPage method
Returns the current page in the page list.

Syntax
Description
Returns

Function GetCurrentPage( ) As AcPage


The current page is the page on which the Factory is currently placing and
filling flows.
The current page.

AcPageList::GetCurrentPageACL method
Returns the Access Control List (ACL) for the current page in the page list.

Syntax
Description

Returns

Function GetCurrentPageACL( ) As String


Developers define Access Control Lists (ACLs) to restrict access to pages to
certain users. For information about ACLs, see Customizing page security.
Call GetCurrentPageACL to retrieve the ACL for the current page. To help
debug reports developed with page security, define a text control that has its
ValueExp property set to GetPageList::GetCurrentPageACL.
A comma-separated list of security IDs that comprise the ACL.
Empty string if page security is not defined for this page.

AcPageList::GetEstimatedPageCount method
Provides an estimate of the number of pages needed for this report.

Syntax
Description

Function GetEstimatedPageCount( ) As Integer


GetEstimatedPageCount( ) allows you to optimize the layout of data in the .roi
file. Override this method to provide an estimate of the number of pages that
the report will contain. The Factory pre-allocates parts of the report. Preallocating parts of the report reduces the number of reads required to view the
report.
The estimate is accurate to a power of 50. For example, providing a value of 1
works for reports up to 50 pages long. Providing a value of 51 handles reports
up to 2500 pages long. Try to be as accurate as possible when you provide the
estimate.

448

Actuate Foundation Class Reference

AcPageList::GetFirstPage method

Example

Function GetEstimatedPageCount( )
GetEstimatedPageCount = 100
End Function

AcPageList::GetFirstPage method
Returns the first page in the page list.

Syntax
Description
Returns

Function GetFirstPage( ) As AcPage


The page list holds all the pages for the report. This method gets the first page
in the list.
The first page in the page list.

AcPageList::GetLastPage method
Returns the last page in the page list.

Syntax
Description
Returns

Function GetLastPage( ) As AcPage


The page list holds all the pages in the report. This method gets the last page
added to the report.
If you call GetLastPage( ) in the Viewer, GetLastPage( ) returns the last page of
the page list.
If you call GetLastPage( ) in the Factory, GetLastPage( ) returns the last page
that currently exists. For example, if you call GetLastPage( ) when the report is
partially built, it returns the current page.

AcPageList::GetPageCount method
Returns the number of pages in the page list.

Syntax
Description

Returns

Function GetPageCount( ) As Integer


The GetPageCount( ) method returns the number of pages in the page list. If
called before the page list is complete, GetPageCount( ) returns the number of
pages processed so far.
The number of pages in the page list.

Chapter 3, AFC classes

449

AcPageList::NeedHeight method

AcPageList::NeedHeight method
Ensures that a specified amount of vertical space is available in the current
flow, and if not, starts a new flow.

Syntax
Parameter
Description

Sub NeedHeight ( Height As Integer )


Height
The amount of required vertical space in twips.
Requests a certain amount of vertical space in the current flow. Requests a new
flow if the requested vertical space cannot fit in the current flow. Space is
measured in twips.

AcPageList::NewPage method
Instantiates a new page.

Syntax
Description

Example

Function NewPage( ) As AcPage


The page list calls this method to instantiate each new page. If you use one of
the predefined page classes, the framework creates the page for you based on
the components you add to the page list in the structure pane. If you create
your own custom page list class, you must override this method.
The following example shows how to create different page designs for two
reports that run in sequence: a customer list and an order list.
In the following code example, the custom variable TestIndex has a value of 1
when the first of the two sequential reports runs. When the second report runs,
TestIndex has a value of 2:
Function NewContent( index As Integer ) As AcReportComponent
Set NewContent = Super::NewContent( index )
' Insert your code here
TestIndex = index
End Function

The following code example passes the value of TestIndex to the NewPage( )
method, so that the NewPage( ) method will know whether to instantiate
either the CustomerPage or the OrderPage component.
The call to Super::NewPage( ) is commented out:
Function NewPage( ) As AcPage
' Set NewPage = Super::NewPage( )
' Insert your code here

450

Actuate Foundation Class Reference

AcPageList::UseAcceleratedCheckpoints method

Select Case TestIndex


Case 1
Set NewPage = New Persistent CustomerPage
Case 2
Set NewPage = New Persistent OrderPage
End Select
End Function

Returns

The new page instantiated.

AcPageList::UseAcceleratedCheckpoints method
Creates additional page checkpoints in the .roi file.

Syntax
Description

Returns

Function UseAcceleratedCheckpoints( ) As Boolean


Override UseAcceleratedCheckpoints( ) to return True if you want the Factory
to increase the number of page checkpoints written to the .roi file. Additional
checkpoints improve report viewing performance.
True if more checkpoints are to be created.
False if no additional checkpoints are to be created.

Chapter 3, AFC classes

451

Class AcPageNumberControl

Class AcPageNumberControl
A class used to calculate and display page numbers.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcPageNumberControl

Description

Use the page number control to calculate and display the current page number
or the total number of pages in the report. You can use the page number
control to display relative page numbers in the form, 1 of n. The page number
control can number pages for secure reports considering the visibility of pages
to the user. Pages in secure reports are visible to the user only if the user is
granted access to the page. For information about granting access to pages, see
Using page security later in this chapter.

About page number types


The PageNumberType property on AcPageNumberControl determines how to
calculate and display the page number value. The available page number
types are:


ActualPageCount

ActualPageNofM

ActualPageNumber

FormattedPageNumber

VisiblePageCount

VisiblePageNofM

VisiblePageNumber

ActualPageCount and ActualPageNumber show the total and current page


numbers respectively without considering page security. ActualPageNofM
shows the actual page number relative to the actual page count in the report.
VisiblePageCount and VisiblePageNumber show the total and current page
numbers respectively considering page security. VisiblePageNofM shows the
visible page number relative to the visible page count in the report. For
nonsecure reports, the values for visible and actual page number types are the
same.

452

Actuate Foundation Class Reference

Class AcPageNumberControl

The FormattedPageNumber displays page numbers using the format specified


in the PageNumberFormat property on the component, AcPage. Page
numbers displayed using this type do not consider page security.

Selecting page numbering type


Visible page numbers and counts can result in different page numbers on the
same report for users with different access to pages. This is because the total
number of pages in a secure report can be different for users with different
access to pages. Use actual page numbers and counts when users with
different access to pages need to refer to the report by page number.

Chapter 3, AFC classes

453

Class AcPageNumberControl

Properties

454

Property

Type

Description

PageNumber
Type

AcPage
Number
Style

PageNumberType can be set to the


following values:
 ActualPageCount: The total number of
pages (visible and invisible to the user)
in the report.
 ActualPageNofM: The current page
number, N, relative to the total page
count, M, displayed in the form: Page N
of M. The page number and count
include both visible and invisible pages.
 ActualPageNumber: The current page
number considering all pages (visible
and invisible to the user) in the report.
 FormattedPageNumber: Page number
is presented using the format string
specified in the PageNumberFormat
property. The value presented here does
not consider page security.
 VisiblePageCount: The total number of
pages in the report that the user can see
considering page security.
 VisiblePageNofM: The current page
number, N, relative to the total page
count, M, displayed in the form: Page N
of M. The page number and count
considers page security.
 VisiblePageNumber: The current page
number considering only the pages that
the user can see considering page
security.
The default is VisiblePageNumber.

Actuate Foundation Class Reference

AcPageNumberControl::GetActualPageCount method

Methods

See also

Method

Type

Description

GetActualPage
Count( )

Integer

Returns the total page count for the


report without considering page
security.

GetActualPage
Number( )

Integer

Returns the current page number


without considering page security.

GetFormattedPage
Number( )

String

Returns the page number (without


considering page security) using
the format specified in the
PageNumberFormat property for
the page.

GetVisiblePage
Count( )

Integer

Returns the total page count for the


report considering page security.

GetVisiblePage
Number( )

Integer

Returns the current page number


considering page security.

PageNOfM( )

String

Formats controls that have the


page number types
VisiblePageNofM or
ActualPageNofM.

Class AcPage
Class AcPageList

AcPageNumberControl::GetActualPageCount
method
Returns the total page count for the report without considering page security.

Syntax
Description

See also

Function GetActualPageCount( ) As Integer


Call GetActualPageCount( ) to retrieve the total page count for the report. If
the report is secure, the total page count considers pages that are not visible to
the user because the user has not been granted access to the page.
AcPageNumberControl::GetVisiblePageCount method

Chapter 3, AFC classes

455

AcPageNumberControl::GetActualPageNumber method

AcPageNumberControl::GetActualPageNumber
method
Returns the current page number for the report without considering page
security.

Syntax
Description

See also

Function GetActualPageNumber( ) As Integer


Call GetActualPageNumber( ) to retrieve the current page number. If the
report is secure, the page number considers pages that are not visible to the
user because the user has not been granted access to the page.
AcPageNumberControl::GetVisiblePageNumber method

AcPageNumberControl::GetFormattedPageNumber
method
Returns the current page number (without considering page security) using
the format specified in the PageNumberFormat property for the page.

Syntax
Description

See also

Function GetFormattedPageNumber( ) As String


Call GetFormattedPageNumber( ) to retrieve the page number as a string
formatted according to the information in the PageNumberFormat property
for the page. The string returned is the same string as the one returned by
PageNo$( ). The value presented does not consider page security.
AcPage::FormatPageNumber method

AcPageNumberControl::GetVisiblePageCount
method
Returns the total page count for the report considering page security.

Syntax
Description

See also

456

Function GetVisiblePageCount( ) As Integer


Call GetVisiblePageCount( ) to retrieve the total page count for the report. If
the report is secure, the total page count excludes any pages that are not visible
to the user because the user has not been granted access to the page or pages.
AcPageNumberControl::GetActualPageCount method

Actuate Foundation Class Reference

AcPageNumberControl::GetVisiblePageNumber method

AcPageNumberControl::GetVisiblePageNumber
method
Returns the current page number for the report considering page security.

Syntax
Description

See also

Function GetVisiblePageNumber( ) As Integer


Call GetVisiblePageNumber( ) to retrieve the current page number. The page
number excludes any pages that are not visible because the user has not been
granted access to the pages.
AcPageNumberControl::GetActualPageNumber method

AcPageNumberControl::PageNOfM method
Formats page number controls for display.

Syntax
Description

Function PageNOfM( ) As String


Override PageNOfM( ) to format page number controls that have the type,
ActualPageNofM or VisiblePageNofM.

Chapter 3, AFC classes

457

Class AcParallelSection

Class AcParallelSection
A class that fills two or more flows on the page.
AcComponent
AcReportComponent
AcSection
AcParallelSection

Description

A parallel section contains two or more report sections, group sections, or


sequential sections that appear in different flows on the same page. For
example, a parallel section can present two different reports side by side.
Consider a page that has multiple flows on it. AcParallelSection fills each flow
with a different data stream, filling each flow until it is full, then progressing
through the remaining flows on the page until the entire page is full. Then, a
new page is built and the process of filling each flow continues, until all data
streams are processed.
When building a parallel section you must establish the relationship between
reports in the parallel section and flows on the page. You do so by setting the
report sections FlowName property to the name of the flow in which the
report should appear. For example, if you create a page with two flows, Flow1
and Flow2, set the FlowName property of the first report to Flow1 and the
FlowName property of the second report to Flow2.
Your parallel section must have access to the correct page that contains the
necessary flows. You can provide this page in one of three ways:

458

First, if the only item in your report is the parallel section, then you can use
a simple page list, and make sure that the page in that page list has the
correct number of flows with the correct tags.

You can override the NewPage( ) method to instantiate the page you want
to use within the parallel section. This page takes precedence over any page
that the page list provides. If you do this, be sure to set the
PageBreakBefore and PageBreakAfter properties to True so that the parallel
section starts on the correct page, and no other components use the special
page.

You can provide a subpage that will fit inside the flow on your standard
page. To do this, drop a subpage component in the Subpage slot of the
parallel report.

Actuate Foundation Class Reference

Class AcParallelSection

The parallel section class is complex. It is usually best to use its methods as-is
rather than override them. The exceptions are the methods which affect the
formatting of parallel sections in HTML reports. Those HTML-related
methods are documented here.

Building the nested reports


The nested reports are built in the parallel sections Build( ) method. The
following is the sequence used to build the section:
1 Instantiate and start all of the nested reports.
2 Locate the first page.
3 For each report that still has rows to produce, locate the corresponding
flow using the report and flows Tag property. Then, run the report until it
fills up its flow.
4 Eject the page.
5 If any reports have more rows to produce, loop back to step 2 to locate the
next page and repeat the process.

Properties
Property

Type

Description

Content

AcReport

The list of nested reports to appear in the parallel


report.

Considerations for HTML reports


Actuate converts parallel sections to HTML tables when creating HTML
reports. By default, the HTML table consists of one row and several columns,
one for each parallel section in the report. The browser determines the width
of each column at run time.
You can manipulate the format of the HTML tables by overriding the methods
listed in this section.
You must provide flows so that the report will build. However, the flows have
no effect on the way the HTML output displays.

Chapter 3, AFC classes

459

Class AcPopupMenu

Class AcPopupMenu
Allows the user to create pop-up menus in Basic.

Description

The AcPopupMenu class lets you create context menus. You create and use
menus in the Viewer in response to user actions, usually by pressing the right
mouse button. You respond to these user actions by overriding the set of user
event methods in AcVisualComponent. Using the methods in AcPopupMenu,
you can modify the standard menu or create your own menu. As a
convenience, Actuate automatically creates a menu in response to pressing the
right mouse button.
The methods in the AcPopupMenu class closely parallel their Windows
Software Development Kit (SDK) counterparts. These methods are
independent of the AFC class hierarchy, which means that you can create popup menus anywhere in your Viewer code.
To create a pop-up menu, populate it with menu items. Enable or disable
menu items as appropriate. Add cascading menus if you want. Finally, call
Run( ) to display or check the menu and let the user make a choice.
The menu works by associating subroutines with the menu items. The
subroutine can be a method on the menu itself or a method on another object.
When you instantiate a pop-up menu, the AFC framework creates a new
instance of the pop-up menu and attaches it to the given view. The view must
be an AcReportView provided as an argument to each of the user action
methods.

Variables
Variable

Type

Description

View

AcReportView

The view to which to add a menu.

Method

Type

Description

AddCascade( )

Integer

Adds a cascading menu.

AddItem( )

Integer

Adds a menu command that binds to


a method in an object.

AddSeparator( )

N/A

Adds a menu separator.

Methods

460

Actuate Foundation Class Reference

AcPopupMenu::AddCascade method

Method

Type

Description

CheckMenuItem( )

N/A

Places or removes a checkmark next


to the menu item.

EnableMenuItem( ) N/A

Enables or disables a menu item.

MakeMenu( )

N/A

Override this method in a subclass to


add default menu items to the
subclass.

Run( )

Integer

Executes a menu.

AcPopupMenu::AddCascade method
Adds a cascading menu.

Syntax
Parameter

Function AddCascade( command As String, cascade As AcPopupMenu ) As


Integer
command
The text string to identify the cascading menu as a parent menu.
cascade
The cascading menu to add to the parent menu.

Description

Returns

The AddCascade( ) method adds a cascading menu to the parent menu and
returns the integer position of the cascading menu. A cascading menu is a
submenu with each of its menu items renumbered from one. You must create
the menu first, then add it to its parent menu. The command argument is the
text to place in the parent menu. The command is added at the end of the
parent menu.
The menu ID of the added cascade menu.

AcPopupMenu::AddItem method
Adds an item to the menu.

Syntax

Function AddItem( command As String, method As String ) As Integer


or
Function AddItem( command As String, obj As AnyClass, method As String )
As Integer

Parameter

command
The text string of the menu command.

Chapter 3, AFC classes

461

AcPopupMenu::AddSeparator method

method
The method to associate with the menu command.
obj
The class that contains the method to associate with the menu command.

Description

The AddItem( ) method adds an item to the end of the menu, from the top
down. The command parameter is the text of the menu item, such as &Copy
or Follow &Link. The menu item can have an embedded ampersand, which
shows the access key for the menu in the standard Windows fashion. A double
ampersand (&&) in the menu command string results in a single displayed
ampersand (&). The return value is the position of the menu item in the menu,
and is the value that the user must pass to the EnableMenuItem method,
CheckMenuItem method, and so on.
Menu items are enabled and unchecked by default:


Use the first form of AddItem( ) to call methods on the menu class itself.

Use the second form when the method is defined in another class. The
method must be defined in the class the obj represents.

Every menu command causes an action. You specify the action in one of two
ways: First, you can call a method on the menu class itself. Second, you can
call a method on some other object. In either case, the method must be a
function that takes the same arguments as the user action methods on an
AcVisualComponent, and must return a Boolean.

Returns
Example

The ID of the item added to the menu.


Function ShowHelp( view As ReportView, x As Integer, y As Integer ) As
Boolean
...
End Function

AcPopupMenu::AddSeparator method
Adds a separator (line) to the menu.

Syntax
Description

462

Sub AddSeparator( )
The AddSeparator( ) method adds a separator to the end of the menu.

Actuate Foundation Class Reference

AcPopupMenu::CheckMenuItem method

AcPopupMenu::CheckMenuItem method
Checks or unchecks a menu item.

Syntax

Sub CheckMenuItem( item As Integer, check As Boolean )

Parameter

item
The ID number of the menu item returned from AddItem( ).
check
True if the item is to be checked.
False if the item is to be unchecked.

Description

The CheckMenuItem( ) method takes a menu item index, and checks or


unchecks the menu item. A checked menu item displays a checkmark next to
the item.

AcPopupMenu::EnableMenuItem method
Enables or disables a menu item.

Syntax
Parameter

Sub EnableMenuItem( item As Integer, enable As Boolean )


item
The ID number of the menu item returned from AddItem( ).
enable
True to enable the item.
False to disable the item.

Description

The EnableMenuItem( ) method takes a menu item index, and enables or


disables the menu item. A disabled menu item appears in gray.

AcPopupMenu::MakeMenu method
Initializes a menu.

Syntax
Description

Sub MakeMenu( )
The MakeMenu( ) method is called by the AFC framework when a menu is
instantiated. Use this method to add, enable, and check default menu items for
the class.
You can override this method in a subclass of AcPopupMenu. Most of the
time, however, there is no need to subclass AcPopupMenu.
Chapter 3, AFC classes

463

AcPopupMenu::Run method

AcPopupMenu::Run method
Executes a menu.

Syntax
Description

Function Run( ) As Integer


This method displays the menu and tracks user actions. When the user selects
one menu item, the method associated with that menu item is executed.
The Run( ) method executes the menu you have created. The function returns
zero if the user closed the menu without selecting anything. If the user selects
a command, Run( ) calls the associated method, then returns the menu item ID
number of the selected item. Menu ID numbers start at one and correspond to
the position within the menu.
If the user chooses an item in a cascading menu, the ID number returned is the
ID within the pop-up menu.

Returns

464

The ID of the executed menu item.

Actuate Foundation Class Reference

Class AcProgressConnection

Class AcProgressConnection
Establishes a connection to a Progress Software database.
AcComponent
AcConnection
AcDBConnection
AcProgressConnection

Description

Use the AcProgressConnection class to establish a connection to a Progress


database. The application must set the database list and startup parameters
prior to connecting. Once connected, the application should not change these
values.

Variables
Variable

Type

Description

DatabaseList

String

Database name.

DllPath

String

Actuate/Progress interface software.

Password

String

Users Progress database password.

StartUpParameters

String

Progress Open Interface Broker


parameters.

UserName

String

Login name for the Progress database.

Properties
Property

Type

DatabaseList

String

Parameter

Description

-db <db-name> Database name.


-S <db-port>

Registered TCP socket


name. Must be different
than <broker-port>.

-N TCP

Connection protocol, TCP


specifies TCP/IP.

-H <db-host>

Database host computer


name.

Chapter 3, AFC classes

465

Class AcProgressConnection

Property

Type

Parameter

Description

Dllpath

String

ESQL32.DLL

Actuate/Progress interface
software.

Password

String

Users Progress database


password.

ReadOnlyQuery

Boolean

Used to determine if
Actuate should add FOR
READ ONLY to SQL query.

StartUp
Parameters

String

UserName

-SV

Specifies Small Client


behavior. This must be the
first parameter.

-S
<broker-port>

Registered TCP socket


name. Must be different
than <db-port>.

-N TCP

Connection protocol, TCP


specifies TCP/IP.

-H
<broker-host>

Open Interface Broker host


computer name.

String

Login name for the Progress


database.

When you connect to a Progress database through Actuate, you must specify
settings using DatabaseList and StartUpParameters. For DatabaseList, you
must use -db, -H, and -S to log on to the database. For StartUpParameters, you
must specify -SV, -H, -S and, -N to log into the Progress Open Interface Broker
(OIB).
If Progress Security is active, you can use the following optional DatabaseList
parameters to specify a user name and password:


-U <username> User name registered to Progress Security

-P <password> Users password

You can log on to multiple databases using different user name and password
combinations. For example, you can enter the following string for the
DatabaseList parameter to log on to the sports and mktg databases:
-db sports -H ahost -S asvc -U aname -P apass -db mktg -H bhost -S bsvc
-U bname -P bpass

Using UserName or Password is equivalent to using the -U and -P parameters.


Actuate uses the name and password for each database in the DatabaseList.
For example, if you use:

466

Actuate Foundation Class Reference

Class AcProgressConnection

DatabaseList = "-db adb -H ahost -S asvc -db bdb -H bhost -S bsvc"


UserName = "fred"
Password = "apass"

Actuate creates the following database list string:


-db adb -H ahost -S asvc -U fred -P apass -db bdb -H bhost -S bsvc -U fred
-P apass

Progress data types


The following table describes the default conversion between Actuate data
types and Progress data types.
Progress data type

Mapped to

Array

The native syntax. The native syntax would


appear as follows in an Actuate report design:
tablename.array1[1]

Character

Actuate String. Can also be mapped (given a


datatype correct string) to an Actuate Boolean,
Currency, Date, Double, Integer, Long, Single, or
Variant.

Date

Actuate Date. Can also be mapped to an Actuate


String or Variant.

Logical

Actuate Integer. Can also be mapped to an


Actuate Boolean, Long, or Variant.

Integer

Actuate Integer. Can also be mapped to an


Actuate Boolean, Currency, Double, Long, Single,
String, or Variant.

Decimal

Actuate Double. Can also be mapped to an


Actuate Boolean, Currency, Double, Integer, Long,
Single, String, or Variant.

Raw

Actuate Double.

Recid

Actuate Integer.

Currency data type


Although there is no currency data type in Progress, a Progress decimal,
integer, or character (in an appropriate format) can be mapped to an Actuate
currency value and converted correctly.

Chapter 3, AFC classes

467

Class AcProgressConnection

Databases and queries


Actuate supports accessing multiple Progress databases concurrently. Within
an Actuate connection object it is possible to identify a list of databases you
want to access within that connection. This lets you create joins between tables
in different Progress databases.
When using expressions in Actuate, you can give an expression a name. For
example, in an Actuate query, the following statement defines extendedPrice:
"(price * quantity)" as extendedPrice

The name extendedPrice becomes a name that can be used elsewhere in the
query, for example, in the WHERE clause or in the ORDER BY clause. For
Progress databases, Actuate replaces the name with the actual expression
before sending the query to the database.

Views and tables


Using read only queries
Actuate supports SQL statements executed against Progress views and tables.
By default, Actuate appends FOR READ ONLY to the SQL statement to avoid
read locks. Set the ReadOnlyQuery property to False under the following
conditions:


SQL statement executes against a Progress view

SQL statement executes against a Progress view and table

If you define multiple SQL query data sources using the same Progress
connection, determine how ReadOnlyQuery should be set for each data
source. If ReadOnlyQuery should be set to different values depending on the
SQL query:


Set ReadOnlyQuery to False

Override the AcSqlQuerySource::ObtainSelectStatement method to add


FOR READ ONLY when appropriate

Using Progress 9 databases


AcProgressConnection uses the Progress SQL-89 interface and metadata
queries. The Progress SQL-89 interface can be used with Progress 9.x
databases. When you use Progress 9.x databases, these tables are excluded:

468

Tables that are not owned by PUB

Views created in SQL-92

Actuate Foundation Class Reference

Class AcProgressConnection

Joins
e.Report Designer Professional can automatically create joins between tables.
Actuate attempts to create joins by matching the column names and data types
between the tables. If there is more than one matching column name and data
type, Actuate does not create a join. The developer must specify the join
manually in the Query Editor.

Chapter 3, AFC classes

469

Class AcProgressSQL92Connection

Class AcProgressSQL92Connection
Establishes a connection to a Progress9 database.
AcComponent
AcConnection
AcDBConnection
AcProgressSQL92Connection

Description

Use the AcProgressSQL92Connection class to establish a connection to a


Progress9 database using the SQL-92 interface. The application must set the
database property prior to connecting. Once connected, the application should
not change these values. The application can establish multiple connections to
Progress9 databases, but only one connection can be active at a time. The
application cannot connect to Progress9 and other Progress databases.

Properties
If you are connecting to a remote database, specify the databases location by
entering a value in either the Host or ServiceOrPort property.
Property

Type

Description

Database

String

<db-name>

Database name.

DllPath

String

Acprg9.dll

Actuate/Progress9
interface library.

<db-host>

Host computer name for


the remote database. Host
is not used for local
databases. Host computer
name must be supplied if
you are connecting to a
database running on a
database server.

Host

FetchRowBuffer
Count

470

Parameter

Integer

Actuate Foundation Class Reference

The maximum number of


database rows to be fetched
by the cursor at one time.
The fetch row buffer count
is an integer from 1 to
65,000. The default value is
100.

Class AcProgressSQL92Connection

Property

Type

Parameter

Description

Password

String

Users Progress9 database


password.

ReadOnlyQuery

Boolean

True, the default, means the


transaction mode is set to
Read Uncommitted.
False means the transaction
mode is set to Repeatable
Read.

ServiceOrPort

String

Database service name or


port number on the
database server.
ServiceOrPort is not used
for local databases. The
port number is an unsigned
16-bit integer from 1 to
65535.

UserName

String

Login name for the


Progress database.

Progress9 data types


The following table describes the default conversion between Actuate data
types and Progress9 data types
Progress9 data type

Mapped to

Bigint

Actuate String. Can also be mapped to an Actuate


Integer, Long, Single, Double, or Currency.

Binary

Actuate String.

Bit

Actuate Integer. Can also be mapped to an


Actuate Long or String.

Character

Actuate String.

Date

Actuate Date. Can also be mapped to an Actuate


String.

Decimal

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Double Precision

Actuate Double. Can also be mapped to an


Actuate Single or String.

Float

Actuate Double. Can also be mapped to an


Actuate Currency, Single, or String.

Chapter 3, AFC classes

471

Class AcProgressSQL92Connection

Progress9 data type

Mapped to

Integer

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Numeric

Actuate Double. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Real

Actuate Double. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Smallint

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Single, or String.

Time

Actuate String.

Timestamp

Actuate Date. Can also be mapped to Actuate


String.

Tinyint

Actuate Integer. Can also be mapped to an


Actuate Long or String.

Varbinary

Actuate String.

Varchar

Actuate String.

Database cursors and statements


Actuate allows multiple statements for a connection and multiple cursors for a
database statement. To support Progress9, Actuate implemented a statement
pool that contains database statement and cursor names. When Actuate
prepares a database statement, it also allocates a database statement from the
statement pool. The database statement from the pool remains allocated until
the database statement is deleted. These limits apply to report designs that
include Progress9 connections:


A maximum of 100 statements and cursors can be associated with each


Progress9 connection.

Only one cursor can be open on a database statement at a time.

Database qualifiers
For most database connections, database qualifiers can be part of a SQL
identifier in a SQL statement. Progress9 does not have a database hierarchical
element that corresponds to an Actuate database qualifier. To be consistent
with other databases, Actuate assigns the database name to the database
qualifier for Progress9 connections. You must not use this database qualifier as
part of a SQL identifier for a Progress9 connection.

472

Actuate Foundation Class Reference

Class AcProgressSQL92Connection

Joins
Actuate supports all Progress9 join types. The following rules apply to joins
for Progress9 connections:


Joins cannot be specified both in the FROM and WHERE clauses.

Any type of Progress join can be used in the WHERE clause.

Only inner and left outer joins can be used in the FROM clause.

Joins in the FROM clause follow standard SQL syntax. Joins for left and right
outer joins in the WHERE clause follow a special syntax. You must add a
token, (+), to the side of the join for which matches are not required. All
rows from the opposite side are returned and nulls are returned for columns
where there are no matching values.

Chapter 3, AFC classes

473

Class AcQuerySource

Class AcQuerySource
A class that processes a SQL query.
AcComponent
AcDataAdapter
AcDataSource
AcDatabaseSource
AcQuerySource

Description

AcQuerySource an abstract base class that provides the core logic for query
data sources that you build in the Actuate Query Editors. AcQuerySource
defines the methods for executing a SQL SELECT statement including:


Processing ad hoc parameters

Handling dynamic ordering established by group sections

Preparing the SQL statement and opening a cursor

Binding static parameters

Binding the data row to the database cursor

The following figure illustrates the operation of an AcQuerySource.


Rows
Data
SQL database

Query source
SELECT
statement

Data rows

The normal way to create a query data source is to use the Actuate Query
Editor or the Textual Query Editor. You can, however, programmatically create
the query data source. If you do, you must override ObtainSelectStatement( )
to return the complete statement. You must also override
BindStaticParameters( ) (defined in AcDatabaseSource) to bind static
parameters and BindDataRow( ) (also defined in AcDatabaseSource) to bind
the data row to the cursor.

474

Actuate Foundation Class Reference

AcQuerySource::AddSortKey method

Methods

See also

Method

Type

Description

AddSortKey( )

N/A

Changes the sort order at run time, using


the column name value specified in the
Key property of the group section.

GetStatementText( )

String

Returns the text of the SELECT statement


for the query source.

ObtainSelect
Statement( )

String

Returns the SELECT statement of the


query source.

SetupAdHoc
Parameters( )

N/A

Generated. The framework overrides this


method to call SetAdHocParameter( ) of
the AcSqlQuerySource class or
SetAdHocCondition() of
AcTextQuerySource class repeatedly
until all ad hoc parameters are processed.

Class AcDataAdapter
Class AcDatabaseSource
Class AcDataRow
Class AcDataSource
Class AcDBConnection
Class AcSqlQuerySource
Class AcTextQuerySource

AcQuerySource::AddSortKey method
Specifies a sort key column at run time.

Syntax
Parameter

Sub AddSortKey( keyName As String, sortSense As String )


keyName
The name of one of the columns in the SELECT clause.
sortSense
The direction of the sort. This must be one of the two constant, SortAscending
or SortDescending.

Description

Group sections provide the ability to automatically update the ORDER BY


clause of the SELECT statement for a query source to match the sequence
needed by your report. The group sections inform the query source of the
preferred sort order by calling AddSortKey( ) and passing the Key property
value of the group section.

Chapter 3, AFC classes

475

AcQuerySource::GetStatementText method

If you are writing custom code that uses a query data source, your custom
code can call AddSortKey( ) to customize the sort order of the data. The value
you pass must match the column name or column alias that appears in the
SELECT clause of your SELECT statement.
When called from AcSqlQuerySource class, this method is available only if
you allow the SQL query source to assemble your statement from the
fragments.

AcQuerySource::GetStatementText method
Returns the text of the SELECT statement for the SQL query source.

Syntax
Description
Returns

Function GetStatementText( ) As String


Call GetStatementText( ) if you want to check the SELECT statement being
sent to the database. You can call this method only after calling Start( ).
The current SELECT statement as a string.

AcQuerySource::ObtainSelectStatement method
Returns the SELECT statement of the query source.

Syntax
Description
Returns

Function ObtainSelectStatement( ) As String


ObtainSelectStatement( ) returns the SELECT statement of the query source.
Override this method to create custom SQL SELECT statements.
A SQL SELECT statement as a string.

AcQuerySource::SetupAdHocParameters method
Adds ad hoc parameters to the query.

Syntax
Description

See also
476

Sub SetupAdHocParameters( )
The AcQuerySource class calls SetupAdHocParameters( ) to enable your
derived class to set the value of its ad hoc parameters. Actuate normally
generates this method for you. If you programmatically create your class and
your class provides ad hoc parameters in the Requester, you must override
this method. Your override calls SetAdHocParameters( ) to set the value of
each parameter.
AcSqlQuerySource::SetAdHocParameter method

Actuate Foundation Class Reference

Class AcRecordBuffer

Class AcRecordBuffer
A data filter that converts a sequential data stream into one allowing random
access by buffering data rows on disk.
AcComponent
AcDataAdapter
AcDataFilter
AcSingleInputFilter
AcMemoryBuffer
AcRecordBuffer

Description

Many data sources provide only the ability to read rows in a sequential firstto-last order. However, there are times when you need to move through the
data in random order, perhaps making multiple passes over certain groups of
data to print the data first in a graph, then in a tabular format. The
AcRecordBuffer class acts as a converter to change a sequential data source
into a random-access data stream. It does so by storing (buffering) data rows
on disk as you read them so that you can return back to them again later. You
do not need to use this class if your data source already provides random
access.
This class is similar to the AcMemoryBuffer class, except that it allows you to
handle larger numbers of rows. You must also ensure that AcRecordBuffer can
create and return persistent copies of the input data rows.
Because this data filter supports random access, the CanSeek( ) method
returns True, and all the various random-access methods such as SeekTo( ) and
Rewind( ) are available.
AcRecordBuffer lets you manipulate data as if you had direct access to the
input source. You can locate rows by specifying a row number with SeekTo( )
or by specifying a relative position with SeekBy( ). You can rewind to the
beginning of the data buffer with Rewind( ) or advance to the end with
SeekToEnd( ). The row number starts at 1. (See AcDataAdapter for details.)
Although not required, you may choose to flush the buffer occasionally to
remove from memory those rows that you no longer need. For example, if you
need to make two passes over the data for each customer, you can flush the
rows for each customer as you complete the process. Flushing the buffer
causes no change to the way you access rows you simply will not be able to
seek back to revisit the flushed rows. See the FlushBuffer( ) and
FlushBufferTo( ) methods for details.

Chapter 3, AFC classes

477

Class AcRectangleControl

Class AcRectangleControl
A class you use in the report design to display a rectangle.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcRectangleControl

Description

A rectangle is a content control that is fully defined at design time. You can
specify its color, size, and the curve of its corners. Using the two Rounding
properties, X and Y, you specify numeric values to control the roundness of the
rectangles corners. The higher the numbers, the rounder the corners. Actuate
creates rounded corners by centering an ellipse in the rectangle, and clipping
the area within the borders of the rectangle and the ellipse, as the following
illustration shows.
X

X
Actuate clips the areas
within the borders of the
ellipse and rectangle

Variables
Variable

478

Type

Description

FillColor

AcColor

The color with which to fill the shape.

LineStyle

AcLineStyle

The style of line to draw around the shape.

Rounding

AcRounding

The amount of rounding to use for the corners


of the rectangle.

Actuate Foundation Class Reference

Class AcRectangleControl

Properties
Property

Type

Description

FillColor

AcColor

The color with which to fill the shape.

LineStyle

AcLineStyle

The style of line to draw around the shape.

Rounding

AcRounding

The amount of rounding to use for the corners


of the rectangle.

Considerations for HTML reports


HTML does not provide a rectangle graphic. Therefore, the Actuate rectangle
control is not supported in HTML reports. If you include a rectangle control in
your design, AFC ignores it when generating the HTML output.

Chapter 3, AFC classes

479

Class AcReport

Class AcReport
The root object that contains all objects in a report.
AcComponent
AcReportComponent
AcReport

Description

Like the main program in an application, the report object is the entry point to
the report. In the structure pane, the report object appears at the top.
Immediately contained within it are the:


ReportSectionthe topmost container of the content elements.

PageListthe topmost container of the display elements.

The report section starts the processes for building the report and for
displaying the report at run time.
To build the report, the report object:


Starts the PageList creation process.

Starts the content creation process.

The Design Editor automatically generates a subclass of AcReport for every


new report. You can then subclass that subclass to make a copy of the original
report.
Because the report object controls the report-building process, you should be
careful when overriding its methods. To add startup or cleanup code (for
example, to initialize global variables or close files) override Start( ) and
Finish( ). The Factory calls Start( ) before it begins generating the report, and
Finish( ) after it generates the report, but before the report file is closed.
Override Finish( ) to add cleanup code or additional processing, for example,
to send completion notices or write statistics to a log file. Call Super::Finish( )
after your custom code to ensure that the Factory executes the original code as
well.

Customizing security IDs


Actuate builds the users ACL from user and role information stored in the
Report Encyclopedia. The security IDs in the users ACL consists of the users
user ID, roles associated with the users group, and any security IDs supplied
by the Report Server Security Extension (RSSE.) Sometimes, you must restrict
pages using more complex role-based criteria. For example, a page showing
total sales for sports utility vehicles should only be viewed by sales managers
that are responsible for selling sports utility vehicles. The sales manager role
480

Actuate Foundation Class Reference

Class AcReport

and product category role are real roles in the Report Encyclopedia, but the
combination of the two roles is a virtual security ID. You can customize the
security IDs to control access to pages in the following way:


Set up the page security restrictions on the section component. To restrict


access to pages, set the GrantExp property on the section to the virtual
security IDs. For more information, see Using page security, under Class
AcSection.

Override GetUserACL method to specify the virtual security IDs in the


users ACL. For more information, see AcReport::GetUserACL method.

Customizing auto-archive rules


Report Encyclopedia administrators can set auto-archive rules for report
objects, open server reports, and other documents stored in the Report
Encyclopedia to cause files to be automatically deleted and archived. Autoarchive rules determine when to delete objects, how many versions of a report
to keep, whether the object should be archived before it is deleted, and if any
dependent objects should be deleted when the object is deleted. Auto-archive
rules can be set for a file, folder, or the entire Report Encyclopedia. Actuate
searches the containment hierarchy for an auto-archive rule to use if no rule is
specified for the file. For more information about setting auto-archive rules,
see Chapter 11, Managing e.reporting system resources, in Administering the
Actuate e.Reporting System. For information about using and creating an
archive driver, see the Chapter 9, Using the report server API, in
Programming Server Applications.
Users can enter parameters at the Requester prompt to set auto-archive rules
for the report object. For example, the user can specify that a report be deleted
10 days after it is created.
You can customize your report to set auto-archive rules for the .roi or .row
files. The framework makes the auto-archive rules set by the user available as
public variables on the AcReport component. You can change user-specified
auto-archive rules in two ways:


Override the Start or Finish method for the report and modify the autoarchive public variables.

Override the SetROIAgingProperties method for .roi files or


SetROWAgingProperties method for .row files.

You modify the public variables when the auto-archive rules are the same for
all report objects generated by the report. If your report uses report bursting to
produce multiple .roi or .row files and you must specify different auto- archive
rules for the individual files, override the SetROIAgingProperties or
SetROWAgingProperties method to set the auto-archive rules. These methods
are called for each .roi or .row file.

Chapter 3, AFC classes

481

Class AcReport

Variables

482

Variable

Type

Description

Age_ArchiveBefore
Delete

Constant

Age_ArchiveBefore
Delete: File must be
archived before it is
deleted. If no archive
driver is installed, this
option is ignored. This is
one of the values for the
variable Aging_Options.

Age_Delete
Dependencies

Constant

Age_Delete
Dependencies: When this
file is deleted, delete any
files that depend on it.
This is one of the values
for the variable
Aging_Options.

Age_NoExpiration

Constant

Age_NoExpiration: Do
not delete this file. This is
one of the values for the
variable Aging_Options.

Age_NoOptions

Constant

Age_NoOptions: No
auto-archive rules have
been set for this file. The
file inherits its autoarchive rules. Actuate
searches the Report
Encyclopedia
containment hierarchy to
to find auto-archive rules
for the file. This is one of
the values for the
variable Aging_Options.

Actuate Foundation Class Reference

Class AcReport

Variable

Type

Description

Aging_Options

Integer

The auto-archive rules


for this file. Contains a
value corresponding to
one of the following
public variables:
 Age_ArchiveBefore
Delete
 Age_Delete
Dependencies
 Age_NoExpiration
 Age_NoOptions

ExpirationAge

Integer

The number of minutes


after creation that the file
should be deleted. Null
indicates that the file
should not be deleted
based on the elapsed
time after creation.

ExpirationDate

Date

The date and time after


which the file should be
deleted. Null indicates
that the file should not be
deleted based on a
specific date and time.

LayoutOrientation

AcLayoutOrientation

The layout orientation of


the report.

MaxVersCount

Integer

The maximum number of


versions of the report to
keep. Null indicates that
no limit exists.

Pages

AcPageList

The object that holds the


list of pages.

Root

AcReportComponent

A reference to the first


element in the report.
From this element, the
application can traverse
down to all other frame
records in the report.

Chapter 3, AFC classes

483

Class AcReport

Properties

484

Property

Type

Description

Content

AcReportComponent

The topmost (or only)


report section for a report.

CustomRequesterName

String

The executable (.exe) file


that launches a custom
requester window. This
custom window replaces
Actuates Requester
dialog box that appears
when users run a report.

GlobalDHTMLCode

String

Appends global custom


browser code to every
DHTML page generated
by the DHTML converter.
GlobalDHTMLCode is
ignored by the PDF
converter and has no
effect on Actuate Viewer.

LayoutOrientation

AcLayoutOrientation

The layout orientation of


the report, regardless of
the operating system or
locale. The settings are:
 LeftToRight
 RightToLeft
The default value is
LeftToRight.

Locale

String

The locale to use for the


report. If an empty string,
the current runtime locale
is used.
The default value is an
empty string.

PageList

AcPageList

The PageList style to use


when creating pages for
report output.

Actuate Foundation Class Reference

Class AcReport

Property

Type

Description

ReportEncoding

String

The encoding to use for


report generation,
viewing, and printing.
If not specified, the
default encoding of the
current runtime locale is
used.

SortParamsByAlias

Boolean

Defines how parameters


are ordered by the
Requester.
True if the Requester sorts
parameters by alias name.
False if the Requester
sorts parameters by
parameter name. The
default value is False.

XMLCharSet

String

The encoding declaration


to be inserted in the XML
prolog. if XMLCharSet is
not specified, Actuate
does not include an
encoding declaration in
the XML prolog.

XMLDocType

String

The declaration to appear


after the XML DOCTYPE
keyword.

XMLFileDescription

String

The description of the


XML file to be built. The
default value is XML
Files.

XMLFileExtension

String

The file extension of the


XML file to be built. The
default value is xml.

Chapter 3, AFC classes

485

Class AcReport

Property

Type

Description

XMLIndent

Integer

The number of spaces


used to indent each level
in the XML file. Set the
value to 0 to improve the
performance of XML
generation and reduce
the XML file size.
The default value is 4.
Use the default value
when you view and
debug the XML report.

XMLMimeType

String

The mime type for the


XML file. The default
value is text/xml.

Methods

486

Method

Type

Description

GenerateXMLData
File( )

Boolean

Builds an XML file from the report.

GetContent( )

AcReport
Component

Returns the topmost component in the


report.

GetCustomFormat( )

N/A

Retrieves the generated Excel file from


the View process.

GetFactoryLocale( )

String

Specifies the locale to use for report


generation.

GetGlobalDHTML
Code( )

String

Appends global custom browser code


to every DHTML page generated by
the DHTML converter.

GetHtmlDir( )

String

Returns a location on the client for the


HTML files that make up the HTML
report.

GetLayout
Orientation( )

AcLayout
Orientation

Returns the reports layout.

GetPageList( )

AcPageList

Returns the list of pages in the report.

GetPrintLocale( )

String

Specifies the locale to use for printing


the report on the report server.

GetTwipsPer
Pixel( )

Integer

Sets the twips-to-pixel conversion


factor.

Actuate Foundation Class Reference

Class AcReport

Example

Method

Type

Description

GetUserACL( )

String

Returns the access control list (ACL)


for the current user.

GetViewLocale( )

String

Specifies the locale to use for report


viewing.

HasPageSecurity( )

Boolean

Returns True if the report uses page


security.

NewContent( )

AcReport
Component

Creates the top-level report element.

NewPageList( )

AcPageList

Creates the page list for the report.

OnFinishViewer( )

N/A

Called by the Viewer before it closes


the report (.roi) file.

OnStartViewer( )

N/A

Called by the Viewer before it opens


the report (.roi) file.

RoiIsTemporary( )

Boolean

Override to specify if the .roi should


be deleted after the report generates.

SetLayout
Orientation( )

N/A

Sets the report to right to left or left to


right layout.

SetROIAging
Properties( )

N/A

Sets auto-archive rules for an .roi file.

SetROWAging
Properties( )

N/A

Sets auto-archive rules for an .row file.

SuggestRoi
Name( )

String

Called to suggest the .roi name for this


report.

XMLDataProlog( )

N/A

Creates the XML prolog.

The following example shows how to change the auto-archive rules for a
report object. The Finish method override modifies the rule to automatically
delete the .roi file 4 hours after it is created. The code converts the amount of
time from days to minutes and sets the public variable ExpirationAge to the
result:
Sub Finish
Force the file to always expire 4 hours after creation
ExpirationAge = 10 * 24
End Finish

The following example shows how to ensure that the .roi file is never deleted.
To do this, the code sets the Aging_Options variable to the constant
Age_NoExpiration:

Chapter 3, AFC classes

487

AcReport::GenerateXMLDataFile method

Sub Finish
Never delete the file
AgingOptions = Age_NoExpiration
End Finish

See also

Class AcPageList

AcReport::GenerateXMLDataFile method
Builds an XML file from the report.

Syntax
Parameter
Description
Returns

Function GenerateXMLDataFile( fileName As String ) As Boolean


fileName
The name of the XML file to be generated.
Generates an XML file for the report. GenerateXMLDataFile( ) uses the XML
Data Group for the components to build the XML file.
True if the XML file is built successfully.
False if the XML file cannot be built.

AcReport::GetContent method
Returns the topmost component in the report.

Syntax
Description

Function GetContent( ) As AcReportComponent


Returns the topmost component in the report.

AcReport::GetCustomFormat method
Retrieves the generated Excel file from the View process.

Syntax
Description

Sub GetCustomFormat( )
You use the Actuate Basic Excel classes to export report data to an Excel
spreadsheet. Use the GetCustomFormat method to retrieve the generated
Excel file.
For information about generating and displaying Excel files, see Programming
e.Reports.

488

Actuate Foundation Class Reference

AcReport::GetFactoryLocale method

AcReport::GetFactoryLocale method
Specifies the locale to use for report generation.

Syntax

Function GetFactoryLocale( defaultLocale As String ) As String


defaultLocale
The locale to use for report generation.

Description

By default, the value of the Locale property is used for report generation. To
set a different locale for report generation, override the GetFactoryLocale( )
method.
The value this function returns replaces the value of the Locale property of the
generated report.

Returns

The locale name.

AcReport::GetGlobalDHTMLCode method
Appends global custom browser code to every DHTML page generated by the
DHTML converter.

Syntax
Description

Function GetGlobalDHTMLCode( ) As String


Use GetGlobalDHTMLCode( ) method to include global custom browser code
in every DHTML page generated by the DHTML converter.
GetGlobalDHTMLCode( ) is called at view time.

AcReport::GetHtmlDir method
Returns a location on the client for the HTML files that make up the HTML
report.

Syntax
Parameter
Description

Returns

Function GetHtmlDir( roiName As String ) As String


roiName
The name of the .roi on the client.
Actuate stores the HTML files in the clients current directory. Override
GetHtmlDir to select a different location, including the full path name, for the
HTML files generated by the Factory.
The location for the HTML files.

Chapter 3, AFC classes

489

AcReport::GetLayoutOrientation method

AcReport::GetLayoutOrientation method
Returns the report orientation.

Syntax
Description

Function GetLayoutOrientation( ) As AcLayoutOrientation


Returns the report orientation.
GetLayoutOrientation( ) can be called at report generation time, but not at
view time.

Returns

The orientation of the report:




LeftToRightthe report layout is left to right.

RightToLeftthe report layout is right to left.

AcReport::GetPageList method
Returns the list of pages in the report.

Syntax
Description

Function GetPageList( ) As AcPageList


Returns the list of pages in the report.

AcReport::GetPrintLocale method
Specifies the locale to use for printing the report on the report server.

Syntax

Function GetPrintLocale( defaultLocale As String ) As String


defaultLocale
The locale to use for report printing.

Description

By default, the value of the Locale property is used for printing the report on
the report server. To set a different locale for printing the report, override the
GetPrintLocale( ) method.
The value this function returns is used only for report printing on the server, it
does not replace the value of the Locale property of the generated report.

Returns

490

The locale name.

Actuate Foundation Class Reference

AcReport::GetTwipsPerPixel method

AcReport::GetTwipsPerPixel method
Sets the ratio of twips per pixel.

Syntax
Description

Function GetTwipsPerPixel( ) As Integer


Actuate sizes report components in twips (1/1440 of an inch). Web browsers
size report objects, such as images, applets, and lines, in pixels. When
generating an HTML report, Actuate converts the twips in .rod or .roi files into
pixels for HTML.
A pixel can be many different sizes depending on factors such as screen size
and resolution. Actuate uses an approximation of 17 twips per pixel. When
Actuate computes the pixel size of an object, it uses:
pixel size = twips size / twips-per-pixel

You can set the twips-per-pixel ratio by overriding GetTwipsPerPixel( ). Your


GetTwipsPerPixel( ) method should return the new ratio.

AcReport::GetUserACL method
Returns the access control list (ACL) for the current user.

Syntax
Parameter
Description

Returns

Function GetUserACL( acl As String ) As String


acl
The list of security IDs for the current user.
The view process or print process calls GetUserACL to retrieve the list of
security identifiers for the current user. Actuate builds an ACL for the user
that consists of his user ID and roles associated with his group, and optionally,
any security IDs supplied by the Report Server Security Extension (RSSE.)
Override this method if you want to modify or replace the ACL that Actuate
has built. You can add virtual security IDs as well as valid roles or user IDs. A
virtual security ID is a combination of valid roles in the Report Encyclopedia.
Virtual security IDs help you create additional security IDs without having to
update the Report Encyclopedia with additional roles. For example, you can
restrict access to all sales managers that sell four-wheel drive vehicles. In this
case, you create a virtual security ID that is represented by the sales manager
role and a four-wheel drive vehicle product category role.
The list of security identifiers separated by commas.
Nothing if no security identifiers are defined.

Chapter 3, AFC classes

491

AcReport::GetViewLocale method

Example

In this example, the actual security IDs Manager and Product Category are
combined to create the virtual security ID, Manager_Product Category:
Function GetUserACL( acl As String ) As String
GetUserACL = Super::GetUserACL( acl )
Dim tail As String
Dim mgrAs String
Dim prodAs String
Dim posnAs Integer
Dim sid As String
' Loop to get each SID and check if we want it.
tail = acl
Do While tail <> ""
posn = InStr( tail, "," )
If posn = 0 Then
sid = Trim$( tail )
tail = ""
Else
sid = Trim$( Left$( tail, posn - 1 ) )
tail = Trim$( Mid$( tail, posn + 1 ) )
End If
' Check if it is a manager SID or a product
' category SID.
If InStr( sid, "Manager" ) > 0 Then
mgr = sid
ElseIf InStr( sid, "Product Category" ) > 0 Then
prod = sid
End If
Loop
' Build the special ACL and add it to the list.
If mgr <> "" And prod <> "" Then
acl = acl & ", " & mgr & " " & prod
End If
GetUserACL = acl
End Function

AcReport::GetViewLocale method
Specifies the locale to use for report viewing.

Syntax

Function GetViewLocale( defaultLocale As String ) As String


defaultLocale
The locale to use for report viewing.

492

Actuate Foundation Class Reference

AcReport::HasPageSecurity method

Description

By default, the value of the Locale property is used for report viewing. To set a
different locale for report viewing, override the GetViewLocale( ) method.
The value this function returns is used only for report viewing, it does not
replace the value of the Locale property of the generated report.

Returns

The view locale.

AcReport::HasPageSecurity method
Returns True if the report uses page security.

Syntax
Description

Returns

Function HasPageSecurity( ) As Boolean


Call HasPageSecurity( ) to determine whether the report uses page security. A
report uses page security if the access control list associated with any of its
pages is not empty.
True if the report uses page security.
False if the report does not use page security.

AcReport::NewContent method
A generated method that creates the top-level section.

Syntax
Description

Function NewContent( ) As AcReportComponent


NewContent( ) is called by AcReport to create the top-level section as specified
in the Design Editor.
Generally, you do not need to override NewContent( ).

Returns

A reference to the AcReportComponent object it creates.

AcReport::NewPageList method
A generated method that creates the page list for the report.

Syntax
Description

Function NewPageList( ) As AcPageList


NewBook( ) is called by AcReport to create the page list for the report. Using
the page list specified through the Design Editor, NewPageList( ) creates an
instance of a subclass of AcPageList.

Chapter 3, AFC classes

493

AcReport::OnFinishViewer method

Generally, you do not need to override NewPageList( ). Instead, you use the
Design Editor to specify the PageList class to use for the report. Alternatively,
you can override NewPageList( ) to create the page list with a different page
style. If you override this method, replace it. Do not call the superclass
method.

Returns
See also

A reference to the AcPageList object it creates.


Class AcPageList

AcReport::OnFinishViewer method
Called by the Viewer before it closes the report object instance (.roi) file.

Syntax
Description

See also

Sub OnFinishViewer( )
This method is called by the Viewer before it closes the report instance (.roi)
file. You can override OnFinishViewer( ) to perform tasks at the completion of
viewing, for example:


Close a DDE link or a file that you opened in OnStartViewer( ).

Count the number times a report is viewed.

AcReport::OnStartViewer method

AcReport::OnStartViewer method
Called by the Viewer before it opens the report instance (.roi) file.

Syntax
Description

See also

Sub OnStartViewer( )
This method is called by the Viewer before it opens the report instance (.roi)
file. You can override OnStartViewer( ) to perform tasks prior to viewing, for
example, to initialize a DDE link.
AcReport::OnFinishViewer method

AcReport::RoiIsTemporary method
Override RoiIsTemporary( ) to determine whether to discard or keep the .roi
file after the Factory generates the report.

Syntax
494

Function RoiIsTemporary( ) As Boolean

Actuate Foundation Class Reference

AcReport::SetLayoutOrientation method

Description

Returns

RoiIsTemporary( ) determines whether or not to keep the .roi file. For nonHTML reports, the default is to keep the .roi file. For HTML reports, the
default is to discard the .roi file after the HTML report is generated. Override
AcHtmlReport::RoiIsTemporary to set the return value to False if you want to
keep both the .roi and HTML files.
True to discard .roi file.
False to keep the .roi file.

AcReport::SetLayoutOrientation method
Sets the layout of the report.

Syntax
Parameter

Description

Sub SetLayoutOrientation( newValue As AcLayoutOrientation )


newValue
The report orientation to set:


RightToLeft

LeftToRight

This method is used for right to left language support. It sets the report, and its
sub reports, to right to left or left to right layout.The layout is set regardless of
the operating system or locale.
SetLayoutOrientation can be called at report generation time, but not at view
time.

Example

This example shows how to override the Finish method of a text control to set
the report layout to right to left for an Arabic report. The layout is set at view
time:
Sub Finish( )
Super::Finish( )
' Set Report layout to Right to left for Arabic data
If DataValue = "Arabic" Then
Container.GetReport( ). SetLayoutOrientation(RightToLeft)
Else
Container.GetReport( ). SetLayoutOrientation(LeftToRight)
End If
End Sub

Chapter 3, AFC classes

495

AcReport::SetROIAgingProperties method

AcReport::SetROIAgingProperties method
Sets the auto-archive rules for an .roi file.

Syntax
Parameter
Description

Sub SetROIAgingProperties( fileID As Integer )


fileID
An identifier for the .roi file.
Override SetROIAgingProperties to change the auto-archive rules. You
override SetROIAgingProperties to set the auto-archive rules when you use
report bursting to produce multiple .roi files, and the individual files have
different deletion or archive requirements. To apply the rule to the individual
file, you call the Actuate Basic function, SetStructuredFileExpiration,
identifying the .roi file that you need to change. For information on
SetStructuredFileExpiration, see the Actuate Basic Language Reference.
SetROIAgingProperties is only called for reports running on the report server.
The output file must be stored in the Report Encyclopedia.

Example

This example shows how to override the SetROIAgingProperties method to


modify the file deletion rule for one of the .roi files. The file should be
automatically deleted ten days after it is created. SetROIAgingProperties
passes the identity of the file and the file deletion rule to the Actuate Basic
function, SetPOSMFileExpiration:
Sub SetROIAgingProperties( fileID As Integer )
Dim expHours
' Force the file to always expire 10 days after creation
expHours = 10 * 24
SetPOSMFileExpiration( fileID, Age_NoOptions, Null, Null, expHours )
End Sub

See also

AcReport::SetROWAgingProperties method

AcReport::SetROWAgingProperties method
Sets the deletion and optionally the archive rule for .row files.

Syntax
Parameter

496

Sub SetROWAgingProperties( fileID As Integer )


fileID
An identifier for the .row file.

Actuate Foundation Class Reference

AcReport::SuggestRoiName method

Description

Override SetROWAgingProperties to change the auto-archive rules that


determine when to delete a file, and optionally when to archive it. You
override SetROWAgingProperties to set the auto-archive rules when you are
using report bursting to produce multiple .row files, and the individual files
have different deletion and archive requirements. To apply the rule to the
individual file, you call the Actuate Basic function, SetStructured
FileExpiration, identifying the .row file that you need to change.
SetROWAgingProperties is only called for reports running on the report
server. The output file must be stored in the Report Encyclopedia.

See also

AcReport::SetROIAgingProperties method

AcReport::SuggestRoiName method
Use SuggestRoiName( ) to specify a name for .roi.

Syntax

Function SuggestRoiName( ) As String


or
Function SuggestRoiName( row As AcDataRow ) As String

Description

Override SuggestRoiName( ) to customize the name for the .roi file generated
by the Factory. The .roi file name can include the protocol and path for this
report. The .roi file name can include a value of a runtime parameter or data
row variable, or the run date of the report.
The .roi name syntax is:
[<protocol>:]/<path>/<report name>

Parameter

<protocol>
The protocol to use to store the .roi. Supported protocols are the following.
Protocol

Description

file

Store the .roi in the file system on the client or report


server. On the client, file is the default.

rotp

Store the .roi in the Report Encyclopedia. On the report


server, rotp is default. You cannot specify rotp as the
protocol for a report running on the client.

<path>/<report name>
The .rois path name. Paths can be absolute or relative.

Chapter 3, AFC classes

497

AcReport::SuggestRoiName method

Assigning default .roi names


By default, if the report runs on the report server, then Actuate uses rotp as the
protocol and stores the .roi in the same Report Encyclopedia folder that
contains the .rox. If the report runs on the client, then Actuate uses file as the
protocol and stores the .roi in clients current working directory. Actuate
assigns the .roi name to the value of the Output File Name parameter in the
Requester dialog box. Override SuggestRoiName to customize the .roi name.

Customizing .roi names

Returns
Example

If you specify the .roi name using an absolute path in SuggestROIName,


Actuate uses this name for the .roi.

If you specify the .roi name using a relative path in SuggestROIName, the
Factory concatenates path information from SuggestRoiName to any path
information from the Output File Name parameter. For example, if the
Output File Name parameter contains file:C:\Forecast\East\
Quarterly.roi and SuggestRoiName returns Q1\Forecast.roi, the .roi
name generated is file:C:\Forecast\East\Q1\Forecast.roi. The report
name provided by SuggestRoiName is used by the Factory to name the .roi.

The suggested .roi name specified using an absolute or relative path.


In this example, the .roi name includes the value of the parameter, StateParam:
Function SuggestRoiName( ) As String
SuggestRoiName = "State_" & CustomerQuery::StateParam & ".roi"
End Function

Custom .roi names generated by running this report application have names
such as State_ca.roi or State_ny.roi.
In this example, the report application uses report bursting to generate
multiple .roi files from a single .rox. Each .roi contains a census report for a
different state. Each states report should be stored in a folder in the Report
Encyclopedia named for the geographical region that contains the state. To
satisfy this report requirement, the Output File Parameter includes a folder
name that shows the type of report, such as census reports:
Function SuggestRoiName( row As AcDataRow ) As String
SuggestRoiName = row.GetValue ( Region) & \ & "State_" &
row.GetValue ( State) & ".roi"
End Function

Custom .roi names have the form file:\C:\Census\Region\State.roi, where


region is derived from the value of the region data row variable and state is
derived from the state data row variable.

498

Actuate Foundation Class Reference

AcReport::XMLDataProlog method

AcReport::XMLDataProlog method
Creates the XML prolog for a custom XML data file.

Syntax
Parameter
Description

Sub XMLDataProlog( channel As Integer )


channel
The Basic channel to which the XML prolog is written.
Override XMLDataProlog to create a custom XML prolog in your XML data
file. You can either completely replace the standard prolog generated by
Actuate or extend the standard Actuate prolog. If you want to replace the
standard prolog, do not call the superclass method. If you want to extend the
prolog, call the superclass method first and then use the Actuate Basic Print
statement to write additional prolog information to the channel.

Chapter 3, AFC classes

499

Class AcReportComponent

Class AcReportComponent
The base class for all sections, pages, frames, and controls.
AcComponent
AcReportComponent

Description

AcReportComponent is the base class for all reports, sections, frames, controls,
page lists, flows, and pages. It establishes the core protocol for how objects in a
report are created and how they fit together in the reports containment
structure. The Build methods are key protocol elementsthey specify the logic
for creating the objects and their contents. Build( ) is always called from a
container object. At the topmost level of the structure, the Build( ) method for
the report object creates the next level object, the report, and calls the Build( )
method for the report to create the reports contents. Each container object
performs this task until all objects and their contents are built, as shown in the
following figure.
Structure

Implementation
Report
Build( )

Report Section
New( )
Start( )
Build( )

Frame

Finish( )

New( )

Controls

Start( )

New( )
Start( )

Build( )

Build( )

Finish( )

Finish( )

Most Actuate objects, such as sections and frames, can contain one or more
content objects. AcReportComponent provides methods to identify containers
and their contents. References to all these objects are stored in a list object. The
framework or applications can easily traverse the list object by using the
functionality of the AcIterator class. The following figure shows the
relationships between objects in the structure hierarchy.

500

Actuate Foundation Class Reference

Class AcReportComponent

Report
FirstContent

Container

Group section
Container
FirstContent

Container
Successor

Frame1
FirstContent

Frame2

Container
Successor

Control1

Control2

The framework maintains two hierarchies: structure (content) and page


(display.) The following figure shows examples of the two hierarchies.
Structure hierarchy

Page hierarchy
Report

Report section

Group section

Frame

Frame

Page list
Page

Group section

Frame

Flow

Frame

Frame

Page

Flow

Frame

Frame

Flow

Frame

Frame

Flow

Frame

Frame

Frame

About the structure hierarchy


The structure hierarchy resembles the structure pane in the Design Editor. It
shows the relationship between containers and content. For example, a group
section is called for each of its frames.

About the page hierarchy


The page hierarchy organizes the visual objects of a report.

Customizing page security


The AcReportComponent, AcReport, and AcSection components implement
page security. Page security is based on access control lists (ACLs.) The Factory

Chapter 3, AFC classes

501

Class AcReportComponent

creates an ACL for the page and the View or print process creates an ACL for
the current user. The View or print process determines whether the current
user can view the page by comparing the pages ACL with the current users
ACL. If a matching security ID is found, the page is visible to the current user.
Developers modify the list of security IDs in the ACL for the page or the
current user to customize page security.
Most of the time, you create an ACL by entering security IDs directly in the
GrantExp property on the section or by entering an expression that evaluates
to a list of security IDs. Nested sections inherit page security from their
container components. The Factory builds an ACL for a page from the frame
components ACL. The Factory provides methods to dynamically change the
contents of an ACL for a page. The View or print process provides a method to
modify the content of the current users ACL. The following process
highlights the methods used by the Factory and the view process to build the
ACL for the page and the current user.

Factory events
As the Factory builds a section, it passes the frames contained in the section to
the page list. The Factory builds the ACL for the page in the following way:


The Factory calls GetFullACL for the frame.

The frame calls GetFullACL for its container section.

The section calls GetComponentACL to get its own ACL and appends it to
the ACL for the frame.

Most of the time, the ACL corresponds to the GrantExp property for the
section. If you want to customize the ACL for the section, override the
SetSecurity method or create your own Actuate Basic function to do this.

If the CascadeSecurity property is set to True (default), the section calls


GetFullACL on its container section (if any). The section appends its ACL
to the one returned by GetFullACL.

The previous step is repeated until all container sections are processed. The
ACL resulting from steps 1 through 4 is the ACL for the frame.

If the ACL for the frame is different from the ACL for the previous frame,
the Factory inserts a page break.

The resulting ACL is assigned to the page.

To customize an ACL for a section and preserve the inheritance of security IDs
from its containers, override the GetComponent method. To customize an
ACL for a section and prevent it from inheriting security IDs from its
containers, set the CascadeSecurity property on the section to False.

502

Actuate Foundation Class Reference

Class AcReportComponent

View or print process events




The View or print process obtains the current users ACL.


The View or print process obtains the current users ACL from the Report
Encyclopedia. The current users ACL consists of the users user ID, any
roles associated with the users group, and optionally, any security IDs
supplied by the Report Server Security Extension (RSSE.) To create a
custom ACL for the current user, override the GetUserACL method.

The View or print process builds a list of visible pages for the current user.
The View or print process compares the ACL for the current user to the
ACL for the page to determine whether to add the page to the list of visible
pages. If one of the security IDs for the current user is in the pages ACL,
the View or print process adds the page to the list.

The View or print process uses the list of visible pages to build the table of
contents and support display, print, and search operations.

Converting reports into XML


Actuate provides two ways to generate XML data from Actuate reports:


Standard XML generation

Custom XML generation

Generating standard XML


The XML Data property group on all content components, such as reports,
sections, frames, and controls, tells Actuate how to generate XML data for the
component. The XML Data property group for the report component contains
XML properties to generate the XML prolog and common characteristics for
the XML file. The XML Data group for sections, frames, and control
components consists of XMLAddContents, XMLAttributes, XMLTag, and
XMLType. When you view a report containing XML data, you can select Save
As XML Data to have Actuate build an XML data output file.

Generating custom XML


Use AcReportComponents GenerateXML method and AcXMLDataVisitor
class methods to help you build XML elements, attributes, and text. For
information about generating custom XML, see Subclassing
AcXMLDataVisitor.

Chapter 3, AFC classes

503

Class AcReportComponent

Subclassing AcReportComponent
Most of the time, you do not derive directly from AcReportComponent or
override methods in this class because AcReportComponent establishes the
containment and build protocols for all classes of persistent objects.

Variables
Variable

Type

Description

Container

AcReport
Component

The object that contains the current object.

RowCount

Integer

Counts the number of rows the section has


processed. It is incremented at the start of the
BuildFromRow( ) method. Do not reset this
counter, it is used internally by the section.

TocEntry

String

The table of contents entry text.

Properties

504

Property

Type

Description

TocAdd
Component( )

AcTOC
NodeType

Determines whether the component name is


added to the reports table of contents. The
values are:
 TOCAlwaysAdd: Always add the
component to the table of contents.
 TOCIfAllVisible: Add component name to
the table of contents only if the user can
view at least one page generated from the
component based on page security.
 TOCIfAnyVisible: Add component to table
of contents even if the user cannot view
any pages generated from the component
based on page security.
 TOCSkip: Never add the component to the
table of contents. Use this to hide
components such as parallel or sequential
sections, or detail frames from the user.
TOCIfAllVisible is the default.

TocAdd
Contents( )

Boolean
function

Determines whether the components contents


are added to the reports table of contents.

Actuate Foundation Class Reference

Class AcReportComponent

Property

Type

Description

TocValueExp

Expression

Returns a string to show as the table of


contents entry for this object.

XMLAdd
Contents

Boolean

Determines whether the Actuate XML


includes the components contents. The
default is True.

XML
Attributes

String

A set of attribute values to add to the current


XML element. You add attributes here instead
of creating a control. These attributes are
constantthey do not change based on data in
your report. The XMLType property
determines where the attributes are added.
 If XMLType is XMLElement, then the
attribute values are generated as attributes
of the element before any attributes
provided by controls.
 If XMLType is XMLAttribute, then the
attribute values appear before the
components attribute value.
 If the XMLType is XMLIgnore (default),
Actuate examines the value of the
containers XMLType property. If the
containers XMLType property is
XMLElement, then the attribute values are
generated as attributes of the containers
element.

XMLTag

String

The name of the XML element or attribute for


this component.

XMLType

String

The type of XML object (if any) represented by


the component. The values are:
 XMLAttribute
 XMLCustom
 XMLElement
 XMLEmptyAttribute
 XMLIgnore
XMLIgnore is the default. XMLIgnore
indicates that no XML should be generated for
the component.

Chapter 3, AFC classes

505

Class AcReportComponent

Methods

506

Method

Type

Description

Abandon( )

N/A

Removes a component that is


no longer needed.

AddContent( )

N/A

Adds a new content


component to the current
component.

ApplyVisitor( )

N/A

Starts visitor functions for a


component.

Build( )

N/A

Overridden by container
objects to build objects that do
not use data rows.

BuildFromRow( )

AcBuildStatus

Overridden by data container


objects to build objects that
use data rows.

DetachContent( )

N/A

Detach a report component


from its container component.

DetachFromContainer( )

N/A

Detach a report component


from its container component.

FindContainerByClass( )

AcReport
Component

Returns a reference to this


class in the structure
hierarchy.

Finish( )

N/A

Called when the object is


finished building.

GenerateXML( )

N/A

Generates XML for


components with custom
XML.

GetComponentACL( )

String

Factory method to return the


access control list (ACL) for
the component.

GetFullACL( )

String

Factory method to return the


access control list (ACL) for
the component and each of its
containers in the structure
hierarchy.

GetConnection( )

AcConnection

Returns the connection that is


associated with this
component.

Actuate Foundation Class Reference

Class AcReportComponent

Method

Type

Description

GetContainer( )

AcReport

Returns a reference to the


container object for this
component.

GetContentCount( )

Integer

Returns the number of


content items in a component.

GetContentIterator( )

AcIterator

Returns an iterator over the


contents of this component.

GetContents( )

AcOrdered
Collection

Returns a handle to the


collection of contents for this
component.

GetDataStream( )

AcDataStream

Returns the data stream


associated with this
component.

GetFirstContent( )

AcReport
Component

Gets the first content


component.

GetFirstContentFrame( )

AcFrame

Gets the first content frame


for a component.

GetPage( )

AcPage

A Viewer method that returns


the page that a particular
object first appears on.

GetPageIndex( )

Integer

A Viewer method that returns


the page number where an
object is found.

GetPageList( )

AcList

Returns the page list


associated with the report that
contains this component.

GetReport( )

AcReport

Returns the report that


contains this component.

GetRowCount( )

Integer

Returns the number of rows


that this component has
processed.

GetTocEntry( )

String

Returns the text of the TOC


entry.

GetXmlText( )

String

Returns the value for an XML


attribute or element.

HasContents( )

Boolean

Returns True if this


component has at least one
content.

Chapter 3, AFC classes

507

AcReportComponent::Abandon method

See also

Method

Type

Description

IsContainer( )

Boolean

Returns True if this


component can have contents.

IsFrame( )

Boolean

Checks whether or not the


component is a frame.

IsLeaf( )

Boolean

Returns True if this


component cannot have
contents.

IsVisual( )

Boolean

Checks whether or not the


component is visual.

OnRow( )

N/A

Called for each new row.

SetTocEntry( )

N/A

Generated. Sets the name of


the table of contents entry.

Start( )

N/A

Called when the component


begins to be built.

Class AcPageList
Class AcSection
Class AcVisualComponent
Class AcXMLDataVisitor

AcReportComponent::Abandon method
Use Abandon( ) to remove a component that is no longer needed.

Syntax
Description

Sub Abandon( )
The Abandon( ) method removes and unpins the component that is currently
being referenced.

AcReportComponent::AddContent method
Adds a content component to the current component.

Syntax
Parameter

508

Sub AddContent( component As AcVisualComponent )


component
The visual component to add to a container.

Actuate Foundation Class Reference

AcReportComponent::ApplyVisitor method

Description
See also

The AddContent( ) method adds a new content to the component. This


method raises an error if the component does not allow contents.
AcReportComponent::GetContainer method
AcReportComponent::GetContentIterator method
AcReportComponent::GetContents method
AcReportComponent::IsContainer method
AcReportComponent::IsLeaf method

AcReportComponent::ApplyVisitor method
Use ApplyVisitor( ) to revisit components in your report to do special
processing such as creating output in a text file or spreadsheet.

Syntax
Parameter
Description
Example

Sub ApplyVisitor( visitor As AcVisitor )


visitor
The visitor component that contains the visit methods to be called.
ApplyVisitor( ) starts the visitor class functions on the component that is
currently being referenced.
The following example shows part of the programming required to produce
an Excel spreadsheet from information that is contained in components. For a
description of the entire example, see Class AcVisitor. The part of the example
below shows how to call ApplyVisitor from within the overridden method,
OnLButtonClick. The class, AcDetailCsvVisitor, contains the visitor methods
that are used to create the Excel spreadsheet. GetContainer method positions
the start of ApplyVisitor to the pagelist component:
Function OnLButtonClick( view As AcReportView, Shift As AcShiftKeyState, x
As Integer, y As Integer ) As Boolean
Dim visitor As AcDetailCsvVisitor
Set visitor = New AcDetailCsvVisitor
visitor.FileName = "c:\temp\extract.csv"
GetContainer( ).GetContainer( ).ApplyVisitor( visitor )
Shell( "d:\Program Files\Microsoft Office\Office\Excel.exe c:\Temp\
Extract.csv", 1 )
OnLButtonClick = True
End Function

See also

Class AcVisitor

Chapter 3, AFC classes

509

AcReportComponent::Build method

AcReportComponent::Build method
Overridden by subclasses to build objects that do not use data rows.

Syntax
Description

See also

Sub Build( )
Build( ) is called by container objects and is overridden by derived content
classes to create their contents. A report, for example, overrides Build( ) to
create all the pages in the report. Similarly, a frame overrides Build( ) to create
all the controls it contains.
AcReportComponent::BuildFromRow method

AcReportComponent::BuildFromRow method
Overridden by derived classes to build objects that use data rows.

Syntax
Parameter
Description

Function BuildFromRow( row As AcDataRow ) As AcBuildStatus


row
A reference to the row used by the object.
Like Build( ), BuildFromRow( ) is called by container and overridden by
derived classes to create their contents. The difference is BuildFromRow( )
creates objects that use data rows.
Typically, frames override BuildFromRow( ) to create data controls, and
controls override this method to set their values.

Returns
See also

The build status, Continue Building, or Finished Building.


AcReportComponent::Build method

AcReportComponent::DetachContent method
Detaches a report component from its container component.

Syntax
Parameter
Description

510

Sub DetachContent( content As AcReportComponent )


content
The contained component to remove.
Most components are contained within another component. This method lets
the container component drop any of its contained components. For example,

Actuate Foundation Class Reference

AcReportComponent::DetachFromContainer method

you might decide that for certain data rows you want to omit certain controls.
This method does not delete the component. The component still resides in the
persistent .roi file, but it no longer appears in the Viewer.

AcReportComponent::DetachFromContainer
method
Detaches a report component from its container component.

Syntax
Description

Sub DetachFromContainer( )
Most report components keep track of the container component that contains
the component. There are times when you might decide to remove an object
from its container. For example, you may decide that for certain data rows you
want to omit certain controls. This method does not delete the component. The
component still resides in the persistent .roi file, but it no longer appears in the
Viewer.

AcReportComponent::FindContainerByClass
method
Returns a reference to the named container object in the structure hierarchy.

Syntax
Description

Returns

Function FindContainerByClass( className As String ) As


AcReportComponent
Use FindContainerByClass to search up the structure hierarchy for the
container object with the named class. The class may be a member of the AFC
library or a user-defined class. The search starts with the component initiating
the search. If you search for the class corresponding to the component
initiating the search, FindContainerByClass returns this component. If you
want to start the search on a higher level component, use the GetContainer
method to position to the right level in the structure hierarchy.
A reference to the container object in the structure hierarchy with the named
class.
Nothing if the container cannot be found.

See also

For information about finding a container object in the page hierarchy, see
AcVisualComponent::FindPageContainerByClass method.

Chapter 3, AFC classes

511

AcReportComponent::Finish method

AcReportComponent::Finish method
Contains the logic for completing an object.

Syntax
Description

Sub Finish( )
Finish( ) contains the logic for completing an object.
After Finish( ) has finished processing, the Persistent Object Storage
Mechanism (POSM) writes the objects to the report instance (.roi) file as
needed. POSM optimizes memory usage by swapping objects in and out of
memory.
Derived classes can override Finish( ) to do additional work when the Factory
finishes processing the component. The derived version must always call the
superclass version after doing the custom work.

About UnpinObject( )
UnpinObject( ) is an Actuate Basic function that works with POSM.
UnpinObject( ) releases an object that was previously pinned to memory by
PinObject( ).
Objects that are pinned to memory are not written to disk. Objects that hold
references to transient objects must be pinned so they are not written to disk,
maintaining the reference to the transient object. When an object is finished
and ready to be written to disk, Finish( ) calls UnpinObject( ) to release the
object.
See AcBaseFrame::GetControl method for an example showing how to use the
Finish( ) method.

See also

AcBaseFrame::GetControl method
AcReportComponent::Start method

AcReportComponent::GenerateXML method
Generates XML for components that have a custom XML type.

Syntax
Parameter
Description

512

Sub GenerateXML( visitor As AcXMLDataVisitor )


visitor
The visitor component.
Override this method to generate custom XML for a component. You can build
the XML attributes and elements by calling AcXMLDataVisitor methods or

Actuate Foundation Class Reference

AcReportComponent::GetComponentACL method

using the Actuate Basic Print statement to write the custom XML to the
channel directly. Use the channel in the AcXMLDataVisitors XMLFile
variable.

Example

In this example, the code adds a comment to the custom XML that provides
the date when the XML data was generated:
Sub GenerateXML( visitor As AcXMLDataVisitor )
Dim channel As Integer
channel = visitor.XMLFile
Print #channel, <!- Generated on
Print #channel, Today( ); -!>
End Sub

AcReportComponent::GetComponentACL method
Returns the access control list (ACL) for this component.

Syntax
Description

Returns

Function GetComponentACL( ) As String


This method is called by the Factory to retrieve the ACL for the component.
Override GetComponentACL to modify the components ACL. The ACL
contains the security identifiers for users that can view pages built from the
component. Most of the time, you enter the ACL in the GrantExp property for
the section.
The ACL associated with the section component.
An empty string if the component is not a section.

See also

AcReportComponent::GetFullACL method

AcReportComponent::GetConnection method
Returns the connection associated with this component.

Syntax
Description

Function GetConnection( ) As AcConnection


This method locates the connection by starting with the current component
and looking upward through the structure hierarchy to find the first available
connection. Sections can explicitly define a connection by placing the
connection in the Connection slot, or implicitly by placing the connection
inside the Connection slot of the data stream for that section. If a section does
not have a connection available through one of these two means, then the

Chapter 3, AFC classes

513

AcReportComponent::GetContainer method

framework continues searching with the next enclosing section until either a
connection is found or until the search reaches the root of the report.
The framework uses this method to locate the connection to use for a data
stream when you do not explicitly specify a connection. This allows you to
create a sequential report that will print five subreports about your customer
database. If you place the database connection on the topmost sequential
section, then all the nested reports share this connection by using this method
to search upward through the hierarchy to find the connection.

Returns

The connection associated with this component.

AcReportComponent::GetContainer method
Returns a reference to the container object for this component.

Syntax
Description
Returns

Function GetContainer( ) As AcReportComponent


The GetContainer( ) method returns a reference to the container for this object,
if any, for this component.
A reference to the container object for this component.
Nothing if this component does not have a container object.

See also

AcVisualComponent::GetPageContainer method

AcReportComponent::GetContentCount method
Returns the number of content items in a component.

Syntax
Description

Function GetContentCount( ) As Integer


The GetContentCount( ) method returns the number of content items in a
component. For example, if the component is a section, GetContentCount
returns the number of content components in the section, including any
contained in the Before or After slots. If the component is a frame,
GetContentCount returns the number of controls in the frame.
If a component does not have contents (for example, a control),
GetContentCount returns 0.

Returns

An integer greater than 0 if the component has contents.


0 if the component does not have contents.

514

Actuate Foundation Class Reference

AcReportComponent::GetContentIterator method

AcReportComponent::GetContentIterator method
Returns an iterator over the contents of this component.

Syntax
Description

Returns

Function GetContentIterator( ) As AcIterator


The GetContentIterator( ) method returns an iterator over the contents of this
component. The returned value will never be Nothing. If the component
cannot have contents, the default creates an iterator over an empty list. This
allows clients to iterate over all components in a uniform manner.
An iterator over the contents of this component.

AcReportComponent::GetContents method
Returns a handle to the collection of contents for this component.

Syntax
Description
Returns

Function GetContents( ) As AcOrderedCollection


The GetContents( ) method returns a handle to the collection of contents, if
any, for this component.
A handle to the collection of contents for this component.
Nothing if this component does not support contents.

AcReportComponent::GetDataStream method
Returns the data stream that is associated with this component.

Syntax
Description

Function GetDataStream( ) As AcDataStream


This method locates the data stream by starting with the current component
and looking upward in the structure hierarchy to find the first available data
stream. The search stops when either it finds a section that has a data stream
defined or when it reaches the root of the report.
You can use this method to make multiple passes over your data. For example,
you might have a report of orders for a customer in which you want to both
graph the orders and print them in detail. To do this, you would first create a
grouped orders-by-customer report. Then, you could add a custom nested
report that makes a second pass over the data to create the graph. If you do
this, you must ensure that your data stream can be rewound by inserting a
memory buffer filter. Also, be sure that your nested report leaves the data

Chapter 3, AFC classes

515

AcReportComponent::GetFirstContent method

stream positioned at the same row as it was before the nested report started, or
your outer report produces incorrect results.

Returns

The data stream associated with this component.

AcReportComponent::GetFirstContent method
Gets the first content component.

Syntax
Description

Function GetFirstContent( ) As AcReportComponent


The GetFirstContent( ) method looks for and returns the first content
component of a report component, such as a section, frame, or the AcReport
component. You can then perform an action specifically on the first
component.
All report components may have contents. The type of contents (controls,
sections, etc.) depend upon the component type. If one or more content
components exist, GetFirstContent( ) returns the first one.

Returns

The first Contents component.

AcReportComponent::GetFirstContentFrame
method
Gets the first content frame (if any) for the current component.

Syntax
Description

Function GetFirstContentFrame( ) As AcFrame


The GetFirstContentFrame( ) method looks for and returns the first content
frame (if any) for a component of a report, or Nothing if there is no content
frame.
If the current object is a report or group section, GetFirstContentFrame( )
returns the first content frame in that object, skipping the Before frame.

Returns

The first content frame.


Nothing if there are no content frames.

516

Actuate Foundation Class Reference

AcReportComponent::GetFullACL method

AcReportComponent::GetFullACL method
Returns the access control list (ACL) for this component combined with the
other container components in the structure hierarchy.

Syntax
Description

Returns

Function GetFullACL( ) As String


Call this method to retrieve a combined ACL for this component and all the
other container components in the structure hierarchy. For example, if the
report contains multiple group sections nested in a report section, the report
section and each group section can have a separate ACL. If you call
GetFullACL on the first group section, GetFullACL returns the union of the
ACL for that group section and the report section because the report section is
a container component in the group sections structure hierarchy. The other
group sections are not included because they are not in the first group
sections structure hierarchy.
The ACL for the component and any other container component in the
structure hierarchy. The result is a list of security IDs separated by commas.
Nothing if the component is not a section.

AcReportComponent::GetPage method
A Viewer method that returns the page that a particular object first appears on.

Syntax
Description

Function GetPage( ) As AcBaseFrame


At run time, the Viewer calls GetPage( ) to get the page on which the object
appears and then displays the page for an object that the user selects in the
table of contents. You can also use GetPage( ) to get the page for a structural
object, such as a section. However, since a section is nonvisual, GetPage( ) gets
the page that shows the header for that section.
If you want just the number of the page that an object is on, use
GetPageIndex( ).

Returns
See also

The page on which an object first appears.


AcReportComponent::GetPageIndex method

Chapter 3, AFC classes

517

AcReportComponent::GetPageIndex method

AcReportComponent::GetPageIndex method
A Viewer method that returns the number of the page that an object is on.

Syntax
Description
Returns

Function GetPageIndex( ) As Integer


GetPageIndex( ) returns the page number in the report, starting with 1. If you
want to get the page an object is on, use GetPage( ).
The number of the page the object is on.

AcReportComponent::GetPageList method
Returns the page list associated with the report that contains this component.

Syntax
Description

Returns

Function GetPageList( ) As AcList


Returns the page list associated with the report that contains this component.
The framework uses this method whenever it wants to add a new frame to the
page list. You can use this method to get the page list if you want to start a new
page or add your own custom frame to the page list.
The page list associated with the report that contains this component.

AcReportComponent::GetReport method
Returns the report that contains this component.

Syntax
Description

Function GetReport( ) As AcReport


Returns the report that contains this component.
You can use this method if you create variables on the report that you want to
access elsewhere in your application. The procedure is:
1 Declare a variable of the type of your report.
2 Call this method to get the report and assign it to your variable.
3 Use that object reference variable to access your report variables.

Returns
Example

The report that contains this component.


Dim rptAs MyReport
Set rpt = GetReport ( )
BackgroundColor = rpt.NextColor

518

Actuate Foundation Class Reference

AcReportComponent::GetRowCount method

AcReportComponent::GetRowCount method
Returns the number of rows that this component has processed.

Syntax
Description

Returns

Function GetRowCount( ) As Integer


Returns the number of rows that this component has processed. This number
is useful if you override methods to do custom processing and you need to
know if the row is the first row, or to get the number of rows your component
has processed.
The number of rows this component has processed.

AcReportComponent::GetTocEntry method
Gets the text of the TOC entry.

Syntax
Description

Function GetTocEntry( ) As String


Returns the text of the TOC entry for this component.

AcReportComponent::GetXMLText method
Returns the value for an XML attribute or element.

Syntax

Function GetXMLText( ) As String

Description

Call GetXMLText( ) to retrieve the value for an XML attribute or element. If the
component is a data control, GetXMLText( ) returns the value of the GetText
function formatted for XML. Override this method to modify the data value
for your custom XML format. For example, you can encode numbers as strings
or translate codes from one set of values to another. If you override
GetXMLValue, you must return the XML value as a string using the standard
XML quotes. Call ConvertToXML at the end of your code to have the function
add the quotes required by XML.

Example

This example shows one way to translate codes from one set of values to
another. A control in the report design displays transaction type as Credit or
Debit. The XML DTD defines the transaction format as TransType=C or D.
The following code translates the data values to be consistent with the DTD:

Chapter 3, AFC classes

519

AcReportComponent::HasContents method

Function GetXMLText( ) As String


If DataValue = Credit Then
GetXMLText = C
Else
GetXMLText = D
End If
End Function

Returns

See also

XML value in string format. By default, Actuate returns the value of GetText( )
formatted for XML if the control is a data control. For other components,
Actuate returns a blank string.
For information about ConvertToXML, see the Actuate Basic Language
Reference.

AcReportComponent::HasContents method
Returns whether the component has at least one content.

Syntax
Description
Returns

Function HasContents( ) As Boolean


The HasContents( ) method determines whether the component has at least
one content.
True if the component has at least one content.
False if either the component cannot have contents or the list of contents is
empty.

AcReportComponent::IsContainer method
Determines whether a component can have contents.

Syntax
Description
Returns

Function IsContainer( ) As Boolean


The IsContainer( ) method determines whether a component can have
contents. This method is the opposite of IsLeaf( ).
True if the component can have contents.
False if the component cannot have contents.

See also

520

AcReportComponent::IsLeaf method

Actuate Foundation Class Reference

AcReportComponent::IsFrame method

AcReportComponent::IsFrame method
Checks whether the component is a frame.

Syntax
Description
Returns

Sub IsFrame( ) As Boolean


Call IsFrame to determine whether the component being referenced is a frame.
True if the component is a frame.
False if the component is not a frame.

AcReportComponent::IsLeaf method
Determines whether a component cannot contain contents.

Syntax
Description
Returns

Function IsLeaf( ) As Boolean


The IsLeaf( ) method determines whether a component cannot have contents.
This method is the opposite of IsContainer( ).
True if the component cannot have contents.
False if the component can have contents.

See also

AcReportComponent::IsContainer method

AcReportComponent::IsVisual method
Checks whether or not the component is a visual component.

Syntax
Description
Returns

Function IsVisual( ) As Boolean


Call IsVisual( ) to determine whether the component is a visual component.
True if the component is visual, that is, it appears on the screen.
False if the component is not a visual component.

Chapter 3, AFC classes

521

AcReportComponent::OnRow method

AcReportComponent::OnRow method
Called for each new row.

Syntax
Description
Example

Sub OnRow( )
Called for each new row.
The following example shows how to create a distinctive look for the sales
reports of three sales offices within the same company. View the code used in
this example in a fuller context by opening Examples/Condtnl.rod,
highlighting the group section component OfficeGroup, and examining its
OnRow( ) method.
The following code sets a custom variable, ContentsFrame, in OfficeGroup.
When the code is finished executing, the variable ContentsFrame will contain
one of three possible frames, BostonFrame, NewYorkFrame, or
PhiladelphiaFrame. The choice of the correct frame depends upon the value of
the offices_officeID variable of the current row. For instance, if offices_officeID
is 1, then the variable ContentsFrame will contain BostonFrame.
This example does not actually instantiate any frame as content for the
OfficeGroup group section in Condtnl.rod it merely identifies which frame
should be instantiated as content. The OfficeGroup components
NewContent( ) method determines the correct frame to instantiate by
inspecting the ContentsFrame variable you set in the OnRow( ) method:
Sub OnRow( row As AcDataRow )
Dim currentRow As ConditionalExampleDataRow
Set currentRow = row
Select Case currentRow.offices_officeID
Case 1
Set ContentsFrame = New Persistent BostonFrame
Case 2
Set ContentsFrame = New Persistent NewYorkFrame
Case 3
Set ContentsFrame = New Persistent PhiladelphiaFrame
End Select
'Notice that the call to the super occurs here, at the end of the custom code
Super::OnRow( row )
End Sub

522

Actuate Foundation Class Reference

AcReportComponent::SetTocEntry method

AcReportComponent::SetTocEntry method
A generated method that sets the text of a TOC entry.

Syntax
Description

Sub SetTocEntry( )
SetTocEntry( ) uses the TocValueExp property value to assign table of contents
names.

AcReportComponent::Start method
Contains the logic for preparing an object for the build process.

Syntax
Description

Sub Start( )
Start( ) calls PinObject( ) and prepares an object for the build process.
Derived classes can override Start( ) to do additional work when the Factory
starts processing the component. The derived version must always call the
superclass version before doing the custom work.

About PinObject( )
PinObject( ) is an Actuate Basic function that works with the Persistent Object
Storage Mechanism (POSM). POSM writes persistent objects to the report
instance (.roi) file. It also optimizes memory usage by swapping objects in and
out of memory as needed.
PinObject( ) pins an object to memory so that it is not written to disk. Objects
that hold references to transient objects must be pinned so that they maintain
their references to the transient object.

See also

AcReportComponent::Finish method

Chapter 3, AFC classes

523

Class AcReportController

Class AcReportController
Issues Viewer commands to a report.

Description

AcReportController lets you issue Viewer commands to a report from Basic


code in the Viewer. The report can be the same one issuing the commands, or it
can be some other report. You can also use the ReportController class to
navigate between pages or to implement hyperlinks.
Hyperlinks connect one visual object, typically a data control, in a report to
another object in either the same report or another report. Create hyperlinks to
let users access related or detailed information on another page or in another
report. For example, users may find it useful to jump from a customer record
to that customers order record, or from a summary report to a detailed report.
To use this class, first create an instance of this class, then call either
AttachToThisReport( ) or AttachReport( ).

Methods
Method

Type

Description

AttachReport( )

Boolean

Establishes a link to another report.

AttachToThisReport( )

Boolean

Establishes a link to the current report.

FollowLink( )

Boolean

Locates an object for a hyperlink.

ShowNextPage( )

N/A

Displays the next page.

ShowPage( )

N/A

Displays the specified page.

ShowPrevPage( )

N/A

Displays the previous page.

AcReportController::AttachToThisReport method
Attaches the report controller to the current report.

Syntax
Description
Returns

Function AttachToThisReport( ) As Boolean


Establishes a link to the current report. You can then issue Viewer commands
to control the report.
True if successful.
False if an error occurred.

524

Actuate Foundation Class Reference

AcReportController::AttachReport method

AcReportController::AttachReport method
Attaches the report controller to the specified report.

Syntax
Parameter
Description
Returns

Function AttachReport( fileName As String ) As Boolean


fileName
The name of the external report (.roi file) to which to attach.
Establishes a link to an external report. If the report is not yet open in the
Viewer, this call opens it.
True if the report is successfully opened.
False if an error occurred. The most likely error is that the .roi file does not
exist.

AcReportController::FollowLink method
Executes a link to the destination component.

Syntax
Parameter

Function FollowLink( className As String, variableName As String,


valueString As String, newView As Boolean ) As Boolean
className
The class name of the component to link to.
variableName
The component variable to search for in the class being searched. If you want
to search a data control, this name is Data Value.
valueString
The variable value to search for. This variable can contain wildcard characters.
The wildcards are the same as those you use in the Viewers search window.
newView
True means to show a new view. False means to use the current view. If the
destination is another report, and that report is not open, it is opened
automatically. Subsequent calls to FollowLink( ) use this view.

Description

The FollowLink( ) method establishes and executes (navigates) the link


between objects in reports. A report, either internal or external, must have
been attached. FollowLink searches through the report until the first
occurrence of the specified link is located.

Chapter 3, AFC classes

525

AcReportController::ShowNextPage method

The search string can contain the following wildcard characters.


Pattern

Description

Escape next character (one- or two-byte character)

Match any one character (one- or two-byte character)

Match any ASCII numeric character [0-9]

Match zero or any number of characters

\a

Match one alarm (0x07)

\b

Match one backspace character (0x08)

\t

Match one tab character (0x09)

\n

Match one new line (0x0A)

\f

Match one form feed (0x0C)

\r

Match one carriage return (0x0D)

\\

Match one backslash character (\)

[]

Match zero characters (ignored)

[char-list]

Match any one character inside the brackets

[a-z0-9]

Match any lowercase or ASCII numeric character (character


code range always)

[a-z-]

Match any lowercase character or hyphen

[^a-z0-9]

Match any character other than lowercase or ASCII numeric

[^]

Match one caret (^)

[?] or \?

Match one question mark (?)

[\3] or \#

Match one pound sign (#)

[*] or \*

Match one asterisk (*)

[[] or \[

Match one open-square-bracket ([)

[]] or \]

Match one close-square-bracket (])

[\[-\]]

Match any ASCII character with code between [ and ]

[\1-\377]

March any one-byte character excluding NULL (0x00)

[\x100-\xffff]

Match any two-byte character

AcReportController::ShowNextPage method
Displays the next page.

Syntax

526

Sub ShowNextPage( )

Actuate Foundation Class Reference

AcReportController::ShowPage method

Description

Displays the page following the current page. If the current page is the last
page, ShowNextPage stays on the current page.

AcReportController::ShowPage method
Displays the specified page.

Syntax
Parameter
Description

Sub ShowPage( pageNumber As Integer)


pageNumber
The ordinal number of the page.
Displays the page specified by pageNumber. If pageNumber is out of the valid
range of pages, ShowPage stays on the current page.

AcReportController::ShowPrevPage method
Displays the previous page.

Syntax
Description

Sub ShowPrevPage( )
Displays the page previous to the current page. If the current page is the first
page, ShowPrevPage stays on the first page.

Chapter 3, AFC classes

527

Class AcReportSection

Class AcReportSection
A class that builds a report from a data stream.
AcComponent
AcReportComponent
AcSection
AcDataSection
AcReportSection

Description

The report section class builds a report from rows read from a data stream. The
report section is a kind of data section, and so it provides a Before and After
frame, contents, and a page header and footer. The report section inherits a
connection slot from AcSection, and adds the slot to the specified data stream.

Factory protocol
The following table shows how a report section works in the Factory.
Task

Method

1 Initializes the section.

New( )

2 Prepares the report section for Factory processing.


Start( ) instantiates and opens the connection, if any,
and instantiates the data stream.
3 Opens the data stream, builds the report by reading
each row from the data stream, then processes it as
described for AcDataSection.
4 Similar to Build( ), but gives you the ability to create
a nested report as described below.
5 Closes the data stream and connection.

Start( )
Build( )

BuildFromRow( )
Finish( )

Preparing the report section


The Start( ) method prepares the report section for processing each row. The
Start( ) method:

528

Instantiates and opens the connection, if any, by AcSection::Start( ).

Obtains the data adapter by calling ObtainDataStream( ).

Sets the sort key by calling SetSortKey( ).

Actuate Foundation Class Reference

Class AcReportSection

Building the report


The Build( ) method builds the report using the following sequence:
1 Starts the data stream by calling StartDataStream( ).
2 Produces the Page Header and Before components as described in
AcDataSection.
3 Reads a row from the data stream by calling its Fetch( ) method. If there is
no row, this method skips to step 9.
4 If there is no current content, then Build( ) calls NewContent( ) to create
one.
5 Passes the row to the contents BuildFromRow( ) method. If the content
accepts the row, then loops back to step 3.
6 Finishes the current content and instantiates a new one by calling
NewContent( ).
7 Calls the contents BuildFromRow( ) method. This time, the content must
accept the row.
8 Loops back to step 3.
9 Produces the After and Page Footer components as described in
AcDataSection.
Build( ) is called for all reports except a parallel report. A parallel report calls
BuildIntoFlow( ), not Build( ). If you override Build( ) for a parallel report, it
will never be called.
By default, the BuildFromRow( ) method calls Build( ). You might want to
override BuildFromRow( ) to add parameters to your query. Use the
parameters to retrieve only entries for a particular customer.

Working with data streams and connections


The report section centers on a data stream. Many data streams need a
connection. The report section gives you many options for assembling these
components. This section explains some options for placing a connection and
controlling when the data stream is opened and closed.

Placing a connection
Typically when you create a report section, you place the connection in the
Connection slot of the data stream itself. However, if you want to share the
connection with nested sections, you should place the connection in the
Connection slot of the report section. See the GetConnection( ) method for
details.

Chapter 3, AFC classes

529

Class AcReportSection

If you place the connection in the Connection slot of the report section, the
report will open the connection in Start( ) method of the report section. If you
want to share a connection defined in a section that appears above this report
in the structure hierarchy, leave both the report section and data stream
Connection slots empty. The framework automatically searches to find the
shared connection. As described in AcSection, you can customize how the
report obtains and opens the connection. See AcSection::ObtainConnection( )
for details.

Controlling the data stream


A report should contain a data adapter component in the Data Stream slot. It is
not an error for a report to have no data stream. It will still output the Before
and After components, but it produces no data rows.
By default, the report instantiates and opens the data adapter that appears in
the Data Stream slot. However, if you want to customize this behavior, you can
override ObtainDataStream( ) to take control of this process. Be sure your
override returns an instantiated, started data adapter. If you override
ObtainDataStream( ), you may want to also override FinishDataStream( ) to
prevent the report from closing the data stream if your data stream is shared
with other report sections.
The data stream life cycle is shown in the following table.
Protocol
Method
Start( )

Build( )

530

Calls...

To...

AcSection::
ObtainConnection( )

Create or locate the connection for this


report.

AcReportSection::
ObtainDataStream( )

Create or locate the data stream for this


report. By default, this method calls
NewDataStream( ) to instantiate the
data stream.

AcReportSection::
NewDataStream( )

Instantiate the data stream. By default,


this method instantiates the data
adapter specified in the Data Stream slot
in the structure pane.

AcReportComponent:
GetConnection( )

By default, called by
ObtainDataStream( ) to locate the
connection to associate with the data
stream.

AcReportSection::
StartDataStream( )

Start the data stream, if any, returned by


ObtainDataStream( ).

AcDataAdapter::
Fetch( )

Fetch each row from the data stream.

Actuate Foundation Class Reference

Class AcReportSection

Protocol
Method
Finish( )

Calls...

To...

AcReportSection::
FinishDataStream( )

Finish processing the data stream, if any.


By default, closes the data stream.

AcSection::
FinishConnection( )

Finish processing the connection, if any.


By default, closes the connection.

You can override any of the methods in the middle column to customize your
section or data adapter to suit your application.

Creating nested reports


You will sometimes want to create one report that nests inside another. For
example, suppose you have an Access database that lists the customers for
which you are responsible. You want to create a report that creates a list of the
open orders for each customer. The orders reside in the departmental Oracle
database. In this case:


Create a top report to query your Access database.

In the Content slot of the outer report, create another report to query the
orders you want to retrieve and print.

The inner report section opens its data stream at the beginning of its Build( )
method. To set a parameter on the inner query based on a value in the current
data row in the outer query, override the BuildFromRow( ) method to get the
customer ID from the outer data row, then pass this value to the query you
created in your inner report.

Properties
Property

Type

Description

DataStream

AcDataAdapter

The data stream that provides rows for


this report.

Sorting

AcSortingOptions

Determine whether or not the report


section puts a sort filter in front of the
data source in a particular report
section.

About the Sorting property


The Sorting property indicates whether a report section should perform
automatic sorting for the data source it uses. The types of sorting available are:

Chapter 3, AFC classes

531

Class AcReportSection

AutoSort: The default. If AutoSort is set, the report section determines if the
data source can sort data dynamically according to AddSortKey() calls. If
the data source cannot sort dynamically, the report section instantiates a
sort filter and places that filter in the chain of data adapters. The report
section determines whether or not the data source yields data in the order
expected by the group sections.

PreSorted. If PreSorted is set, the data arrives from the data source already
sorted in the order that data sections expect the data. No attempt is made to
tell the data source how to sort (by making AddSortKey() calls), and the
report section does not instantiate a sort filter.

CompatibleSort. CompatibleSort provides backwards compatibility with


the AutoSort property of previous Actuate releases. AutoSort was set to
True to indicate that the data source can sort dynamically. If this is the case,
Sorting is set to CompatibleSort. Compatible sort means that the report
section makes the AddSortKey() calls, but does not invoke a sort filter. If
the old AutoSort property is set to False, the Sorting property is set to
PreSorted.

Methods

Example

Method

Type

Description

FinishDataStream( )

N/A

Closes the data stream for this


report.

NewDataStream( )

AcDataAdapter

Instantiates the data stream for


this report.

ObtainDataStream( )

AcDataAdapter

Creates or locates the data stream


to use for this report.

SetSortKey( )

N/A

Sets the sort key for the data


adapter for this report.

StartDataStream( )

N/A

Opens the data stream for this


report.

These examples show how to build nested reports:


Function BuildFromRow( row As AcDataRow) As AcBuildStatus
If Not row Is Nothing Then
CustomQuery::StateParam = row.GetValue("state")
End If
BuildFromRow = Super::BuildFromRow( row )
End Function

532

Actuate Foundation Class Reference

AcReportSection::FinishDataStream method

Occasionally, you might want to parameterize a connection as well as a query


for a nested report. For example, you might have five department databases,
each with the same schema, but with different names. You want to run an
outer query that lists the server for each department, then an inner report that
queries some data on that server. The report normally opens its connection in
the Start( ) method. For this example, you must write custom code that will
postpone opening the connection until your code reaches a call to the
BuildFromRow( ) method. To do so, you have to override two methods:
ObtainConnection( ) and BuildFromRow( ). You can let the report section close
the connection in the usual way:
Function ObtainConnection( ) As AcConnection
'Instantiate, but dont open, the connection
Set ObtainConnection = NewConnection( )
End Function
Function BuildFromRow( row As AcDataRow ) As Boolean
Dim server
As ServerRow
Dim deptConn
As DepartmentConnection
'Get the data row
Set server = row
'Get the connection
Set deptConn = GetConnection( )
'Parameterize and open the connection.
deptConn.ServerName = server.ServerName
Verify( deptConn.Connect( ) )
'Let the super class method do the actual building
BuildFromRow = Super::BuildFromRow( row )
End Function

AcReportSection::FinishDataStream method
Closes the data stream for this report.

Syntax
Description

See also

Sub FinishDataStream( )
Finishes the data stream. By default, it closes the data stream by calling its
Finish( ) method. You can override this, for example, to do nothing if you want
to use the same data stream instance later.
AcReportSection::NewDataStream method
AcReportSection::ObtainDataStream method
AcReportSection::StartDataStream method

Chapter 3, AFC classes

533

AcReportSection::NewDataStream method

AcReportSection::NewDataStream method
Instantiates the data stream.

Syntax
Description

Returns
See also

Function NewDataStream( ) As AcDataAdapter


The NewDataStream( ) method instantiates the component placed in the
DataStream slot of the report section. The data stream component is transient.
If you override this method, use the New keyword, not New Persistent.
The data adapter that was instantiated.
AcReportSection::FinishDataStream method
AcReportSection::ObtainDataStream method
AcReportSection::StartDataStream method

AcReportSection::ObtainDataStream method
Creates or locates the data stream to use for this report.

Syntax
Description

Function ObtainDataStream( ) As AcDataAdapter


This method obtains the data stream that the report is to use. By default, it
instantiates the data adapter that you placed in the Data Stream slot. You can
override this method, for example, to use an existing data stream that you
created elsewhere.
This method does not also open the data stream. Use the StartDataStream( )
method instead.

Example

The following example shows how to query a database once and use the result
set for more than one report or subreport. To view the code used in this
example in a fuller context, open Examples/Reusequery/Smdsrc.rod. The
example shows how a number of related methods work together in an Actuate
report, in particular the ObtainDataStream, StartDataStream, and
FinishDataStream methods.
The report design in Smdsrc.rod has a sequential section with two subreports,
R1 and R2. R1 and R2 use data from the same database query. So instead of
each subreport making its own individual query, R1 first makes the query for
both, stores the resulting datastream in BufDStream, and uses it. Then R2 picks
up the datastream from BufDStream and reuses it.
In report component R1, override the Finish method as follows:
Sub Finish( )

534

Actuate Foundation Class Reference

AcReportSection::ObtainDataStream method

' At this point, we need to be sure to keep the datastream open.


' First instantiate sApp::BufDStream.
'Note: BufDStream is a static variable of the sApp object.
'It is of type MemoryBuffer. Here, we prepare the variable
'to provide the datasource for R2 later.
Set sApp::BufDStream = DataSource
'Rewind sApp::BufDStream now, so that when R2 uses it
'later, R2 will start from the first row of the buffer
sApp::BufDStream.Rewind()
Super::Finish( )
End Sub

To see BufDStream, open the component editor on the sApp component, and
choose the Variables tab. BufDStream is what holds the data for R2.
In report component R2, override the ObtainDataStream, StartDataStream,
and FinishDataStream methods. The call to Super::ObtainDataStream( ) has
been deleted in the following code, so that the overridden methods do not
inherit the original ObtainDataStream( ) behavior:
Function ObtainDataStream( ) As AcDataAdapter
' R2 will use sApp::BufDStream as its datastream.
Set ObtainDataStream = sApp::BufDStream
End Function

The call to Super::StartDataStream( ) has been removed in the following code


so that the method does not inherit the superclass StartDataStream( )
behavior. The method essentially does nothing:
Sub StartDataStream( stream As AcDataAdapter )
' We do not need to start the datastream since we are
' using sApp::BufDStream as R2's datastream.
End Sub

The following code does some cleanup:


Sub FinishDataStream( stream As AcDataAdapter )
Super::FinishDataStream( stream )
' Since we no longer need sApp::BufDStream, set it
'to nothing.
Set sApp::BufDStream = Nothing
End Sub

Returns

The data adapter.

Chapter 3, AFC classes

535

AcReportSection::SetSortKey method

See also

AcReportSection::FinishDataStream method
AcReportSection::NewDataStream method
AcReportSection::StartDataStream method

AcReportSection::SetSortKey method
Sets the sort key for the data adapter.

Syntax
Parameter
Description

Sub SetSortKey ( adapter As AcDataAdapter )


adapter
The data adapter that supplies the data rows.
The SetSortKey( ) method sorts the data rows by the keys specified in the data
adapter. For example, you could have the data adapter first sort by customer
ID, then by order number, and finally by line number. By default, this method
sets the sort key to the columns you specified in the Key properties for any
group sections in this report.
SetSortKey( ) is generated by the AFC framework based on the keys that you
specified in the group sections to create a default layout. You can override
SetSortKey( ) to provide additional processing.

AcReportSection::StartDataStream method
Opens the data stream for this report.

Syntax
Parameter
Description

See also

536

Sub StartDataStream( stream As AcDataAdapter )


stream
The data stream to use for this report.
This method prepares the data stream for reading. By default, it opens the data
stream by calling its Start( ) method. You can override this method, for
example, to do nothing if the data stream already exists and is open.
AcReportSection::FinishDataStream method
AcReportSection::NewDataStream method
AcReportSection::ObtainDataStream method

Actuate Foundation Class Reference

Class AcReportView

Class AcReportView
Provides a visual view of a report object.

Description

The report view class provides a way to visually examine a report object. There
can be many views for the same object open at one time.
Use AcReportView methods to send a message to the window telling it to
print the displayed report, or to examine the set of report components which a
user has selected.
To examine (or scan through) the collection of report objects selected by a user:
1 Initialize the scan by calling StartSelectionScan( ).
2 Retrieve the number of objects in the collection by calling
GetSelectionCount( ).
3 Iterate through the collection using GetNextSelection( ).
4 When you are finished with the scan, call EndSelectionScan( ) to close the
collection and end the scan.

Methods
Method

Type

Description

EndSelection Scan( )

N/A

Ends the selection set scan.

GenerateXML( )

N/A

Generates XML data for a


report.

GetNextSelection( )

AcReport
Component

Retrieves an item in the


selection set.

GetSelectionCount( )

Integer

Retrieves the number of objects


in the selection set.

PrintAllPages( )

N/A

Allows a report to print all its


pages.

PrintPages( )

N/A

Allows a report to print itself,


with print options.

StartSelectionScan( )

N/A

Initializes the selection set scan.


Call this method before calling
the other selection set methods,
or to reset a selection set scan.

Chapter 3, AFC classes

537

AcReportView::EndSelectionScan method

Example

The following example shows how to override the OnLButtonDown method


to create a new control called Extract, which copies the data values for the
selected controls to a file. The method creates an AcReportView container,
view, to hold the report object collection:
Function OnLButtonDown( view As AcReportView, Shift As AcShiftKeyState,
x As Integer, y As Integer ) As Boolean
Dim outFile As Integer
Dim selCount As Integer
Dim i As Integer
Dim component As AcReportComponent
Dim control As AcDataControl
' This method shows how to do the export using a control as
' a button. Note: DON'T call the Super:: method, it will
' clear the very selection you want to grab!
outFile = FreeFile( )
Open "export.txt" For Output As #outFile
' 1. Initialize the scan
view.StartSelectionScan( )
' 2. Get the number of objects in the collection
selCount = view.GetSelectionCount( )
'3. Iterate through the collection. If its a control, save it to
'a file.
For i = 1 to selCount
Set component = view.GetNextSelection( )
If IsKindOf( component, "AcDataControl" ) Then
Set control = component
Print #outFile, control.GetValue( )
End If
Next
'4. Youve examined the entire collection, so end the scan, and
' close the file.
view.EndSelectionScan( )
Close #outFile
End Function

AcReportView::EndSelectionScan method
Ends the selection set scan.

Syntax

538

Sub EndSelectionScan( )

Actuate Foundation Class Reference

AcReportView::GenerateXMLData method

Description

See also

EndSelectionScan( ) ends the examination of the collection of report objects


that the user selected. Call this method when you are finished examining the
report objects collection.
AcReportView::GetNextSelection method
AcReportView::GetSelectionCount method
AcReportView::StartSelectionScan method

AcReportView::GenerateXMLData method
Generates XML data for a report.

Syntax
Parameter
Description

Sub GenerateXMLData( filename As String )


filename
The name of the XML data output file.
Actuate calls GenerateXMLData to build an XML data file for the report when
you select Save As XML Data from the File menu. GenerateXMLData uses the
XML Data properties on the report components to build the XML report
content.

AcReportView::GetNextSelection method
Retrieves the next object in the collection.

Syntax
Description
See also

GetNextSelection( ) As AcReportComponent
GetNextSelection( ) retrieves the next report object in the selected collection.
Call this method to iterate through the collection.
AcReportView::EndSelectionScan method
AcReportView::GetSelectionCount method
AcReportView::StartSelectionScan method

AcReportView::GetSelectionCount method
Retrieves the number of report objects in the selected collection.

Syntax

GetSelectionCount( ) As Integer

Chapter 3, AFC classes

539

AcReportView::PrintAllPages method

Description
See also

GetSelectionCount( ) retrieves the number of report objects in the selected


collection. Use this number to iterate through the collection.
AcReportView::EndSelectionScan method
AcReportView::GetNextSelection method
AcReportView::StartSelectionScan method

AcReportView::PrintAllPages method
Prints all pages of a displayed report.

Syntax
Description
See also

Sub PrintAllPages( )
PrintAllPages( ) allows users to print all pages of a report directly from the
Viewer window.
AcReportView::PrintPages method

AcReportView::PrintPages method
Prints a report directly from a Viewer window.

Syntax
Parameter

Sub PrintPages ( silent As Boolean, first As Integer, last As Integer )


silent
True to display the Print dialog box, False otherwise.
first
The first page of a range of pages to print, or 0 to print the entire report.
last
The last page of a range of pages to print, or 0 to print the entire report.

Description

PrintPages( ) allows users to print reports directly from the Viewer window,
and provides a facility for automatic report printing.
If silent is False, PrintPages displays the standard print dialog box, which
allows users to set up print options for the report.
If silent is True, the print dialog does not display and automatic report printing
is enabled. This is useful for applications that run a series of reports, display
them in the Viewer, then print them and go on to the next in the series.
If first or last are set to integers greater than 0, only those pages print.

See also
540

AcReportView::PrintAllPages method

Actuate Foundation Class Reference

AcReportView::StartSelectionScan method

AcReportView::StartSelectionScan method
Initialize the scan of the selected collection of report objects.

Syntax
Description

See also

StartSelectionScan( )
StartSelectionScan( ) starts the scan of a selected collection of report objects.
Use it to initialize your examination of a collection of report objects, or to reset
the scan.
AcReportView::EndSelectionScan method
AcReportView::GetNextSelection method
AcReportView::GetSelectionCount method

Chapter 3, AFC classes

541

Class AcSection

Class AcSection
The base class for all sections.
AcComponent
AcReportComponent
AcSection

Description

A section is a structural component that builds the logical structure of the


report. That is, when you look at the report design in the layout pane of the
Design Editor, or run the report and view it, you do not see the sections
themselves. The only visible sign of a sections existence in a report is the effect
it has on the organization of the visual components, such as frames and
controls. In the Design Editor, sections appear in the structure pane.
A section has high-level control of the overall design of the report. It defines
the framework of the report by determining when a data stream will be
opened, what kind of processing will be perform based on the rows in the data
stream, and how and when frames are created.
Sections are persistent, they are written to the .roi file. They cannot be viewed.
They exist behind the scenes to organize data and are used for viewing tasks
such as searching, generating XML data, and extracting data from the report.

Using page security


The GrantExp property on AcSection and all the sections derived from
AcSection determines which users can view pages produced by the section.
Developers can specify an access control list (ACL) in the GrantExp property
that consists of one security identifier, a list of security identifiers, or an
expression that evaluates to one or more security identifiers. A security
identifier can either be a user ID or a role. Security identifiers limit the
visibility of pages to a certain user or set of users. If GrantExp is empty, then
the pages produced by the section can be viewed by any user. An example of a
GrantExp expression is:
"Mgr" & [customers.State]

In this example, the roles on the Report Encyclopedia include managers at the
state level, such as MgrCa and MgrFl. Using this page security scheme,
managers can view pages showing data for their state only.
You can override the SetSecurity method on AcSection to build a custom ACL.
By default, SetSecurity returns the security identifiers that are contained in the

542

Actuate Foundation Class Reference

Class AcSection

GrantExp property. SetSecurity provides access to the current data row to help
you decide how to build the security ids for the section.
The CascadeSecurity property prevents page security on a section from being
inherited from its container sections (if any.) By default, nested sections inherit
the Access Control List(s) from their container sections. To define an ACL for a
nested section and prevent the ACL(s) from container sections to be inherited:


Set the CascadeSecurity property of the container section to False.

Set the GrantExp property to the security IDs for the nested section.

Types of sections
AcSection is the base class from which the Actuate framework sections are
derived. Each type of section is summarized here. Further information about
each type of section is described in more detail in the individual class
descriptions.
Section
type

Description

Example

Report

Produces a series of frames from


rows obtained from a data
stream. Provides slots to create a
connection and data stream.
Contents are usually group
sections, frames, or nested report
sections.

Print a list of customers


from a query against an
ODBC database.

Group

Groups data on a common field,


such as customers grouped by
state.

Print orders for customers


in various states.

Sequential

Contains several frames, graphs,


subreports, or sections that
appear in a specified order.

Print two related reports,


such as a sales history and
a staffing history, one after
the other.

Conditional

Uses a conditional expression to


determine which of several
frames, graphs, subreports, or
sections to include in the report.

Print a different frame for


salaried, hourly, or
commission employees.

Parallel

Contains two or more


subreports that are displayed or
printed simultaneously in
different flows on the same
page.

Present two related


reports, such as employee
addresses and salary
histories, printed side-byside for easy comparison.

Chapter 3, AFC classes

543

Class AcSection

Factory protocol
AcSection provides a specific protocol to be followed by derived classes. This
protocol follows that set by AcReportComponent. The description here
identifies the specific ways this class uses the standard protocol.
Method

Task

New( )

Initialize the section.

Start( )

Prepare the section for Factory processing.

Build( )

Build the contents of the section. Called for the


topmost section in a report, and when no data row
is available.
Build the contents of the section when a data row
is available. Called for sections nested inside a
report or group section.
Finish Factory processing.

BuildFromRow( )

Finish( )

The database connection


The standard way to work with database connections is to create the
connection directly inside a data stream. This works fine if your report has just
one data stream, or if each data stream in your report uses a different
connection, or needs no connection at all. However, this scheme is inefficient if
your report has multiple data streams that work with the same connection,
and that connection is capable of processing multiple queries. In this case, it is
more efficient to open the connection once, and then use it for multiple data
streams. You do so by attaching the connection to a section instead of a data
stream.
To determine which section to attach to your connection, look in the structure
pane of the Design Editor. Find the section that is the common parent of all the
data streams that need that connection. This will often be the topmost section
of your report. Then, move your connection into that slot from the Connection
slot of the data stream.
The section instantiates and opens the connection in its Start( ) method and
closes the connection in its Finish( ) method. All nested sections call
GetConnection( ) to search for this connection up the structure hierarchy. The
connection is valid as long as its section is active.
Some reports mix connections. For example, in creating a sales report, most
queries might work against the Oracle sales database, but you might have one
or two that work against a departmental Access database. In this case, you can
connect to the Oracle database in your topmost section, then, in the query that
works with your Access database, create an ODBC connection specifically for

544

Actuate Foundation Class Reference

Class AcSection

that query. When looking for the connection, the local connection takes
precedence over any connection defined higher in the structure hierarchy.
If you want to keep two connections open, you must write custom code to
maintain the second connection. In the example above, you can define a static
variable to hold the connection, override the Start( ) method of your topmost
section to open the additional ODBC connection, and override the Finish( )
method to close it. In the section where you need the second connection,
override ObtainConnection( ) to return this second connection from the static
variable you defined above, and override FinishConnection( ) to do nothing so
that the nested section does not close this shared connection.

Interrupting a section
Sections usually run until they have processed all the available data rows or
section contents. There are times when you might want to stop processing
early. For example, you might want to stop output after the first page or after a
certain number of rows. The section class gives you three methods to stop
processing. They differ in the amount of cleanup they perform:


StopAfterCurrentRow( ) processes the current data row to completion


before stopping. The section outputs the frame or frames, if any, for the row
and outputs totals, and so on, depending on the kind of frame. You use this
method when you want to stop processing a section after a given row or a
given number of rows. The resulting report will look as if the input data
stream contained only rows up to the current row. All subsequent rows are
silently ignored.

StopAfterCurrentFrame( ) finishes the current frame by placing it on a


page, but then produces no more output. The section will not display any
totals. Note that finishing the frame might entail creating a new page to
contain the frame.

StopNow( ) stops the section. It discards any partially completed frames or


partially processed data rows. Use this when you want to stop output at
the end of a page. Do not create aggregates if you use this method because
the aggregates will be incorrect.

Variables
Variable

Type

Description

ContentList

AcList

Contains the list of content component


instances created for this section.

Chapter 3, AFC classes

545

Class AcSection

Properties
Property

Type

Description

Cascade
Security

Boolean

Determines whether the subsection


inherits the ACL(s) from its containers.
Default is True. To enable or disable
cascading page security, set the
CascadeSecurity property of the
container section.
You can also disable cascading page
security by overriding the
AcReportComponent::GetFullACL
method.

Connection

AcConnection
Structure
Reference

The connection, if any, to instantiate for


this section.

GrantExp

Expression

The ACL for the section. The ACL can


contain one or more security identifiers
or an expression that evaluates to one or
more security identifiers. If it contains
multiple security identifiers, each
security identifier must be separated by
a comma. Spaces before or after a
security identifier are ignored. The
default for GrantExp is blank. Blank
indicates that the section does not have
any unique security restrictions. The
section still inherits security restrictions
(if any) from its containers in the
structure hierarchy.

PageBreakAfter

Boolean
Function

True if the following section or frame


should start at the top of a new page.

PageBreakBefore Boolean
Function

True if the Factory should start a new


page before starting this section. That is,
True if this section should appear at the
top of a new page.

Subpage

The optional subpage to use with the


parallel report. If there is no subpage,
then the parallel report assumes that the
flows are available on the page itself.

AcSubpage

Considerations for HTML reports


HTML documents are all one long page. HTML does not support the concept
of page breaks. Therefore, properties that control pagination in Actuate reports
546

Actuate Foundation Class Reference

Class AcSection

are ignored when generating HTML for a report. For this class, the specific
properties ignored by HTML reports are:


PageBreakBefore

PageBreakAfter

Methods
Method

Type

Description

AddContent( )

N/A

Adds content to a section.

CommittedToFlow( )

N/A

Called by the page list for


each registered section.

FinishConnection( )

N/A

Closes the connection, if any,


for this section. Override this
if you do not want the section
to close the connection.

FinishFlow( )

N/A

Called at the end of each flow.

FinishPage( )

N/A

Tells a section that a new


page is finishing.

GetContents( )

AcOrdered
Collection

Returns the collection of


contents for this section. (See
AcReportComponent for
details.)

GetCurrentRow( )

AcDataRow

Returns the current data row.

ObtainConnection( )

AcConnection

Creates a connection for this


section. Override this if you
want to use other than the
default mechanism to get a
connection.

NewPage( )

AcPage

Lets the section determine the


page on which it appears.

PageBreakAfter( )

Boolean

Returns True if the


PageBreakAfter property is
set.

PageBreakBefore( )

Boolean

Returns True if the


PageBreakBefore property is
set.

SetSecurity( )

AcDataRow

Sets the ACL for the section.


Override this method if you
want to build a custom ACL
for the section.

Chapter 3, AFC classes

547

AcSection::AddContent method

Method

Type

Description

StartFlow( )

N/A

Called at the beginning of


each flow.

StartPage( )

N/A

Called at the start of each new


page.

StopAfterCurrentFrame( )

N/A

Stop processing after the


current frame is added to the
page.

StopAfterCurrentRow( )

N/A

Stop processing after the


current data row is complete.

StopNow( )

N/A

Stop processing a data row


immediately.

AcSection::AddContent method
Adds content to a section.

Syntax
Parameter
Description

Sub AddContent( content As AcReportComponent )


content
The element to which you are adding content.
The AddContent( ) method adds content to a section. The component is
appended to the end of the content list.
Typically, AddContent is automatically called. However, if you are creating
your own custom section, you can call this method to add your custom
contents.

AcSection::CommittedToFlow method
Called by the page list for each registered section.

Syntax
Parameter
Description

548

Sub CommittedToFlow( flow As AcFlow )


flow
The flow to which the section is committed.
The page list calls the CommittedToFlow( ) method for each registered section
when the page list has determined that the section is committed to the flow.
That is, the flow contains at least one content frame from this section (or one of
its contents) that is not a page decoration, and there is no longer the possibility
that the decoration may be removed and restarted on another flow.

Actuate Foundation Class Reference

AcSection::FinishConnection method

Note that there will be at least one call to StartFlow( ) before a call to
CommittedToFlow( ), but there may be two calls, the first of which represents
a failed attempt to start the section on an existing flow.

AcSection::FinishConnection method
Closes the connection.

Syntax
Parameter
Description

See also

Sub FinishConnection( connection As AcConnection )


connection
The connection to close.
By default, this method closes the connection. The method is called only when
this section has a connection. You should override this method to do nothing if
you overrode the ObtainConnection( ) method to return a shared connection.
(If the connection is shared, then you probably want to leave it connected so
that a later section can continue to use it.)
AcSection::ObtainConnection method

AcSection::FinishFlow method
Called at the end of each flow.

Syntax
Description

See also

Sub FinishFlow
The page list calls FinishFlow( ) for each active section at the end of each flow.
There will be one call to EndFlow( ) for each call to CommittedToFlow( ). This
is the place to add page footers.
AcSection::FinishPage method
AcSection::StartFlow method
AcSection::StartPage method

AcSection::FinishPage method
Tells a section that a new page is finishing.

Syntax

Sub FinishPage( page As AcBasePage )

Chapter 3, AFC classes

549

AcSection::GetContents method

Parameter
Description

page
A reference to the page that is ending.
FinishPage( ) identifies that a page is finishing and gives you an opportunity
to insert custom code. If you override FinishPage, call the Super version first.
In derived classes, the page list calls each objects FinishPage( ) to check if the
objects want to add information to a page before the page is finished.

See also

AcSection::FinishFlow method
AcSection::StartFlow method
AcSection::StartPage method

AcSection::GetContents method
Returns the collection of contents for this section.

Syntax
Description

Returns
See also

Function GetContents( ) As AcOrderedCollection


This method is simply an override of the method defined in
AcReportComponent that returns the ContentList variable. See the description
in AcReportComponent for more information.
The collection of contents for this section.
AcReportComponent::GetContents method

AcSection::GetCurrentRow method
Returns the current data row.

Syntax
Description
Returns

Function GetCurrentRow( ) As AcDataRow


The GetCurrentRow method returns the data row that the section is currently
processing.
A reference to the current data row.

AcSection::NewPage method
Lets the section determine the page on which it appears.

Syntax

550

Function NewPage( ) As AcPage

Actuate Foundation Class Reference

AcSection::ObtainConnection method

Description

Returns

NewPage( ) lets the section determine the page on which it appears. The page
you instantiate here takes precedence over the default page that the page list
supplies.
The page on which the section appears.

AcSection::ObtainConnection method
Creates a connection for this section.

Syntax
Description

Returns

Function ObtainConnection( ) As AcConnection


By default, this method instantiates and opens the connection, if any, that you
placed into the Connection slot of this section in the structure pane. You can
override this method to return a shared connection defined elsewhere.
The connection obtained for this section.

AcSection::PageBreakAfter method
Returns the value of the PageBreakAfter property.

Syntax
Description

Returns
See also

Function PageBreakAfter( ) As Boolean


The PageBreakAfter( ) method returns the value of the PageBreakAfter
property by default. You can override this method to take control of the return
value.
The value of the PageBreakAfter property.
AcSection::PageBreakBefore method

AcSection::PageBreakBefore method
Returns the value of the PageBreakBefore property.

Syntax
Description
Returns

Function PageBreakBefore( ) As Boolean


The PageBreakBefore( ) method returns the value of the PageBreakBefore
property. You can override this method to take control of the return value.
The value of the PageBreakBefore property.

Chapter 3, AFC classes

551

AcSection::PageBreakBefore method

Example

This example shows how to conditionally set page breaks. To view the code
used in this example in a fuller context:
1 Open \Erdpro\Examples\Detail\Detail.rod.

2 Choose View Library Browser.


3 Right click the PageBreakFrame component.

4 Choose the Properties Methods tab.


5 Scroll down to find and inspect the frames overridden PageBreakBefore
method.
The OfficeTitleFrame, SalesRepTitleFrame, CustomerTitleFrame, and
OrderTitleFrame in the report design are all subclassed from this single
PageBreakFrame component.
Suppose that there are many sales reps for any given office, and that in your
sales report you want to set a page break before each new sales rep except the
first. You want the first reps information to appear on the same page with the
office information.
The Detail report design uses the same logic to display information for each
office, for sales reps, for customers, and for orders.
The sample performs the same kind of processing in four different contexts. To
do this most efficiently, it creates a new class that has the desired behavior,
then subclasses it as needed. The code can be maintained in one place.
In this example, put the logic into a frame. The new class is called
PageBreakFrame, and it is defined in the Sales.rol library.
The PageBreakBefore( ) method returns the value of the PageBreakBefore
property. That means you can put conditional logic into the
PageBreakBefore( ) method, and return True or False depending on whether or
not this is the first frame instance for the current group. The following shows
how to make your report ignore the property setting and use only the
programmed setting.
The call to Super::PageBreakBefore( ) is commented out:
Function PageBreakBefore( ) As Boolean
'PageBreakBefore = Super::PageBreakBefore( )
'Insert your code here
Dim myparent As AcDataSection
PageBreakBefore = True
'Inspect the parent of the containing group.
'First assign an object reference.
Set myparent = GetContainer( ).GetContainer( )

552

Actuate Foundation Class Reference

AcSection::SetSecurity method

'If it is the first row, do not perform a page break.


If myparent.RowCount = 1 Then
PageBreakBefore = False
End If
End Function

The expression GetContainer( ).GetContainer( ) returns the container two


levels up in the structure hierarchy.
When an instance of the frame OrderTitleFrame (subclassed from
PageBreakFrame) evaluates this expression, the result is a handle to a
CustomerGroup instance. When an instance of the frame SalesRepTitleFrame
evaluates the same expression, the result is a handle to an OfficeGroup
instance.
For example, in CustomerGroup, the variable RowCount tells how many
orders that CustomerGroup instance has seen. The function of a
CustomerGroup instance is to process all the orders for a single customer. If
RowCount is 1, this is the first order. You do not want to set a page break
before the first order. The same logic works for each of the four title frames you
subclass from PageBreakFrame.

See also

AcSection::PageBreakAfter method

AcSection::SetSecurity method
Sets the access control list (ACL) for the section.

Syntax
Parameter
Description

Example

Sub SetSecurity( row As AcDataRow )


row
The current data row for use in generating the ACL.
Actuate calls SetSecurity to generate the ACL from the GrantExp property for
the section. Override the SetSecurity method to generate a custom list of
security identifiers. You set the ACL variable in SetSecurity to a list of security
ids separated by commas. If there are no security restrictions, set the ACL
variable to blank. The current data row is provided as input for generating the
security identifiers.
In the following example, the account type of the data row is used to
determine if users having the role called MajorAccts, PrivateBanking, or
Accounting can view the pages resulting from the sections content:

Chapter 3, AFC classes

553

AcSection::StartFlow method

Sub SetSecurity( row As AcDataRow )


Dim myRow As MyDataRow
Set myRow = row
If myRow.AccountType = "Commercial" Then
ACL = "MajorAccts"
ElseIf myRow.AccountType = "Private" Then
ACL = "PrivateBanking"
Else
ACL = "Accounting"
End If
End Sub

AcSection::StartFlow method
Called at the beginning of each flow.

Syntax
Parameter
Description

Sub StartFlow( flow As AcFlow ) As Boolean


flow
The flow that is starting.
The page list calls the StartFlow( ) method for each registered section at the top
of each new flow. There will be one or more calls to StartFlow( ) for each call to
StartPage( ). This is the place to add page headers and reserve space for page
footers.
StartFlow( ) returns True if the section was successfully started on the flow,
False if there was not enough room in the flow to contain the header, footer, or
subpage for the section. In this case, the page list ends the current flow, starts a
new flow, and calls this method again for the new flow.

See also

AcSection::FinishFlow method
AcSection::FinishPage method
AcSection::StartPage method

AcSection::StartPage method
Called at the start of each new page.

Syntax
Parameter

554

Sub StartPage( page As AcBasePage )


page
A reference to the page that is starting.

Actuate Foundation Class Reference

AcSection::StopAfterCurrentFrame method

Description
See also

StartPage( ) tells a section that a new page is starting.


AcSection::FinishFlow method
AcSection::FinishPage method
AcSection::StartFlow method

AcSection::StopAfterCurrentFrame method
Stop processing after the current frame is added to a page.

Syntax
Description

See also

Sub StopAfterCurrentFrame( )
StopAfterCurrentFrame( ) finishes the current frame by placing it on a page,
but then produces no more output. The section will not display any totals.
Note that finishing the frame might entail creating a new page to contain the
frame.
AcSection::StopAfterCurrentRow method
AcSection::StopNow method

AcSection::StopAfterCurrentRow method
Stop processing after the current row is complete.

Syntax
Description

See also

Sub StopAfterCurrentRow( )
StopAfterCurrentRow( ) processes the current data row before stopping. The
section outputs the frame or frames, if any, for the row and outputs totals, and
so on, depending on the kind of frame. You use this method when you want to
stop processing a section after a given row, or a given number of rows. The
resulting report will look as if the input data stream contained only rows up to
the current row. All subsequent rows are silently ignored.
AcSection::StopAfterCurrentFrame method
AcSection::StopNow method

AcSection::StopNow method
Stops processing a data row.

Syntax

Sub StopNow( )

Chapter 3, AFC classes

555

AcSection::StopNow method

Description

See also

556

StopNow( ) stops the section. It discards any partially completed frames or


partially processed data rows. Use this when you want to stop output at the
end of a page. Do not create aggregates if you use this method because the
aggregates will be incorrect.
AcSection::StopAfterCurrentFrame method
AcSection::StopAfterCurrentRow method

Actuate Foundation Class Reference

Class AcSequentialSection

Class AcSequentialSection
A class that generates multiple, sequential components.
AcComponent
AcReportComponent
AcSection
AcSequentialSection

Description

The AcSequentialSection class lets you generate multiple, sequential


components. For example, use it to produce multiple reports within a single
report object, as is done in the Sales Forecast example. The report lists the top
deals followed by positive changes, then followed by negative changes. Or,
you can produce multiple components for a single data row, such as a frame
that displays customer information followed by a nested report that lists the
customers current orders.
Think of the sequential section as a converter. It converts a slot that takes just
one component (such as the Content slot of the top-level AcReport) into a slot
that takes multiple components. The contents of a sequential section can be
any kind of report component including frames or other sections. The
sequential section generates its contents in the order that they appear in the
structure pane of the Design Editor.
You can write custom code that selects which contents to generate and which
to skip by overriding the SelectContent( ) method.

Building sequential sections


The component that contains the sequential section calls Build( ) or
BuildFromRow( ) for the sequential section. The container calls the Build( )
method if the container has no data row available, and calls BuildFromRow( )
if a data row is available. Within the sequential section, these two methods
perform identical processing, except that Build( ) will in turn call the Build( )
method on its contents, and BuildFromRow( ) will call BuildFromRow( ) on its
contents.

Constructing sections without input from data rows


Build( ) generates the contents of the sequential section in the order in which
they appear in the structure pane. Since Build( ) takes no data row, when this
method builds its contents, it calls the Build( ) method on each of the contents.
The following is the process that Build( ) uses to build the contents for the
sequential section:

Chapter 3, AFC classes

557

Class AcSequentialSection

1 Calls SelectContent( ) to determine whether to generate the first


component.
2 Calls NewContent( ) to instantiate the component.
3 Calls the components Start( ) method.
4 Calls the components Build( ) method.
5 Calls the components Finish( ) method.
6 Adds the component to the output page (if needed).
7 Loops back to step 1 to process the next component.
You generally do not override the Build method. Instead, override
SelectContent( ) or NewContent( ) on your subclass of AcSequentialSection, or
override the Start( ), Build( ), or Finish( ) methods of the contained
components.

Constructing sections with input from data rows


The processing for BuildFromRow( ) is identical except for step 4, which first
calls the contents BuildFromRow( ) method with the row passed to
BuildFromRow( ), then calls the contents BuildFromRow( ) method a second
time with a null data row to inform the content that no additional rows are
available.
Each sequential section can process only one data row. As a result,
BuildFromRow( ) accepts the first row that it is given (returning True), but will
reject the second row (returning False).
You generally do not override the BuildFromRow method. Instead, override
SelectContent( ) or NewContent( ) on your subclass of AcSequentialSection, or
override the Start( ), Build( ), or Finish( ) methods of the contained
components.

Properties

558

Property

Type

Description

Content

AcReportComponent

Lists the sequential components you


want to produce.

Actuate Foundation Class Reference

AcSequentialSection::NewContent method

Methods
Method

Type

Description

NewContent( )

AcReport
Component

Instantiates one of the list of contents


for this section.

SelectContent( )

Boolean

Allows the section to filter out some


of its contents.

AcSequentialSection::NewContent method
Instantiates one of the list of contents for this section.

Syntax
Parameter
Description

Function NewContent( index As Integer) As AcReportComponent


index
The number of the content component.
The sequential section identifies its contents in order from 1 to the number of
contents. The index passed to this function corresponds to the position of the
content component within the content list that you see in the structure pane of
the Design Editor. By default, this method simply looks in the internal
database for the name of the component that exists in the position given by
index and instantiates that component.
If you want to do custom processing, you can override this method to decide
which component to instantiate for a given index position. If you override this
method, you must be aware of several points. First, if you override this
method to take control of which component to instantiate for each index
location, then any contents you specify in the structure pane are ignored. To
change the set of components that the sequential section generates, you must
change your override of this method. Second, the sequential section assumes
that when NewContent( ) returns Nothing, the index is one greater than the
number of contents in this section. Thus, you cannot instantiate components
for indexes 1 and 2, none for 3, but again instantiate a component for index 4.
The sequential section never calls this method with index 4 if index 3 returns
Nothing.
You do not need to completely replace the default behavior. You could, for
example, take control of what component to instantiate for index 1, but call the
super class method to handle all other components.

Returns

The component that is instantiated.

Chapter 3, AFC classes

559

AcSequentialSection::SelectContent method

AcSequentialSection::SelectContent method
Allows the section to filter out some of its contents.

Syntax
Parameter

Function SelectContent( index As Integer, row As AcDataRow ) As Boolean


index
The index of the sequential section.
row
If the sequential section is being built through the BuildFromRow( ) method,
then the row parameter gives you access to the data row provided by the
container. If the section is being built through the Build( ) method, the row
variable will be Nothing.

Description

The SelectContent( ) method lets you conditionally select which contents of


the sequential section to generate. The index passed to this method has the
same meaning and value as the index passed to NewContent( ). The sequential
section will call the SelectContent( ) method to determine if it should then call
newContent( ) to instantiate the component. This method returns True if the
component is to be selected, False if not. If False, then the sequential section
simply increments the index and calls this method again with the next index.
As a result, if you override this method, you must ensure that it eventually
returns True for at least one index value for which NewContent( ) will return
Nothing, or the sequential section will be locked in an infinite loop.
You can find out what component corresponds to a given index position by
calling GetContentName( ).

Returns

True if the section wants to include the given content in the report.
False if the section does not want to include the given content in the report.

Example

The following example prints a customer contact report only if the customers
account is past due:
Function SelectContent( index As Integer, row As AcDataRow ) As Boolean
Dim cust As CustomerRow
'Get the customer row
Set cust = row
'Check if this is the index for the contact report.
If GetContentName( "Content", index ) = "ContactReport" Then
SelectContent = ( cust.PastDue > 0 )
Else
SelectContent = True
End If
End Function

560

Actuate Foundation Class Reference

AcSequentialSection::SelectContent method

Using SelectContent( ) to decide whether to produce a specific content is just a


convenience. You can produce the same result by inserting a conditional
section between the sequential section and the component that is to be
conditionally selected.

Chapter 3, AFC classes

561

Class AcSimplePageList

Class AcSimplePageList
Builds a page list with a series of pages, all of the same style.
AcComponent
AcPageList
AcSimplePageList

Description

Provides a report style in which all pages have the same layout.

Properties

562

Property

Type

Description

PageStyle

AcPage

Specifies the single page style to use


when creating the report.

Actuate Foundation Class Reference

Class AcSingleInputFilter

Class AcSingleInputFilter
A data filterone type of data adapterthat accepts input from one data
adapter, processes the data, then passes it to the next data adapter or the
report.
AcComponent
AcDataAdapter
AcDataFilter
AcSingleInputFilter

Description

AcSingleInputFilter is a data filter that accepts one data adapter as its input
and filters each data row. Create a derived class to define the filtering.
You can create filters to:


Select certain rows and reject others. This is a selection filter.

Convert a row from one format to another. This is a projection filter.

Split large input rows into smaller rows needed by your report. For
example, if your input row gives twelve months of financial data per data
row, but your report needs the data organized as one month per row, you
can create a filter to split up the row.

Combine data rows into a larger aggregate row. For example, you could do
the opposite of the above filter to combine data rows that contain one
month of financial data per row into a large row that contains twelve
months of data per row.

Add to fields in a data row by doing a lookup on an in-memory or diskbased table. This is a lookup filter. For example, you could do an inmemory lookup of a transaction code on each row to find its description,
then copy the description into the data row.

Sort rows. This is a sort filter. Actuate provides a memory-based sort filter
called AcMemoryDataSorter.

The uses of a single input filter are many. If your application needs to combine
several of the above transformations into a single data stream, your
application will be easier to build, maintain, and understand if you create a
separate filter for each transformation, then chain these transformations
together to form the data stream.
If your data source is an SQL query, then you can increase the performance of
your report by doing as much filtering as possible in the SQL query itself. Note

Chapter 3, AFC classes

563

Class AcSingleInputFilter

that data filters are optional, and that a data stream can have multiple data
filters.

Data
Input source

Data source

Data filter

Data row 1

Report section

Data row 2

Data stream

The input adapter


A data filter reads data from another data adapter called the input adapter.
You can specify the input adapter in one of two ways:


You can simply drop the input adapter into the Input slot of the data filter
in the structure pane.

You can call SetInput( ) from code to programmatically set the input
adapter.

If you drop the input adapter into the Input slot, then the single input filter
takes responsibility for instantiating the input adapter by providing the input
adapter with a connection, starting the input adapter when the filter itself
starts, and finishing the input adapter when the filter itself finishes.
If you set the input adapter with a call to SetInput( ), then you can pass either
an open or unopened data adapter. If you pass an opened data adapter, then
the single input filter assumes that your application will close this adapter, and
so the single input filter will not close the input adapter for you. If you pass an
unopened input adapter, then the single input filter takes responsibility for
starting the input adapter when the filter itself starts and for finishing the
input adapter when the filter itself finishes. If you call SetInput( ), do so before
calling the Start( ) method for the filter.
In either case, use the method GetInput to access the input adapter.
If you specify an input adapter in the structure pane, but then subsequently
call SetInput( ) in your code, the input adapter passed to SetInput( ) takes
precedence.

564

Actuate Foundation Class Reference

AcSingleInputFilter::Fetch method

Creating a filter
To define a filter, override the Fetch( ) method. See the description of Fetch( )
for details.

Variables
Variable

Type

Description

InputAdapter

AcDataAdapter

References the data adapter (input


adapter) that supplies input to this
data filter.

Method

Type

Description

Fetch( )

AcDataRow

Fetches a row from the filter.

GetInput( )

AcDataAdapter

Returns the input adapter for this


data filter.

NewInputAdapter( )

AcDataAdapter

Instantiates the input adapter.

SetInput( )

N/A

Specifies the input adapter for this


data filter.

Methods

See also

Class AcDataAdapter
Class AcDataSource
Class AcMemoryBuffer
Class AcMultipleInputFilter

AcSingleInputFilter::Fetch method
Fetches a row from the filter.

Syntax
Description
Returns

Function Fetch( ) As AcDataRow


To define a filter, you need only to override this method. By default, Fetch( ) in
the single input filter simply reads and returns a row from the input adapter.
A reference to the retrieved row if Fetch( ) retrieves a row.
Nothing if there are no more rows to retrieve.

Chapter 3, AFC classes

565

AcSingleInputFilter::GetInput method

Example

The following example shows how to create a Fetch( ) method that filters out
all customers except those in California:
Function Fetch( ) As AcDataRow
'Loop to read rows until there are no more rows, or until
'finding a customer in California.
Do While True
'Fetch the next row from the input
Set Fetch = InputAdapter.Fetch( )
If Fetch Is Nothing Then
Exit Function
End If
'Return the row if the customer is in California.
If Fetch.GetValue( "State" ) = "CA" Then
Exit Function
End If
Loop
End Function

See also

AcDataAdapter::Fetch method

AcSingleInputFilter::GetInput method
Returns the input adapter associated with this data filter.

Syntax
Description
Returns

Sub GetInput( ) As AcDataAdapter


Call GetInput( ) to return the input adapter used with this data filter.
The input adapter for this data filter.

AcSingleInputFilter::NewInputAdapter method
Instantiates the input adapter.

Syntax
Description

Returns

566

Function NewInputAdapter( ) As AcDataAdapter


NewInputAdapter( ) instantiates the data adapter class, if any, that you
dropped into the Input slot of the single input filter in the structure pane. You
can override this method if you want to programmatically decide which
adapter to instantiate.
The new data adapter, if any.

Actuate Foundation Class Reference

AcSingleInputFilter::SetInput method

AcSingleInputFilter::SetInput method
Sets the input adapter for this data filter.

Syntax
Parameter
Description

Sub SetInput( adapter As AcDataAdapter )


adapter
The data adapter that supplies data rows to this filter.
Call SetInput( ) to specify the input adapter to use with this filter. The adapter
specified here takes precedence over the existing one in the Input slot in the
structure pane.

Chapter 3, AFC classes

567

Class AcSingleList

Class AcSingleList
Implements a singly linked list.
AcCollection
AcOrderedCollection
AcList
AcSingleList

Description

AcSingleList is derived from AcList. It implements a singly linked list. Use


AcSingleList to process ordered lists, stacks, and queues. If you are randomly
accessing collections of objects, use the AcObjectArray class. You should
declare your variables as AcList and then set them to AcSingleList to carry out
the actual implementation of the singly linked list methods.

Subclassing AcSingleList
You must subclass AcSingleList when you want to be able to look up items in a
list by value. To do this, override the Compare method to specify how objects
in the list are to be located by value. For an example of how to subclass
AcSingleList, see Class AcList.

Methods
Method

Type

Description

Compare( )

Variant

Compares two objects in a singly


linked list by value.

FindByValue( )

AnyClass

Locates an object in a singly linked


list that has a matching value.

AcSingleList::Compare method
Compares two objects in a singly linked list by value.

Syntax
Parameter

568

Function Compare( obj1 As AnyClass, obj2 As AnyClass ) As Variant


obj1
A reference to the first object to be compared.

Actuate Foundation Class Reference

AcSingleList::FindByValue method

obj2
A reference to the second object to be compared.

Description

Returns
See also

The Compare( ) method defines how objects in the singly linked list are to be
compared.You must override the Compare( ) method to specify this logic.
FindByValue calls the Compare method to determine if an object with a
matching value can be located in the ordered list.
0 if a matching object exists, greater than 0 if no matching object exists.
AcSingleList::FindByValue method

AcSingleList::FindByValue method
Locates an object in a singly linked list that has a matching value.

Syntax
Parameter
Description

Returns

FindByValue( obj As AnyClass ) As AnyClass


obj
A reference to an object to be matched.
Call FindByValue( ) to search the singly linked list for an object that matches a
given object. The method calls the Compare( ) method to determine whether
the objects values are equal.
The matching object in the singly linked list.
Nothing if no object in the list has the same sort key.

See also

AcSingleList::Compare method

Chapter 3, AFC classes

569

Class AcSingleListIterator

Class AcSingleListIterator
A concrete class to iterate over a list.
AcIterator
AcSingleListIterator

Description

AcSingleListIterator is a concrete class derived from AcIterator. It provides


methods to iterate over a singly linked list.
See Class AcList for an example of how to iterate over a singly linked list.

570

Actuate Foundation Class Reference

Class AcSqlQuerySource

Class AcSqlQuerySource
A class that retrieves data from an SQL SELECT statement.
AcComponent
AcDataAdapter
AcDataSource
AcDatabaseSource
AcQuerySource
AcSqlQuerySource

Description

AcSqlQuerySource is the class for query data sources that you build in the
Query Editor.
You can also create the query data source programmatically. If you do, you
must either set the various variables that hold the fragments of the SELECT
statement or override ObtainSelectStatement( ) to return the complete
statement. You must also override BindStaticParameters( ) (defined in
AcDatabaseSource) to bind static parameters and BindDataRow( ) (also
defined in AcDatabaseSource) to bind the data row to the cursor.
AcSqlQuerySource returns True from a call to CanSortDynamically( ) to
indicate that custom sorting is supported. If your custom subclass cannot
support custom sorting, then you should override CanSortDynamically( ) to
return False.

Variables
Variable

Type

Description

FromClause

String

The FROM clause.

GroupByClause

String

The GROUP BY clause.

HavingClause

String

The HAVING clause.

OrderByClause

String

The ORDER BY clause.

SelectClause

String

The SELECT clause.

WhereClause

String

The WHERE clause.

Chapter 3, AFC classes

571

AcSqlQuerySource::ObtainSelectStatement method

Properties
Property

Type

Description

Query

Query

An internal representation of the query that this


query source class uses. The user uses the Query
Editor to assemble the query.

Methods

See also

Method

Type

Description

ObtainSelectStatement( )

String

Assembles a SQL SELECT statement


from the component parts entered in the
Query Builder.

SetAdHocParameter( )

N/A

Processes an ad hoc parameter.

Class AcDataAdapter
Class AcDatabaseSource
Class AcDataRow
Class AcDataSource
Class AcDBConnection

AcSqlQuerySource::ObtainSelectStatement method
Returns a SQL SELECT statement.

Syntax
Description

Returns

Function ObtainSelectStatement( ) As String


The ObtainSelectStatement( ) method assembles a SQL SELECT statement
from the component parts entered in the Actuate Query Builder. Override this
method to create custom SQL SELECT statements.
A SQL SELECT statement as a string.

AcSqlQuerySource::SetAdHocParameter method
Sets the value of a single ad hoc parameter.

Syntax

572

Sub SetAdHocParameter( columnName As String, dataType As String, value


As String)

Actuate Foundation Class Reference

AcSqlQuerySource::SetAdHocParameter method

Parameter

columnName
The name of a database column. The column need not appear in the SELECT
clause, but must be a column available in one of the tables in the FROM clause.
dataType
The type of the data column. The data type must be one of String, Integer,
Long, Currency, Single, Double, or Date.
value
The value of the ad hoc parameter.

Description

Example

Your query can contain any number of ad hoc parameters, which provide
additional conditions for the WHERE clause of a SELECT statement.
SetAdHocParameter( ) sets the value of a single ad hoc parameter. An ad hoc
parameter is identified by a column name. The column name need not appear
in the SELECT clause of your SELECT statement, but must be a column
available in one of the tables in the FROM clause. The value of the parameter is
either an empty string (which means the parameter is ignored), or an ad hoc
expression using the syntax described in Designing e.Reports.
This example shows how to programmatically set up ad hoc parameters:
Sub SetupAdHocParameters( )
SetAdHocParameter( "Customer.State", "String", NameParm )
SetAdHocParameter( "Customer.Balance", "Currency", BalanceParm )
End Sub

See also

Class AcStoredProcedureSource

Chapter 3, AFC classes

573

Class AcStoredProcedureSource

Class AcStoredProcedureSource
A class that retrieves data from a stored procedure.
AcComponent
AcDataAdapter
AcDataSource
AcDatabaseSource
AcStoredProcedureSource

Description

AcStoredProcedureSource is the base class for creating stored procedure data


sources. You can access a result set returned from stored procedures on Sybase
ctlib and Oracle 8 clients using the AcStoredProcedureSource. For information
about using Actuate Basic to access complex result sets or execute stored
procedures in other database environments, see Programming e.Reports.
Use this class to take advantage of automated design facilities in the e.Report
Designer Professional to create data sources that use a stored procedure as a
source of data, no coding is necessary. AcStoredProcedureSource contains the
framework for executing a stored procedure including:


Creating and managing parameters

Creating and managing row variables

Executing the stored procedure

About result sets


AcStoredProcedureSource supports procedures that return one result set. If
your stored procedure returns multiple result sets and you need to process a
result set other than the first one, you must override the OpenCursor method
to select a result set to be returned by name. The following code snippet
illustrates how to override OpenCursor to specify the result set to return from
an Oracle 8 stored procedure.

About parameters
AcStoredProcedureSource handles input, output and input/output stored
procedure parameters. Stored procedure input parameters are similar to static
parameters in the WHERE clause of a query.
If a stored procedure parameter has output parameters (output or input/
output), AcStoredProcedureSource creates separate variables for these

574

Actuate Foundation Class Reference

Class AcStoredProcedureSource

parameters. These parameter output variables are cleared when the data
source is initialized and started to allow repeated execution of the stored
procedure. AcStoredProcedureSource sets the variables as soon as the data is
available from the stored procedure. From the standpoint of Actuate Basic, the
data is available after the Finish method on AcStoredProcedureSource
completes.
The DefineInputParameter, DefineOutputParameter,
DefineProcedureReturnParameter, GetOutputCount, and
GetOutputParameter methods help you define parameters and set and
retrieve their values. These methods are only available if you are using a
stored procedure data source. The methods are defined on AcDBCursor and
AcDBStatement classes to support maximum programming flexibility.

About row variable creation


Actuate creates and names variables in the AcDataRow class for a stored
procedure in a manner that is similar to the way that the variables are created
when you use the AcSqlQuerySource class. When columns in the result set
have no name, Actuate creates variables in the AcDataRow class and names
them sequentially starting with column1.

Variables
Do not modify the variables defined on AcStoredProcedureSource.
Variable

Type

Description

CursorParameter

String

Specifies the name of the cursor with the


result set to be processed. Only valid for
Oracle 8 stored procedures that use
named cursors.

OwnerName

String

A database user name.

ProcedureName

String

Name of the stored procedure.

ProcedureStatus

Variant

Contains the return value or status for


the stored procedure. Its value is
available after the stored procedure
source components Finish method is
complete.

QualificationOption

String

Specifies how the stored procedure call is


to be qualified at run time.

QualifierName

String

A database qualifier for the stored


procedure.

Chapter 3, AFC classes

575

Class AcStoredProcedureSource

Properties
Property

Type

Description

StoredProcedureDef

N/A

An internal representation of the stored


procedure. It can only be edited using the
Stored Procedure Builder.

After you select a stored procedure using the Stored Procedure Browser,
AcStoredProcedureSource retrieves the definition of the stored procedure
from the database and stores the definition in StoredProcedureDef. This is a
complex property that you can edit only with the Stored Procedure Builder.
AcStoredProcedureSource retrieves the following information from the
database when a connection and stored procedure are specified:


Procedure name. The name of the procedure.

Owner name. A database user name that the stored procedure is scoped
within.

Qualifier name. A database qualifier that the procedure is scoped within.


For Sybase stored procedures, the qualifier represents the name of a Sybase
database. For Oracle 8 stored procedures, the qualifier represents the name
of the database schema.

Qualification option. Specifies how the stored procedure call is to be


qualified at run time. There are three options: procedure name only,
owner.procedurename, or qualifiername.ownername.procedurename.

Return type information. The return type of the stored procedures return
value. Some stored procedures do not use a return value.

Column information. Contains the following column information:

Column name. The name of an output column. This name is used to


create a name for a variable in the row class.

Column type information. Information about the data type of the


column.

Parameter information. The following parameter information:




Parameter name. The name of a parameter in the stored procedure. This


name is used to create a name for a parameter variable on the stored
procedure class.

Parameter type information. Information about the data type of the


parameter.

Column kind. Parameters can be used for input, output, or both.

AcStoredProcedureSource uses column and parameter information to specify


report data rows.

576

Actuate Foundation Class Reference

Class AcStoredProcedureSource

Example

In the code, cparmname is the name of the cursor parameter in the Oracle 8
call to the stored procedure or function. Do not include a colon (:) in
cparmname:
CursorParameter = cparmname
Super::OpenCursor( )

If you specify a different result set to return, make sure that the columns in the
result set match the ones built by the Stored Procedure DataSource Builder. If
they do not match, you must override the BindColumns method to account for
any differences.

See also

Class AcDataAdapter
Class AcDatabaseSource
Class AcDataRow
Class AcDataSource
Class AcDBConnection
Class AcSqlQuerySource

Chapter 3, AFC classes

577

Class AcSubPage

Class AcSubPage
A subpage fits inside a flow.
AcComponent
AcReportComponent
AcVisualComponent
AcBaseFrame
AcBasePage
AcSubPage

Description

AcSubpage lets you introduce a different collection of flows within a page. You
use a subpage to dynamically switch from one column to two columns on the
same page. For example, you might produce a report that lists orders and the
items on the order. You may want the order information to fill the full width of
the page. However, the item information may be short enough that you would
like to list it in two columns. You do this by adding a subpage to your design
and creating two flows within the subpage. Actuate places the subpage inside
the flow in your (real) page, and all subsequent output goes into the subpage.
You can ensure that the contents of each flow are the same (even, or balanced)
by setting the subpages BalanceFlows property to True.

Properties

578

Property

Type

Description

Margins

AcMargins

The amount of extra space, if any, to


provide between the subpage and its
enclosing flow.

Rounding

AcRounding

The amount of rounding, if any, to apply


to the corners of the subpage.

Shadow

AcShadow

The properties of the shadow, if any, to


display for the subpage.

Actuate Foundation Class Reference

Class AcSummaryChart

Class AcSummaryChart
A subclass of AcChart that provides the mechanism for building chart data
from data rows.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcChart
AcSummaryChart

Description

AcSummaryChart summarizes rows into an array of series and categories.


Series correspond to data sets in the chart. Categories correspond to data
points. Each series and category is identified with a key computed from a data
row. Together, these form an index into a grid given by (category_key,
series_key). AcSummaryChart:


Saves the set of data rows.

Makes a second pass to determine the set of series and categories.

Makes a third pass to compute the aggregates in each cell.

Makes a final pass over the summarized data to populate the chart legend,
series, and points arrays.

All time series calculations are performed when categories are created. The
calculations are performed before the CustomXLabels( ) method is called.
The order in which the methods are called is shown below. Each method calls
the methods indented below it:

Properties
Property

Type

Description

CategoryExp

Expression

Specifies the categories.

CategoryLabel
Exp

Expression

The expression used to


generate labels along the
category axis.

Chapter 3, AFC classes

579

AcSummaryChart::ComputeCategoryRange method

Property

Type

Description

DualYValueExp

Expression

The value expression for the


dual chart.

SeriesExp

Expression

Specifies the series.


The default is an empty string.

SeriesLabelExp

Expression

The expression used to


generate series labels.

YValueExp

Expression

The value expression for the


base chart.

Methods
Method

Type

Description

ComputeCategoryRange( )

N/A

Sets up the Range and


TickInterval.

ConvertCategoryExp( )

N/A

Rounds the category key into the


appropriate category.

CreateEmptyCategories( )

N/A

Adds categories to the category


list.

PopulateCategoryIndex( )

N/A

Recreates the CategoryIndex.

RoundToRange( )

N/A

Rounds the data based on the


Range.

AcSummaryChart::ComputeCategoryRange method
Sets up the Range and TickInterval.

Syntax
Description

Sub ComputeCategoryRange( )
The ComputeCategoryRange( ) method sets up the Range and TickInterval so
that they can be used without conversion. This method also calculates the new
XMin, or starting point.
ComputeCategoryRange( ) is called by the GatherCategories( ) method.

580

Actuate Foundation Class Reference

AcSummaryChart::ConvertCategoryExp method

AcSummaryChart::ConvertCategoryExp method
Rounds the category key form each data row to the appropriate category.

Syntax
Description

Sub ConvertCategoryExp( )
The ConvertCategoryExp( ) method rounds the value of the category key from
each data row into the appropriate category. For example, if a data point is 4/2
and the categories are months, the value is rounded to 4/1.
ConvertCategoryExp( ) is called by the GatherCategories( ) method.

AcSummaryChart::CreateEmptyCategories method
Adds categories to the category list.

Syntax
Description

Sub CreateEmptyCategories( )
The CreateEmptyCategories( ) method creates empty categories and recreates
existing categories in the category list. Categories are created based on the
Range and TickInterval, starting at XMin. New categories are added regardless
of existing categories.
CreateEmptyCategories( ) is called by the GatherCategories( ) method.

AcSummaryChart::PopulateCategoryIndex method
Recreates the CategoryIndex.

Syntax
Description

Sub PopulateCategoryIndex( )
The PopulateCategoryIndex( ) method recreates the CategoryIndex from the
new data row. CategoryIndex is the structure that determines to which
category a data row belongs. If a category does not have a data row pointing to
it, the category is considered empty and is plotted with the y value set to zero.
PopulateCategoryIndex( ) is called by the GatherCategories( ) method.

Chapter 3, AFC classes

581

AcSummaryChart::RoundToRange method

AcSummaryChart::RoundToRange method
Rounds the data based on the Range.

Syntax
Description

Sub RoundToRange( )
The RoundToRange( ) method rounds the data based on the Range. This
method is called when the RoundTo property is set to ChartRoundToRange. If
the RangeUnit is larger than the TickIntervalUnit, the XMin is set to the
beginning of the RangeUnit that the first data point falls into. For example, if
RangeUnit is GraphYearUnit and the first data point is 4/2, the XMin is set to
1/1.
RoundToRange( ) is called by the ComputeCategoryRange( ) method.

582

Actuate Foundation Class Reference

Class AcSummaryGraph

Class AcSummaryGraph
Provides the mechanism for building graph data from data rows.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcGraph
AcSummaryGraph

Description

The AcSummaryGraph is a subclass of AcGraph that summarizes rows into an


array of series and categories. Series correspond to data sets in the graph.
Categories correspond to data points. Each series and category is identified
with a key computed from a data row. Together, these form an index into a
grid given by (category_key, series_key). This class:


Saves the set of data rows.

Makes a second pass to determine the set of series and categories.

Makes a third pass to compute the aggregates in each cell.

Makes a final pass over the summarized data to populate the graph legend,
series, and points arrays.

Order of methods for time series calculations


All time series calculations are performed when categories are created. The
calculations are performed before the CustomXLabels( ) method is called.
The order in which the methods are called is shown below. Each method calls
the methods indented below it:
GatherCategories
ConvertCategoryKey
ComputeCategoryRange
RoundToRange
ConvertRange
CalculateRange
CreateEmptyCategories
PopulateCategoryIndex
GetCategoryKey
ConvertCategoryKey
FindCategory
Chapter 3, AFC classes

583

Class AcSummaryGraph

Properties
Property

Type

Description

CategoryKey

Expression

Specifies the categories.

CategoryLabel

Expression

Specifies the labels for the


categories. If CategoryLabel is
not specified, the CategoryKey
is used.

OverlayValueExp Expression

The value expression for the


overlay graph.

SeriesKey

Expression

Specifies the series.


The default is an empty string.

SeriesLabel

Expression

Specifies the label for the


series. The SeriesLabel appears
in the graphs legend. If
SeriesLabel is not specified,
SeriesKey is used.
The default is an empty string.

ValueExp

Expression

The value expression for the


base graph.

Methods

584

Method

Type

Description

ComputeCategoryRange( )

N/A

Sets up the Range and


TickInterval.

ConvertCategoryKey( )

N/A

Rounds the category key into the


appropriate category.

CreateEmptyCategories( )

N/A

Adds categories to the category


list.

PopulateCategoryIndex( )

N/A

Recreates the CategoryIndex.

RoundToRange( )

N/A

Rounds the data based on the


Range.

Actuate Foundation Class Reference

AcSummaryGraph::ComputeCategoryRange method

AcSummaryGraph::ComputeCategoryRange
method
Sets up the Range and TickInterval.

Syntax
Description

Sub ComputeCategoryRange( )
The ComputeCategoryRange( ) method sets up the Range and TickInterval so
that they can be used without conversion. This method also calculates the new
XMin, or starting point.
ComputeCategoryRange( ) is called by the GatherCategories( ) method.

AcSummaryGraph::ConvertCategoryKey method
Rounds the category key form each data row to the appropriate category.

Syntax
Description

Sub ConvertCategoryKey( )
The ConvertCategoryKey( ) method rounds the value of the category key from
each data row into the appropriate category. For example, if a data point is 4/2
and the categories are months, the value is rounded to 4/1.
ConvertCategoryKey( ) is called by the GatherCategories( ) method.

AcSummaryGraph::CreateEmptyCategories method
Adds categories to the category list.

Syntax
Description

Sub CreateEmptyCategories( )
The CreateEmptyCategories( ) method creates empty categories and recreates
existing categories in the category list. Categories are created based on the
Range and TickInterval, starting at XMin. New categories are added regardless
of existing categories.
CreateEmptyCategories( ) is called by the GatherCategories( ) method.

Chapter 3, AFC classes

585

AcSummaryGraph::PopulateCategoryIndex method

AcSummaryGraph::PopulateCategoryIndex method
Recreates the CategoryIndex.

Syntax
Description

Sub PopulateCategoryIndex( )
The PopulateCategoryIndex( ) method recreates the CategoryIndex from the
new data row. CategoryIndex is the structure that determines to which
category a data row belongs. If a category does not have a data row pointing to
it, the category is considered empty and is plotted with the Y-value set to zero.
PopulateCategoryIndex( ) is called by the GatherCategories( ) method.

AcSummaryGraph::RoundToRange method
Rounds the data based on the Range.

Syntax
Description

Sub RoundToRange( )
The RoundToRange( ) method rounds the data based on the Range. This
method is called when RoundTo is set to GraphRoundToRange. If the
RangeUnit is larger than the TickIntervalUnit, the XMin is set to the beginning
of the RangeUnit that the first data point falls into. For example, if RangeUnit
is GraphYearUnit and the first data point is 4/2, the XMin is set to 1/1.
RoundToRange( ) is called by the ComputeCategoryRange( ) method.

586

Actuate Foundation Class Reference

Class AcSybaseConnection

Class AcSybaseConnection
Establishes a connection to a Sybase database.
AcComponent
AcConnection
AcDBConnection
AcSybaseConnection

Description

Use the AcSybaseConnection class to establish a connection to a Sybase


database. The application must set the server name, user name, and password
prior to connecting. Once connected, the application should not change these
values.

Variables
Variable

Type

Description

Password

String

The client password for the connection.

ServerName

String

The client server name for the connection.

UserName

String

The client user name for the connection.

Properties
Property

Type

Description

DBInterface

String
Variable

The library to use. Values are:


 Acsyb1111used with the Sybase Open
Client 11.1.1.
 Acsyb12 used with the Sybase Open
Client 12.0.
The default is Acsyb12.

Password

String
Variable

The client password for the connection.

ServerName

String
Variable

The client server name for the connection.

Chapter 3, AFC classes

587

Class AcSybaseConnection

Property

Type

Description

PacketSize

String

The data packet size sent from the database


server. Must be a multiple of 512. For more
information, see your Sybase
documentation.

FetchRowBuff
erCount

String

The number of rows to be fetched in a


single fetch call.

UserName

String
Variable

The client user name for the connection.

Sybase data types


The following table describes the default conversion between Actuate data
types and Sybase data types.

588

Sybase data type

Mapped to

Binary

Actuate String.

Bit

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Char

Actuate String.

DateTime

Actuate Date. Can also be mapped to an Actuate


String.

Decimal

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Float

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Image

Actuate String.

Int

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

Long

Actuate Long. Can also be mapped to an Actuate


Currency, Double, Integer, Single, or String.

LongBinary

Actuate String.

LongChar

Actuate String.

Money

Actuate Currency. Can also be mapped to an


Actuate Double, Integer, Long, Single, or String.

Numeric

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

Actuate Foundation Class Reference

Class AcSybaseConnection

Sybase data type

Mapped to

Real

Actuate Double. Can also be mapped to an


Actuate Currency, Integer, Long, Single, or String.

SmallDateTime

Actuate Date. Can also be mapped to Actuate


String.

SmallInt

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

SmallMoney

Actuate Currency. Can also be mapped to an


Actuate Double, Integer, Long, Single, or String.

Text

Actuate String.

TinyInt

Actuate Integer. Can also be mapped to an


Actuate Currency, Double, Long, Single, or String.

VarBinary

Actuate String.

VarChar

Actuate String.

Chapter 3, AFC classes

589

Class AcTextControl

Class AcTextControl
A class you use in the report design to display string data.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl
AcDataControl
AcTextControl

Description

AcTextControl is a data control you typically use to store and display string
data from a data row. You can, however, also use it to display values returned
by methods or functions, such as PageNo$( ) or Date$( ), as long as the return
value is a string.
The text control is typically used for displaying one line from a table column,
such as a name or address, but it can be used for multi-line text as well. To
display multi-line text, set the MultiLine property to True. You should also
specify a size that will accommodate all the lines of text. If you do not know
the length of the text, use the Clip property to select how Actuate handles
extra characters.
AcTextControl defines a DataValue variable to store the string value. The
framework generates SetValue( ) to set the value in DataValue. SetValue( ),
turn, uses the value expression you assign to the ValueExp property to
generate the value. Override SetValue( ) if you want to take control of setting
the controls data value.
If you want to change the value or properties of the text control when the
Factory is building it, you can override the text controls BuildFromRow( )
method. For example, you can change the properties of the control depending
on the value stored in the DataValue variable. For an example of how to
accomplish this task, see Building the control from the data row.

Variables

590

Variable

Type

Description

DataValue

String

Holds the string value.

Actuate Foundation Class Reference

Class AcTextQuerySource

Class AcTextQuerySource
A class that provides a way to write textual SQL SELECT queries.
AcComponent
AcDataAdapter
AcDataSource
AcDatabaseSource
AcQuerySource
AcTextQuerySource

Description

AcTextQuerySource is the class for query data sources that you build in the
Textual Query Editor.
You can also create the query data source programmatically. If you do, you
must override ObtainSelectStatement( ) to return the complete statement. You
must also override BindStaticParameters( ) (defined in AcDatabaseSource) to
bind static parameters and BindDataRow( ) (also defined in
AcDatabaseSource) to bind the data row to the cursor.

Properties
Property

Type

Description

CanModifyOrderByClause

Boolean

Specifies whether the


application can modify the
SELECT statements Order By
clause to provide custom
sorting used by the
corresponding report section.
The default setting is TRUE.

Chapter 3, AFC classes

591

Class AcTextQuerySource

Property

Type

Description

Query

Query

An internal representation of
the query that this query source
class uses. The user uses the
Textual Query Editor to specify
the query.

SelectStatement

String

Override the statement in this


property to override the SQL
SELECT statement specified via
the Textual Query Editor. This
is an alternative to overriding
the ObtainSelectStatement()
method.

Methods

Example

Method

Type

Description

CanSortDynamically( )

Boolean

Determines whether dynamic


ordering is supported.

ObtainSelectStatement( ) String

Returns the SELECT statement of the


query source.

SetAdHocCondition( )

Processes an ad hoc parameter.

N/A

This example shows how to specify the adhoc conditions, by overriding the
SQL statement, then overriding the SetupAdHocParameters() method to call
SetAdHocCondition() with the proper input arguments:
Sub SetProperties( )
Super::SetProperties( )
CanModifyOrderByClause = True
SelectStatement = "select * from offices"
SelectStatement = SelectStatement & " where :?myOffice"
End Sub
Sub SetupAdHocParameters( )
SetAdHocCondition( "myOffice", "officeID", "Integer", myOfficeID )
' myOfficeID is a static parameter variable defined in the text query source
class
End Sub

592

Actuate Foundation Class Reference

AcTextQuerySource::CanSortDynamically method

AcTextQuerySource::CanSortDynamically method
Determines whether dynamic ordering is supported.

Syntax
Description

Function CanSortDynamically( ) As Boolean


The CanSortDynamically( ) method determines whether dynamic ordering is
supported. The value of CanSortDynamically( ) is set to the value of
CanModifyOrderByClause property.

AcTextQuerySource::ObtainSelectStatement
method
Returns the SELECT statement of the query source.

Syntax
Description

Returns

Function ObtainSelectStatement( ) As String


The ObtainSelectStatement( ) method returns the SELECT statement of the
query source. Override this method to create custom SQL SELECT statements.
If an ad hoc parameter has an input value specified, its corresponding ad hoc
condition marker is the SELECT statement is substituted by the generated
conditional expression.
A SQL SELECT statement as a string.

AcTextQuerySource::SetAdHocCondition method
Processes an ad hoc parameter.

Syntax
Parameter

Sub SetAdHocCondition( adHocParameter As String, columnName As String,


dataType As String, value As String )
adHocParameter
The name of adhoc parameter
column name
The database column name to be used in the conditional expression.
dataType
The Actuate Basic type of the database column. This is used to generate the
correct SQL syntax for the conditional expression.

Chapter 3, AFC classes

593

AcTextQuerySource::SetAdHocCondition method

value
The value of the ad hoc parameter.

Description

594

The SetAdHocCondition( ) method sets the value of an ad hoc parameter. An


ad hoc parameter is identified by a column name. The value of the parameter
is either an empty string (which means the parameter is ignored), or an ad hoc
expression.

Actuate Foundation Class Reference

Class AcTextualControl

Class AcTextualControl
The base class for controls that display data from data rows.
AcComponent
AcReportComponent
AcVisualComponent
AcControl
AcTextualControl

Description

AcTextualControl is the AFC class that contains the properties common to


labels and data controls. AcTextualControl simplifies the organization of the
AFC hierarchy. AcLabel and AcDataControl inherit directly from
AcTextualControl. The controls on the palette inherit from AcControl.

Properties
Property

Type

Description

BackgroundColor

AcColor

Determines the background color of


the control.

Border

AcLineStyle

Determines the border, if any to place


around the control.

Font

AcFont

Determines the font to use for text in


the control.

TextPlacement

AcText
Placement

Determines where to place the text in


the control.

Chapter 3, AFC classes

595

Class AcTitleBodyPageList

Class AcTitleBodyPageList
Builds a page list with a title page, followed by a simple page list.
AcComponent
AcPageList
AcTitleBodyPageList

Description

The AcTitleBodyPageList class builds a page list with a title page, followed by
all other pages of another style.
You can insert title pages into your report. For example, you could design a
report that printed the customer name in a large font on a single page, then
produce body pages as necessary for that customer, and repeat that scenario
for all customers.

Properties
Property

Type

Description

BodyPage

AcPage

The page style to use for all


other pages.

TitlePage

AcPage

The page style to use for the


first page.

Method

Type

Description

NewBodyPage( )

AcPage

Instantiates the body page.

NewTitlePage( )

AcPage

Instantiates the title page.

Methods

AcTitleBodyPageList::NewBodyPage method
Instantiates the body page.

Syntax
Description

596

Function NewBodyPage( ) As AcPage


Instantiates a new body page.

Actuate Foundation Class Reference

AcTitleBodyPageList::NewTitlePage method

AcTitleBodyPageList::NewTitlePage method
Instantiates the title page.

Syntax
Description

Function NewTitlePage( ) As AcPage


Instantiates the new title page.

Chapter 3, AFC classes

597

Class AcTopDownFlow

Class AcTopDownFlow
Adds frames to a flow from the top to the bottom.
AcComponent
AcReportComponent
AcVisualComponent
AcFlow
AcLinearFlow
AcTopDownFlow

Description

The top-down flow fills with frames in the standard top-down order. The first
frame starts at the top of the flow. Then, each subsequent frame is placed just
below the previous frame. When the framework receives a frame that does not
fit in the remaining space in the flow, the framework advances to the next flow
or page.
If both your flow and frames have a border, your layout might look better if
you provide some extra margins between the flow and the frames. The
Margins property of frames lets you create empty space between frames in the
flow. The flow provides a margin that reserves empty space between the
border and the contained frames.
Rectangle origin
Frame
Border
Rectangle region

Margin

You subclass AcTopDownFlow when you drag a flow component off of the
palette.

598

Actuate Foundation Class Reference

Class AcTopDownFlow

Variables
Variable

Type

Description

Alignment

AcFlowPlacement

Specifies how frames should be


aligned. To cause the frame to
appear left-justified within the
flow, specify FlowAlignLeftorTop.
To cause the frame to appear rightjustified, specify
FlowAlignRightorBottom. To have
the frame centered, specify
FlowAlignCenter. You can also do
custom alignment by specifying
FlowAlignCustom. If you choose
custom alignment, Actuate uses
the value of x in the Position
property to align the frame.

Margins

AcMargins

Space to allow between the border


and the contained frames.

Property

Type

Description

Alignment

AcFlowPlacement

Specifies how frames should be


aligned. To cause the frame to
appear left-justified within the
flow, specify FlowAlignLeftorTop.
To cause the frame to appear rightjustified, specify
FlowAlignRightorBottom. To have
the frame centered, specify
FlowAlignCenter. You can also do
custom alignment by specifying
FlowAlignCustom. If you choose
custom alignment, Actuate uses
the value of x in the Position
property to align the frame.

Margins

AcMargins

Space to allow between the border


and the contained frames.

Properties

Chapter 3, AFC classes

599

Class AcVisitor

Class AcVisitor
Provides a mechanism for creating a utility to visit and perform some action
on report objects. AcVisitor methods provide subroutines to process a report
object and its components in hierarchical order. You override AcVisitor
methods to provide any specialized behavior for each component.

Description

The AcVisitor class allows you to create a mechanism in your report


application that visits each object of your report and performs some action on
it. For example, use AcVisitor to perform data extraction or save the report to a
different format, such as PostScript or a simple text file. Actuate uses AcVisitor
to build HTML reports from a report object.
Reports have two parallel structures:


The structure hierarchy, composed of the report, sections, frames, and


controls

The page hierarchy, composed of the report, page list, pages, flows, frames,
and controls

When you use the visitor class, you determine whether to visit the objects that
comprise the structure hierarchy, or the page hierarchy.
The visitor visits each object in the chosen hierarchy by default. If the object
contains other objects, the visitor visits each of those objects as well, in the
order in which they appear in the reports structure pane. You can derive
AcVisitor classes which skip certain components, or add behavior specific to
particular components.
To use the AcVisitor class methods:
1 Open your report design in e.Report Designer Professional.
2 Set up the visitor class:
1 Create a new Actuate Basic source file.
2 Create a new subclass of the AcVisitor class and instantiate it. The
visitor class provides a visit method for each type of component. You
override the method for a particular component if you want to perform
operations on it.
3 Decide which report object is the visitors starting point. For example,
the AcReport component (to visit every object in a report), or a section
or page.
4 Call the ApplyVisitor( ) method on the starting point. By default, the
Visit method for a particular component calls the Visit method for the
superclass of that component. For example, by default VisitTextControl
calls VisitDataControl. Also by default, every method ultimately calls
VisitComponent.
600

Actuate Foundation Class Reference

Class AcVisitor

3 Decide which objects to visit:




If the application will visit the entire report, the derived visitor class
must know which of the reports hierarchies to visit. Override the
VisitReport( ) method to call either VisitContents( ) to visit the data
hierarchy, or VisitPage( ) to visit the page hierarchy. By default, the
visitor visits the data hierarchy.

If the application will not visit the entire report, decide which
components should be included or excluded from processing. If the
component has contents, the visit method for the contents is called by
default. If you want to exclude the contents from being processed,
override the components visit method to inhibit the call to the
components superclass method.

4 Add special behavior for the visited objects:


Override each components visit method to add special behavior as
needed. For example, suppose that you want to generate Postscript for a
report. Override the VisitPage( ) method to eject each page, and override
the Visit method for each control to generate Postscript for that control.
5 Establish a mechanism to trigger visitor subroutines. For example, you
could add a data control to your report object that starts your visit
application when the user selects the control. For more information, see
OnLButtonClick( ) method.

Methods
Method

Type

Description

VisitBaseFrame( )

N/A

Visit a base frame


component.

VisitBasePage( )

N/A

Visit a base page component.

VisitComponent( )

N/A

Visit components of a report.

VisitConditional
Section( )

N/A

Visit a conditional section


component.

VisitContents( )

N/A

Visit the contents of a


reports data hierarchy
components.

VisitControl( )

N/A

Visit a control component.

VisitCurrencyControl( )

N/A

Visit a currency control


component.

VisitDataControl( )

N/A

Visit a data control


component.

Chapter 3, AFC classes

601

Class AcVisitor

602

Method

Type

Description

VisitDataFrame( )

N/A

Visit a data frame


component.

VisitDataSection( )

N/A

Visit a data section


component.

VisitDateTimeControl( )

N/A

Visit a date/time control


component.

VisitDetailGraph( )

N/A

Visit a detail graph


component.

VisitDoubleControl( )

N/A

Visit a double control


component.

VisitDynamicTextControl( )

N/A

Visit a dynamic text control


component.

VisitEllipseControl( )

N/A

Visit an ellipse control


component.

VisitFlow( )

N/A

Visit a flow component.

Visit Frame( )

N/A

Visit a frame component.

VisitFrameSetSection( )

N/A

Visit a frame set section


component.

VisitGraph( )

N/A

Visit a graph component.

VisitGroupSection( )

N/A

Visit a group section


component.

VisitHLCGraph( )

N/A

Visit a high-low-close or
open-high-low graph
component.

VisitHtmlApplet
Control( )

N/A

Visit an HTML applet control


component.

VisitHtmlFrame( )

N/A

Visit an HTML frame


component.

VisitHtmlImage
Control( )

N/A

Visit an HTML image control


component.

VisitHtmlObject
Control( )

N/A

Visit an HTML object control


component.

VisitHtmlPlugIn
Control( )

N/A

Visit an HTML plug-in


control component.

VisitHtmlReport( )

N/A

Visit an HTML report


component.

Actuate Foundation Class Reference

Class AcVisitor

Method

Type

Description

VisitHtmlRuleControl( )

N/A

Visit an HTML rule


component.

VisitImageControl( )

N/A

Visit an image control


component.

VisitIntegerControl( )

N/A

Visit an integer control


component.

VisitLabelControl( )

N/A

Visit a label control


component.

VisitLeftRightPageList( )

N/A

Visit a left-right page list


component.

VisitLeftToRightFlow( )

N/A

Visit a left-to-right flow


component.

VisitLinearFlow( )

N/A

Visit a linear flow


component.

VisitLineControl( )

N/A

Visit a line control


component.

VisitOleContainer
Control( )

N/A

Visit an OLE container


control component.

VisitOleControl( )

N/A

Visit an OLE control


component.

VisitPage( )

N/A

Visit a page component.

VisitPageNumber
Control( )

N/A

Visit a page number control


component.

VisitPageList( )

N/A

Visit a page list component.

VisitParallelSection( )

N/A

Visit a parallel section


component.

VisitRectangleControl( )

N/A

Visit a rectangle control


component.

VisitReport( )

N/A

Visit a report component.

VisitReportSection( )

N/A

Visit a report section


component.

VisitSection( )

N/A

Visit a section component.

VisitSequentialSection( )

N/A

Visit a sequential section


component.

VisitSimplePageList( )

N/A

Visit a simple page list


component.

VisitSubpage( )

N/A

Visit a subpage component.

Chapter 3, AFC classes

603

Class AcVisitor

Example

Method

Type

Description

VisitSummaryGraph( )

N/A

Visit a summary graph


component.

VisitTextControl( )

N/A

Visit a text control


component.

VisitTextualControl( )

N/A

Visit a textual control


component.

VisitTitleBodyPageList( )

N/A

Visit a title body page list


component.

VisitTopDownFlow( )

N/A

Visit a top-down flow


component.

VisitVisualComponent( )

N/A

Visit a visual component.

The following example shows how to design a utility to perform data


extraction using the AcVisitor class. The example uses visit methods to
traverse the structure hierarchy in the Sales Detail report object to extract the
data controls for each frame to a spreadsheet that can be viewed using
Microsoft Excel. The user selects a visual control in the report object to initiate
the extraction process. When data extraction is complete, the example
application starts Microsoft Excel which displays the spreadsheet.
The example features a report design that includes an Actuate Basic source
file. The Actuate Basic source file performs the following programming
actions:
1 Initializes the Basic program environment by performing the following
actions:

604

Declaring the class, AcDetailCsvVisitor, as a subclass of AcVisitor

Declaring state variables needed for internal processing

Creating an instance of the output text file (spreadsheet)

Declaring text file fields corresponding to the Sales Detail controls to be


extracted

Declaring subroutines that convert the values of the data controls to the
form needed in the output text file

Declaring subroutines to do special processing for different kinds of


frames

Actuate Foundation Class Reference

Class AcVisitor

Class AcDetailCsvVisitor Subclass Of AcVisitor


'State variables:
'Channel contains system file number
'NeedComma is needed to determine when to write a comma to the file
'FileName contains output text file name
Dim Channel As Integer
Dim NeedComma As Boolean
Dim FileName As String
' Variables that make up the data row.
Dim TotalSalesForecast As Currency
Dim OfficeName As String
Dim OfficePhone As String
Dim OfficeAddress1 As String
Dim OfficeAddress2 As String
Dim OfficeTotalForecast As Currency
Dim RepTotalForecast As Currency
Dim RepExtension As String
Dim RepEmail As String
Dim RepName As String
Dim CustomerContactName As String
Dim CustomerContactPhone As String
Dim CustomerName As String
Dim CustomerAddress1 As String
Dim CustomerAddress2 As String
Dim CustomerCreditRank As String
Dim CustomerPurchPattern As String
Dim CustomerTotalForecast As String
Dim OrderNumber As Integer
Dim OrderForecastDate1 As String
Dim OrderNeededDate As String
Dim OrderNote As String
Dim OrderForecastDate2 As String
Dim OrderStatus As String
Dim ItemCategory As String
Dim ItemCode As String
Dim ItemDescription As String
Dim ItemQuantity As Integer
Dim ItemPrice As Currency
Dim ItemExtension As Currency
Dim OrderTotalQuantity As Integer
Dim OrderTotal As Currency
Dim CustomerTotalQuantity As Integer

Chapter 3, AFC classes

605

Class AcVisitor

Dim RepTotalQuantity As Integer


Dim OfficeTotalQuantity As Integer
Dim TotalQuantity As Integer
' Create instance of output text file
Sub New( )
FileName = "extract.csv"
End Sub
' Convert a number to a field in the output line.
Sub NumericField( value As Variant )
If NeedComma Then
Print #Channel, ",";
End If
Print #Channel, CStr( Value );
NeedComma = True
End Sub
' Convert a string to a field in the output line. The string
' must be quoted. Any quotes in the string must be replaced by
' a double quote. Newline characters are converted to spaces.
' So, a value of
' He said "Hi!"
' Becomes:
' "He said ""Hi!!"""
Sub TextField( value As String )
Dim i As Integer
Dim length As Integer
Dim c As String
If NeedComma Then
Print #Channel, ",";
End If
Print #Channel, """";
length = Len( value )
For i = 1 to length
c = Mid$( value, i, 1 )
Select Case c
Case """"
Print #Channel, """""";
Case Chr$(13)
Print #Channel, " ";
Case Chr$(10)
Print #Channel, " ";

606

Actuate Foundation Class Reference

Class AcVisitor

Case Else
Print #Channel, c;
End Select
Next
Print #Channel, """";
NeedComma = True
End Sub

2 Overrides the VisitReportSection( ) method to perform the following


actions:


Opening the text file for output

Writing labels for the text fields

Calling the VisitDataSection( ) method to start the extraction

Closing the text file after VisitDataSection( ) has completed data


extraction
Sub VisitReportSection( obj As AcReportSection )
' Open output text file
Channel = FreeFile( )
Open FileName For Output As #Channel
' Write column labels
Print #Channel, "OfficeName,";
Print #Channel, "SalesRepName,";
Print #Channel, "ContactName,";
Print #Channel, "ContactPhone,";
Print #Channel, "CompanyName,";
Print #Channel, "CreditRank,";
Print #Channel, "PurchasingPattern,";
Print #Channel, "OrderNumber,";
Print #Channel, "ForecastOrderDate,";
Print #Channel, "NeededOrderDate,";
Print #Channel, "ForecastOrderShipDate,";
Print #Channel, "OrderStatus,";
Print #Channel, "ItemCategory,";
Print #Channel, "ItemDescription,";
Print #Channel, "ItemQuantity,";
Print #Channel, "ItemPrice,";
Print #Channel, "ItemExtendedPrice,";
Print #Channel
' Start data extraction from report object to outputtext file
VisitDataSection( obj )

Chapter 3, AFC classes

607

Class AcVisitor

' Close output text file and end processing after extraction is complete
Close #Channel
End Sub

3 Overrides the VisitDataFrame( ) method to detect the kind of frame being


visited and calls a specialized subroutine to process the frame. In the
example, special subroutines are created to extract data from each kind of
frame, for example, CustomerTitleFrame or ItemFrame. The sample code
for the VisitItemDetail subroutine is shown after the code that overrides the
VisitDataFrame( ) method. The logic for the other kinds of frames is similar
to the code in the VisitItemDetail subroutine:
' Map a generic data frame into one of the report-specific
' types. Note that we use a Case statement
' here which is different than the way the Visitor handles
' AFC-provided classes. The Case statement approach is
' slower at run time, but keeps data extraction code out
' of the report component classes.
Sub VisitDataFrame( obj As AcDataFrame )
Dim frameName As String
Dim i As Integer
frameName = GetClassName( obj )
i = Len( frameName )
Do While i > 1 And Mid$( frameName, i, 1 ) <> ":"
i=i-1
Loop
If i > 1 Then
frameName = Mid$( frameName, i + 1 )
End If
Select Case frameName
Case "ReportTitle1"
VisitReportBefore( obj )
Case "ReportTotals"
VisitReportAfter( obj )
Case "OfficeTitleFrame"
VisitOfficeTitleFrame( obj )
Case "OfficeGroupTotals"
VisitOfficeGroupTotals( obj )
Case "SalesRepTitleFrame"
VisitSalesRepTitleFrame( obj )
Case "SalesRepTotalsFrame"
VisitSalesRepTotalsFrame( obj )

608

Actuate Foundation Class Reference

Class AcVisitor

Case "CustomerTitleFrame"
VisitCustomerTitleFrame( obj )
Case "CustomerGroupTotals"
VisitCustomerGroupTotals( obj )
Case "OrderTitleFrame"
VisitOrderTitleFrame( obj )
Case "OrderTotalsFrame"
VisitOrderTotalsFrame( obj )
Case "ItemFrame"
VisitItemDetail( obj )
End Select
End Sub

This code sample extracts data from the content frame, ItemFrame. The
GetControlValue( ) function accesses the data controls DataValue property.
TextField and NumericField are data extraction utility functions that
convert the format of each controls value before writing the value to the
output text file. The subroutines, TextField and NumericField are shown in
the sample code for step 1:
Sub VisitItemDetail( frame As AcDataFrame )
ItemCategory = frame.GetControlValue( "ItemCategory" )
ItemCode = frame.GetControlValue( "ItemCode" )
ItemDescription = frame.GetControlValue( "ItemCategory" )
ItemQuantity = frame.GetControlValue( "IntegerControl" )
ItemPrice = frame.GetControlValue( "IntegerControl1" )
ItemExtension = frame.GetControlValue( "IntegerControl2" )
' Converts the control to the format required for the output text file
TextField( OfficeName )
TextField( RepName )
TextField( CustomerContactName )
TextField( CustomerContactPhone )
TextField( CustomerName )
TextField( CustomerCreditRank )
TextField( CustomerPurchPattern )
NumericField( OrderNumber )
TextField( OrderForecastDate1 )
TextField( OrderNeededDate )
TextField( OrderForecastDate2 )
TextField( OrderStatus )
TextField( ItemCategory )
TextField( ItemDescription )
NumericField( ItemQuantity )
NumericField( ItemPrice )

Chapter 3, AFC classes

609

AcVisitor::VisitBaseFrame method

NumericField( ItemExtension )
' Writes converted field to output text file
Print #Channel
NeedComma = False
End Sub

4 Overrides visit methods to prevent processing for the following


components: sequential, parallel, and conditional sections. The example
application excludes these components from being processed by overriding
the visit method for the excluded component and by not calling the
superclass. The code sample shows how to prevent processing sequential
sections:
Sub VisitSequentialSection( obj As AcSequentialSection )
End Sub

5 Defines an action (left-click mouse button) on the report control to start the
data extraction utility. The example overrides the OnLButtonClick( )
method to perform the following tasks:
1 Instantiate the reports visitor class, AcDetailCsvVisitor.
2 Set the text output file name.
3 Get a reference to the location of the report object.
4 Start to traverse the structure hierarchy.
5 After data extraction is complete, start Microsoft Excel and displays the
spreadsheet.
Function OnLButtonClick( view As AcReportView, Shift As AcShiftKeyState, x
As Integer, y As Integer ) As Boolean
Dim visitor As AcDetailCsvVisitor
Set visitor = New AcDetailCsvVisitor
visitor.FileName = "c:\Temp\Extract.csv"
GetContainer( ).GetContainer( ).ApplyVisitor( visitor )
Shell( "D:\Program Files\Microsoft Office\Office\Excel.exe C:\Temp\
Extract.csv", 1 )
OnLButtonClick = True
End Function

AcVisitor::VisitBaseFrame method
Visit the AcBaseFrame component.

Syntax

610

Sub VisitBaseFrame( AcBaseFrame )

Actuate Foundation Class Reference

AcVisitor::VisitBasePage method

AcVisitor::VisitBasePage method
Visit the AcBasePage component.

Syntax

Sub VisitBasePage( AcBasePage )

AcVisitor::VisitComponent method
Visit the components of a report.

Syntax

Sub VisitComponent( AcReportComponent )

AcVisitor::VisitConditionalSection method
Visit the AcConditionalSection component.

Syntax

Sub VisitConditionalSection( AcConditionalSection )

AcVisitor::VisitContents method
Visit the contents of a reports data hierarchy components.

Syntax
Description

Sub VisitContents( AcReportComponent )


Use the VisitContents( ) method to recursively traverse all the components
that comprise a reports data hierarchy. VisitContents( ) uses the AcIterator
class methods to traverse the data hierarchy. VisitContents( ) calls
ApplyVisitor( ) for each component in the data hierarchy.

AcVisitor::VisitControl method
Visit the AcControl component.

Syntax

Sub VisitControl( AcControl )

Chapter 3, AFC classes

611

AcVisitor::VisitCurrencyControl method

AcVisitor::VisitCurrencyControl method
Visit the AcCurrencyControl component.

Syntax

Sub VisitCurrencyControl( AcCurrencyControl )

AcVisitor::VisitDataControl method
Visit the AcDataControl component.

Syntax

Sub VisitDataControl( AcDataControl )

AcVisitor::VisitDataFrame method
Visit the AcDataFrame component.

Syntax
Example

Sub VisitDataFrame( AcDataFrame )


This code sample overrides the VisitDataFrame( ) method to extract the
contents of three different frames in the report object: OfficeTitleFrame,
OfficeGroupTotals, and OfficeFrame. The GetClassName( ) function returns
the name of the frame being visited. Then, a specialized subroutine that knows
about the contents of the frame is called to perform the extraction:
' Map a generic data frame into one of the report-specific
' types handled above. Note that we use a Case statement
' here which is different than the way the Visitor handles
' AFC-provided classes. The case statement approach is
' slower at run time, but keeps data extraction code out
' of the report component classes.
Sub VisitDataFrame( obj As AcDataFrame )
Dim frameName As String
Dim i As Integer
frameName = GetClassName( obj )
i = Len( frameName )
Do While i > 1 And Mid$( frameName, i, 1 ) <> ":"
i=i-1
Loop
If i > 1 Then
frameName = Mid$( frameName, i + 1 )
End If

612

Actuate Foundation Class Reference

AcVisitor::VisitDataSection method

Select Case frameName


Case "OfficeTitleFrame"
VisitOfficeTitleFrame( obj )
Case "OfficeGroupTotals"
VisitOfficeGroupTotals( obj )
Case "OfficeFrame"
VisitOfficeFrame( obj )
End Select
End Sub

AcVisitor::VisitDataSection method
Visit the AcDataSection component.

Syntax

Sub VIsitDataSection( obj As AcDataSection )

AcVisitor::VisitDateTimeControl method
Visit the AcDateTimeControl component.

Syntax

Sub VisitDateTimeControl( obj As AcDateTimeControl )

AcVisitor::VisitDetailGraph method
Visit the AcDetailGraph component.

Syntax

Sub VisitDetailGraph( obj As AcDetailGraph )

AcVisitor::VisitDoubleControl method
Visit the AcDoubleControl component.

Syntax

Sub VisitDoubleControl( obj As AcDoubleControl )

Chapter 3, AFC classes

613

AcVisitor::VisitDynamicTextControl method

AcVisitor::VisitDynamicTextControl method
Visit the AcDynamicTextControl component.

Syntax

Sub VisitDynamicTextControl( obj As AcTextControl )

AcVisitor::VisitEllipseControl method
Visit the AcEllipseControl component.

Syntax

Sub VisitEllipseControl( obj As AcEllipseControl )

AcVisitor::VisitFlow method
Visit the AcFlow component.

Syntax

Sub VisitFlow( obj As AcFlow )

AcVisitor::VisitFrame method
Visit the AcFrame component.

Syntax

Function VisitFrame( obj As AcFrame )

AcVisitor::VisitGraph method
Visit the AcGraph component.

Syntax

Function VisitGraph( obj As AcGraph )

AcVisitor::VisitGroupSection method
Visit the AcGroupSection component.

Syntax

614

Sub VisitGroupSection( obj As AcGroupSection )

Actuate Foundation Class Reference

AcVisitor::VisitHLCGraph method

AcVisitor::VisitHLCGraph method
Visit the AcHLCGraph component.

Syntax

Sub VisitHLCGraph( obj As AcHLCGraph )

AcVisitor::VisitHtmlAppletControl method
Visit the AcHtmlAppletControl component.

Syntax

Sub VisitHtmlAppletControl( obj As AcHtmlAppletControl )

AcVisitor::VisitHtmlFrame method
Visit the AcHtmlFrame component.

Syntax

Sub VisitHtmlFrame( obj As AcHtmlFrame )

AcVisitor::VisitHtmlImageControl method
Visit the AcHtmlImageControl component.

Syntax

Sub VisitHtmlImageControl( obj As AcHtmlImageControl )

AcVisitor::VisitHtmlObjectControl method
Visit the AcHtmlObjectControl component.

Syntax

Sub VisitHtmlObjectControl( obj As AcHtmlObjectControl )

AcVisitor::VisitHtmlPlugInControl method
Visit the AcHtmlPlugInControl component.

Syntax

Sub VisitHtmlPlugInControl( obj As AcHtmlPlugInControl )

Chapter 3, AFC classes

615

AcVisitor::VisitHtmlReport method

AcVisitor::VisitHtmlReport method
Visit the HtmlReport component.

Syntax

Sub VisitHtmlReport( obj As AcHtmlReport )

AcVisitor::VisitHtmlRuleControl method
Visit the AcHtmlRuleControl component.

Syntax

Sub VisitHtmlRuleControl( obj As AcHtmlRuleControl )

AcVisitor::VisitImageControl method
Visit the AcImageControl component.

Syntax

Sub VisitImageControl( obj As AcImageControl )

AcVisitor::VisitIntegerControl method
Visit the AcIntegerControl component.

Syntax

Sub VisitIntegerControl( obj As AcIntegerControl )

AcVisitor::VisitLabelControl method
Visit the AcLabelControl component.

Syntax

Sub VisitLabelControl( obj As AcLabelControl )

AcVisitor::VisitLeftRightPageList method
Visit the AcLeftRightPageList component.

Syntax

616

Sub LeftRightPageList( obj As AcLeftRightPageList )

Actuate Foundation Class Reference

AcVisitor::VisitLeftToRightFlow method

AcVisitor::VisitLeftToRightFlow method
Visit the AcLeftToRightFlow component.

Syntax

Sub VisitLeftToRightFlow( obj As AcLeftToRightFlow )

AcVisitor::VisitLinearFlow method
Visit the AcLinearFlow component.

Syntax

Sub VisitLinearFlow( obj As AcLinearFlow )

AcVisitor::VisitLineControl method
Visit the AcLineControl component.

Syntax

Sub VisitLineControl( obj As AcLineControl )

AcVisitor::VisitOleContainerControl method
Visit the AcOleContainerControl component.

Syntax

Sub VisitOleContainerControl( obj As AcOleContainerControl )

AcVisitor::VisitOleControl method
Visit the AcOleControl component.

Syntax

Sub VisitOleControl( obj As AcOleControl )

AcVisitor::VisitPage method
Visit the AcPage component.

Syntax

Sub VisitPage( obj As AcPage )

Chapter 3, AFC classes

617

AcVisitor::VisitPageList method

AcVisitor::VisitPageList method
Recursively traverses all the components that comprise a reports page
hierarchy.

Syntax
Description

Sub VisitPageList( obj As AcPageList )


Use the VisitPageList( ) method to recursively traverse all the components that
comprise a reports page hierarchy. VisitPageList( ) uses the AcIterator class
methods to traverse the page hierarchy. VisitPageList( ) calls ApplyVisitor( )
for each component in the page hierarchy.

AcVisitor::VisitPageNumberControl method
Visit the AcPageNumberControl component.

Syntax

Sub VisitPageNumberControl( obj As AcPageNumberControl )

AcVisitor::VisitParallelSection method
Syntax
Description

Sub VisitParallelSection( obj As AcParallelSection )


Visit the AcParallelSection component.

AcVisitor::VisitRectangleControl method
Visit the AcRectangleControl component.

Syntax

Sub VisitRectangleControl( obj As AcRectangleControl )

AcVisitor::VisitReport method
Visit the report component.

Syntax

618

Sub VisitReport( obj As AcReport )

Actuate Foundation Class Reference

AcVisitor::VisitReportSection method

AcVisitor::VisitReportSection method
Visit the AcReportSection component.

Syntax

Sub VisitReportSection( obj As AcReportSection )

AcVisitor::VisitSection method
Visit the AcSection component.

Syntax

Sub VisitSection( obj As AcSection )

AcVisitor::VisitSequentialSection method
Visit the AcSequentialSection component.

Syntax

Sub VisitSequentialSection( obj As AcSequentialSection )

AcVisitor::VisitSimplePageList method
Visit the AcSimplePageList component.

Syntax

Sub VisitSimplePageList( obj As AcSimplePageList )

AcVisitor::VisitSubpage method
Visit the AcSubpage component.

Syntax

Sub VisitSubpage( obj As AcSubpage )

AcVisitor::VisitSummaryGraph method
Visit the AcSummaryGraph component.

Syntax

Sub VisitSummaryGraph( obj As AcSummaryGraph )

Chapter 3, AFC classes

619

AcVisitor::VisitTextControl method

AcVisitor::VisitTextControl method
Visit the AcTextControl component.

Syntax

Sub VisitTextControl( obj As AcTextControl )

AcVisitor::VisitTextualControl method
Visit the AcTextualControl component.

Syntax

Sub VisitTextualControl( obj As AcTextualControl )

AcVisitor::VisitTitleBodyPageList method
Visit the AcTitleBodyPageList component.

Syntax

Sub VisitTitleBodyPageList( obj As AcTitleBodyPageList )

AcVisitor::VisitTopDownFlow method
Visit the AcTopDownFlow component.

Syntax

Sub VisitTopDownFlow( obj As AcTopDownFlow )

AcVisitor::VisitVisualComponent method
Visit the VisualComponent component.

Syntax

620

Sub VisitVisualComponent( obj As AcVisualComponent )

Actuate Foundation Class Reference

Class AcVisualComponent

Class AcVisualComponent
AcVisualComponent is the base class for all classes in which the objects are
visual.
AcComponent
AcReportComponent
AcVisualComponent

Description

AcVisualComponent defines the characteristics common to all visual objects in


a report. A reports visual objects are:






Frames
Graphs
Controls
Pages
Flows

The two primary characteristics that AcVisualComponent adds to those it


inherits from AcReportComponent are:


Visual attributes, such as position and size.

Interactive attributes that specify how users can interact with visual objects
in the Viewer. AcVisualComponent defines methods that let you control
the following events when users view and interact with the report:
 Mouse events
 Hyperlinks
 Context-sensitive help
 Context menu

AcVisualComponent also defines a property, ObjectVariable, that enables


access to visual objects. When you assign a value to ObjectVariable, the
framework generates a function to access the object. For example, if you set a
controls ObjectVariable property to MyControl, the frame that contains that
control provides a function called myControl( ) to access the control. The
following statement is an example of how you access and modify the control
through code that you write for the containing frame:
MyControl.BackgroundColor = Teal

You can access the control only from its containing frame, not from another
control. When you assign a value to ObjectVariable, do not use the name of an
existing method. If you do so, a compile-time error occurs.

Chapter 3, AFC classes

621

Class AcVisualComponent

Searching for components


The Searchable property on AcVisualComponent determines whether a user
can search for a component in the report. The Searchable property can be set to
NotSearchable to disable searching, SearchNoIndex to enable searching, and
SearchWithIndex to enable a high performance, indexed search for a
component. If you specify SearchNoIndex, Actuate searches the entire report
to locate the component. If you specify SearchWithIndex, the Factory stores the
component in a binary tree collection that uses the components DataValue
property as the key. Always specify SearchWithIndex when you need to
provide fast search performance for components in reports. When you specify
SearchWithIndex, the time to build the report by the Factory and the size of the
.roi increases.

Subclassing AcVisualComponent
Do not subclass from AcVisualComponent. Rather, subclass from classes
derived from AcVisualComponent, such as AcFrame and the classes derived
from AcDataControl or other concrete control classes.

Variables
Variable

Type

Description

Position

AcPoint

The x- and y-coordinates, in twips, that specify the


location of the object relative to the top-left corner of
its container object.
Frame

Size

AcSize

407, 195

1000, 195

TextControl
407, 450
TextControl

TextControl

The height and width of the object in twips. If the


object is a circle or a line, the objects size is the size
of the box that bounds it.
This box is the size
of the circle

Height

Width

LinkTo

622

String

The value of the hyperlink, defined in the LinkExp


property.

Actuate Foundation Class Reference

Class AcVisualComponent

Properties
Property

Group

Type

Description

AnalysisType

N/A

AcAnalysis
Type

Specifies how data is analyzed.


The values are:
 AnalyzeAsAutomatic
numeric values are analyzed
as measures. Non-numeric
values are analyzed as
dimensions. This is the
default setting.
 AnalyzeAsDimension
numeric values are analyzed
as dimensions. For example,
a ZIP code can be analyzed
as a dimension to enable
sorting by ZIP codes.
 AnalyzeAsMeasure
numeric values are analyzed
as measures.

CanIncrease
Height

Dynamic
Size &
Position

Boolean

Specifies whether or not the


height of the object can be
increased automatically.
The default is True.

CanMoveUp

Dynamic
Size &
Position

Boolean

Specifies whether or not the


object can move up
automatically. For example, use
CanMoveUp in conjunction
with CanReduceHeight to
suppress blank lines in
addresses.
The default is False.

CanReduce
Height

Dynamic
Size &
Position

Boolean

Specifies whether or not the


height of the object can be
reduced automatically.
The default is False.

Chapter 3, AFC classes

623

Class AcVisualComponent

624

Property

Group

Type

Description

CursorShape

Windows
Viewer
Only

AcCursor
Shape

The kind of cursor to show


when the mouse cursor passes
over the object. The defaults are:
 Active arrow cursor when
the object is selectable.
 Standard arrow cursor when
the object is not selectable.

HelpText

Windows
Viewer
Only

String

The text to show for this object


when the user asks for help.
There is no default for
HelpText.

LinkExp

Linking

String

The expression defining a


hyperlink for this object.

Maximum
Height

Dynamic
Size &
Position

AcTwips

Specifies the maximum height


to which the component can
grow automatically.
If the components initial
heightspecified by its Height
property is greater than
MaximumHeight, the control
does not shrink. Instead, the
behavior is as if
MaximumHeight is set to the
initial height.
The default is zero, which
means the component can grow
indefinitely.
The default is 0".

Actuate Foundation Class Reference

Class AcVisualComponent

Property

Group

Type

Description

Minimum
Height

Dynamic
Size &
Position

AcTwips

Specifies the minimum height


to which the component can
shrink automatically.
If the components initial
heightspecified by its Height
propertyis smaller than
MinimumHeight, the control
does not shrink. Instead, the
behavior is as if
MinimumHeight is set to the
initial height.
The default is zero, which
means the component can
shrink indefinitely.
The default is 0".

ObjectVariable

N/A

Value

The name of an optional


method in the frame that will
point to this object.

Position

Position

AcPosition

The position of the object in its


enclosing frame.

Searchable

Searching

AcSearch
Type

The searching options for the


component. Values for this
property are:
 NotSearchable
 SearchNoIndex
 SearchWithIndex
Specify NotSearchable to
disable searching for this
component. Set Searchable to
SearchNoIndex or
SearchWithIndex to enable
searching. If you specify
SearchWithIndex, Actuate uses
an indexed search to improve
performance. For more
information, see Searching for
components.
SearchNoIndex is the default.

Chapter 3, AFC classes

625

Class AcVisualComponent

626

Property

Group

Type

Description

SearchAlias

Searching

String

The name to display to the user


when building a search for this
component. Default is the class
name for the component.

Selectable

Searching

Boolean

True if the user can select this


object in the Viewer.

ShowIn
DHTML

Visibility

Boolean

True shows the control when


the report is displayed in
DHTML format. False hides the
control when the report is
displayed in DHTML format.
ShowInDHTML is ignored by
the client Actuate Viewer.

ShowInPDF

Visibility

Boolean

True shows the control when


the report is printed in PDF
format. False hides the control
when the report is printed in
PDF format.
ShowInPDF is ignored by the
client Actuate Viewer.

ShowWhen
Printing

Visibility

Boolean

Determines whether the report


includes the control when it is
printed. Default is True.

ShowWhen
Viewing

Visibility

Boolean

Determines whether the user


sees the control when the report
is viewed. Default is True.

Size

Size

AcSize

The size of the visual object.

TargetWindow
Name

Linking

String

The name of a target window in


which the contents of a
hyperlink should appear.

Actuate Foundation Class Reference

Class AcVisualComponent

Property

Group

VerticalPosition Dynamic
Size &
Position

Type

Description

AcVertical
Position

Specifies how the components


vertical position is adjusted:
 VerticalPositionBottomthe
object is repositioned
vertically to keep the
distance between its bottom
and the bottom of the
reference object constant. If
the top of the object is above
the top of the reference
object, it is not moved.
 VerticalPositionDefault if
the top of the object is at or
below the midpoint of the
reference object, the
behavior of
VerticalPositionDefault is
the same as
VerticalPositionBottom.
Otherwise, the object is not
moved.
 VerticalPositionFrameBottom
the object is repositioned
vertically to keep the
distance between its bottom
and the bottom of the frame
constant.
 VerticalPositionFrameTop
the object is not moved.
 VerticalPositionTopthe
object is repositioned
vertically to keep the
distance between its top and
the bottom of the reference
object constant. If the top of
the object is above the
bottom of the reference
object, it is not moved.

Chapter 3, AFC classes

627

Class AcVisualComponent

Property

Group

Type

VerticalSize

Dynamic
Size &
Position

AcVertical
Size

Description
Specifies how the components
vertical size is adjusted:
VerticalSizeFixed (default)the
object is not resized.
VerticalSizeRelativeif the top
of the object is at or above the
top of the reference object and its
bottom is at or below the bottom
of the reference object, the
objects size is increased as
follows to give the greatest
height increase:
the distance between the
objects bottom and the bottom
of the reference object is kept
constant.
the object height is increased by
the same amount as the
reference objects height
increase.
If the top of the object is below
the top of the reference object or
its bottom is above the bottom of
the reference object, the object is
moved according to the setting
of its VerticalPosition property.
VerticalSizeFrameRelativethe
object is resized to keep the
distance between its bottom and
the bottom of the frame
constant.

Methods

628

Method

Type

Description

AddMenuCommands( )

N/A

Builds the context menu that


appears when users press the
right mouse button.

AdjustSize( )

N/A

Changes the size of the


component.

Actuate Foundation Class Reference

Class AcVisualComponent

Method

Type

Description

AdjustVerticalGeometry( )

N/A

Adjusts the height and vertical


position of the object relative to
its reference object.

CanIncreaseHeight( )

Boolean

Determines whether or not the


height of the object can be
increased automatically.

CanMoveUp( )

Boolean

Specifies whether or not the


object can move up automatically.

CanReduceHeight( )

Boolean

Determines whether or not the


height of the object can be
reduced automatically.

CanSplitVertically( )

Boolean

Determines whether or not the


object can be split across multiple
pages.

ComputeLowestSplit( )

Boolean

Determines whether or not the


object can be split.

CursorShape( )

AcCursor
Shape

Implements the CursorShape


property.

FindLowestSplit( )

Boolean

Establishes the vertical point at


which the object can split.

FindPageContainerBy
Class( )

AcReport
Returns a reference to this class in
Component the page hierarchy.

GetBottom( )

Integer

GetFirstSlave( )

AcVisual
Returns the handle to the objects
Component first slave object.

GetFrame( )

AcFrame

Returns a reference to the frame


containing the visual object.

GetHeight( )

Integer

Returns the height of the


component.

GetHtmlLinkTo( )

String

Returns the HTML value of the


hyperlink expression contained
in the LinkTo variable.

GetLastSlave( )

AcVisual
Returns the handle to the objects
Component last slave object.

GetLeft( )

Integer

Returns the bottom position of


the component.

Returns the left position of the


component.

Chapter 3, AFC classes

629

Class AcVisualComponent

630

Method

Type

Description

GetLinkTo( )

String

Returns value of the hyperlink


expression contained in the
LinkTo variable.

GetMaster( )

AcVisual
Returns the handle to the objects
Component master object.

GetPageContainer( )

AcVisual
Returns the container in the page
Component hierarchy for the component.

GetRect( )

Ac
Rectangle

Returns the coordinates of the


component relative to its frame.

GetRight( )

Integer

Returns the right position of the


component.

GetTop( )

Integer

Returns the top position of the


component.

GetVisualComponent( )

AcVisual
Returns the current visual
Component component.

GetWidth( )

Integer

Returns the width of the


component.

HelpText( )

String

Implements the HelpText


property.

IsFirstSlave( )

Boolean

Determines whether or not the


object is the first slave of the
master object.

IsFrameDecoration( )

Boolean

Determines whether or not the


object is a frame decoration.

IsMaster( )

Boolean

Determines whether or not the


object is a master object.

IsNormal( )

Boolean

Returns True if the object is


neither a master or a slave object.

IsSlave( )

Boolean

Determines whether or not the


object is a slave object.

IsVisible( )

Boolean

Determines whether the


component is visible to the user.

MaximumHeight( )

Boolean

Specifies the maximum height to


which the component can grow
automatically.

MinimumHeight( )

Boolean

Specifies the minimum height to


which the component can shrink
automatically.

Actuate Foundation Class Reference

Class AcVisualComponent

Method

Type

Description

MoveBy( )

N/A

Moves the component by the


amount given.

MoveByConstrained( )

N/A

Specifies the distance by which to


move the component.

MoveTo( )

N/A

Moves the component to the


position given.

MoveToConstrained( )

N/A

Moves the component.

OnActuate( )

Boolean

A placeholder method that you


override to implement a visual
objects main task.

OnContextMenu( )

Boolean

Displays a context menu that


appears when users press the
right mouse button.

OnCopyLink( )

N/A

Copies LinkTo property to


clipboard.

OnFollowLink( )

Boolean

Override to implement a
hyperlink.

OnHelp( )

Boolean

Displays the HelpText string.

OnLButtonClick( )

Boolean

Called on a left button click.

OnLButtonDblClk( )

Boolean

Called on a left button doubleclick.

OnLButtonDown( )

Boolean

Called on a left button down


event.

OnLButtonUp( )

Boolean

Called on a left button up event.

OnRButtonClick( )

Boolean

Called on a right button click.

OnRButtonDblClk( )

Boolean

Called on a right button doubleclick.

OnRButtonDown( )

Boolean

Called on a right button down


event.

OnRButtonUp( )

Boolean

Called on a right button up event.

ResizeBy( )

N/A

Resizes a component by the


distances given.

ResizeByConstrained( )

N/A

Specifies the amount by which to


resize the component.

ResizeTo( )

N/A

Resizes a frame or control to the


given size.

Chapter 3, AFC classes

631

AcVisualComponent::AddMenuCommands method

See also

Method

Type

Description

ResizeToConstrained( )

N/A

Resizes the component to the


given size.

Searchable( )

AcSearch
Type

Implements the Searchable


property.

SearchAlias( )

String

Implements the SearchAlias


property.

Selectable( )

Boolean

Implements the Selectable


property.

SetLinkTo( )

N/A

Sets the LinkTo run-time variable


based on values of data row
variables.

ShowInHtml( )

Boolean

Determines whether or not the


control is visible on the HTML
report. Default is True.

SplitVertically( )

N/A

Overridden by AFC classes to


split visual objects vertically.

StatusText( )

String

Returns the value of GetLinkTo( )


if there is a hyperlink, or
HelpText( ) otherwise.

TargetWindowName( )

String

Implements the
TargetWindowName property.

VerticalPosition

AcVertical
Position

Returns the value of the


VerticalPosition property.

VerticalSize( )

AcVertical
Size

Returns the value of the


VerticalSize property.

Class AcControl
Class AcFrame
Class AcGraph
Class AcReportComponent

AcVisualComponent::AddMenuCommands method
Builds the context menu that appears when the user presses the right mouse
button.

Syntax
Parameter

632

Sub AddMenuCommands( menu As AcPopupMenu )


menu
A reference to the pop-up menu.

Actuate Foundation Class Reference

AcVisualComponent::AddMenuCommands method

Description

By default, AddMenuCommands( ) creates a context menu with the following


two items:


Default Action executes OnActuate( ) when users choose this menu item.

Help executes OnHelp( ) when users choose this menu item.

In a derived class, you can override AddMenuCommands( ) to change the


default items and add new ones.

Example

This code sample overrides the AddMenuCommands( ) method on a control


in a report to add two menu items to the context menu. The menu items allow
the user to jump to different reports. The report object contains a summary
report for the United States and detail and summary reports for each region
within the United States. From the US summary report, the user is able to
right-click on a region to view a context menu showing items for the regions
summary and detail reports. Then, the user can select the type of report and
jump directly to it.
The Actuate Basic Case statement is used to examine the DataValue property
of the region control and a menu item for the summary report and one for the
detail report. Two user-defined methods, LinkToDetail and LinkToSummary,
were written to change the region controls LinkExp property and cause the
jump to the selected report. To see how this is done, see
AcVisualComponent::OnFollowLink method later in this chapter.
The AddSeparator( ) method is called to add a separator line between the
added items and the other menu items:
Sub AddMenuCommands( menu As AcPopupMenu )
' The Actuate Basic Case statement is used to test the DataValue property
' of the selected region control in the report. Two menu items are added
' based on the DataValue property. For example, if the DataValue is
' East then items Eastern Summary and Eastern Detail are added.
' The AddItem method on AcPopUpMenu class is used to add the menu
' items. LinkToSummary and LinkToDetail are user-defined methods on the
' region control class.
Select Case DataValue
Case "East"
menu.AddItem( "Eastern Summary", me, "LinkToSummary" )
menu.AddItem( "Eastern Detail", me, "LinkToDetail")
Case "West"
'menu.AddItem( "Western Summary", me, "LinkToSummary" )
menu.AddItem( "Western Detail", me, "LinkToDetail")
Case "South"
'menu.AddItem( "Southern Summary", me, "LinkToSummary" )
menu.AddItem( "Southern Detail", me, "LinkToDetail")
Case "North"

Chapter 3, AFC classes

633

AcVisualComponent::AdjustSize method

'menu.AddItem( "Northern Summary", me, "LinkToSummary" )


menu.AddItem( "Northern Detail", me, "LinkToDetail")
End Select
Add a separator line after the new menu items
menu.AddSeparator ()
Super::AddMenuCommands( menu )
End Sub

See also

AcVisualComponent::HelpText method
AcVisualComponent::OnActuate method
AcVisualComponent::OnContextMenu method
AcVisualComponent::OnHelp method
Class AcPopupMenu

AcVisualComponent::AdjustSize method
Changes the size of the component.

Syntax
Description

Sub AdjustSize( )
Override AdjustSize( ) to change the size of a component after it is built but
before it is added to a page. For example, you can use AdjustSize to perform
the following actions:


Expand a frame to show additional controls

Contract a frame to hide empty controls

If the component is a control or a nested frame, you must add the component
to its containers list of objects to be resized using the AddToAdjustSizeList( )
method. This causes the AdjustSize( ) method to be called automatically.

Example

In this example, the frame size is large enough to hold four controls. If more
than four controls are needed to display the information, then AdjustSize
dynamically changes the frame size based on the additional space
requirements:
Sub AdjustSize( )
' Every frame can hold at least 4 animals, if there
' are more, then we have to widen the frame.
If RowCount > 4 Then
Size.Width = Size.Width + Offset * (RowCount - 4)
End If
End Sub

634

Actuate Foundation Class Reference

AcVisualComponent::AdjustVerticalGeometry method

See also

AcBaseFrame::AddToAdjustSizeList method

AcVisualComponent::AdjustVerticalGeometry
method
Adjusts the height and vertical position of the object relative to its reference
object.

Syntax
Parameter

Sub AdjustVerticalGeometry( relativeTo As AcVisualComponent, vP As


AcVerticalPosition, vS As AcVerticalSize )
relativeTo
The reference object.
vP
The required vertical positioning behavior.
vS
The required vertical sizing behavior.

Description

The AdjustVerticalGeometry( ) method adjusts the height and the vertical


position of the object. These adjustments are relative to the height and vertical
position of the reference object.

AcVisualComponent::CanIncreaseHeight method
Determines whether or not the height of the object can be increased
automatically.

Syntax
Description

Function CanIncreaseHeight( ) As Boolean


The CanIncreaseHeight( ) method determines whether or not the height of the
object can be increased automatically.

AcVisualComponent::CanMoveUp method
Specifies whether or not the object can move up automatically.

Syntax

Function CanMoveUp( ) As Boolean

Chapter 3, AFC classes

635

AcVisualComponent::CanReduceHeight method

Description

See also

The CanMoveUp( ) method specifies whether or not the object can move up
automatically. For example, use CanMoveUp( ) in conjunction with
CanReduceHeight( ) to suppress blank lines in addresses.
AcVisualComponent::CanReduceHeight method

AcVisualComponent::CanReduceHeight method
Determines whether or not the height of the object can be reduced
automatically.

Syntax
Description

Function CanReduceHeight( ) As Boolean


The CanReduceHeight( ) method determines whether or not the height of the
object can be reduced automatically.

AcVisualComponent::CanSplitVertically method
Determines whether or not the object can be split across multiple pages.

Syntax
Description
Returns

Function CanSplitVertically( ) As Boolean


The CanSpitVertically( ) method determines whether or not the object can be
split across multiple pages.
True if the object can split.
False if the object cannot split.

AcVisualComponent::ComputeLowestSplit method
Determines whether or not the object can be split.

Syntax
Parameter

Function ComputeLowestSplit( upperLimit As AcTwips, lowerLimit As


AcTwips, splitIsNecessary As Boolean) As Boolean
upperLimit
The highest point at which the object can split.
lowerLimit
The lowest point at which the object can split.

636

Actuate Foundation Class Reference

AcVisualComponent::CursorShape method

splitIsNecessary
Determines if the visual object must be split if possible.

Description

The ComputeLowestSplit( ) method determines whether or not the object can


be split. If the object can be split, ComputeLowestSplit ( ) prepares the object to
be split.

AcVisualComponent::CursorShape method
Implements the CursorShape property that appears in the Properties page of
the Component Editor.

Syntax
Description
See also

Function CursorShape( ) As AcCursorShape


CursorShape( ) specifies the type of cursor to display when the mouse pointer
moves over the object.
AcVisualComponent::Selectable method

AcVisualComponent::FindLowestSplit method
Establishes the vertical point at which the object can split.

Syntax

Parameter

Function FindLowestSplit( upperLimit As AcTwips, lowerLimit As ActTwips,


splitIsNecessary As Boolean, fragment1Bottom As AcTwips, fragment2Top
As AcTwips ) As Boolean
upperLimit
The highest point at which the object can split.
lowerLimit
The lowest point at which the object can split.
splitIsNecessary
Determines if the visual object must be split if possible.
fragment1Bottom
Set to the position of the bottom of the first fragment after the object is split,
relative the internal coordinate space of the objects container.
fragment2Top
Set to the position of the top of the second fragment after the object is split,
relative the internal coordinate space of the objects container.

Chapter 3, AFC classes

637

AcVisualComponent::FindPageContainerByClass method

Description

Returns

The FindLowestSplit( ) method establishes the vertical point at which the


object can be split. You must implement FindLowestSplit( ) in all objects that
can split vertically. You must call FindLowestSplit( ) before calling
SplitVertically( ).
True if the object can split.
False if the object cannot split.

See also

AcVisualComponent::SplitVertically method

AcVisualComponent::FindPageContainerByClass
method
Returns a reference to the named container object in the page hierarchy.

Syntax

Function FindPageContainerByClass( className As String ) As


AcReportComponent

Description

Use FindPageContainerByClass( ) to search up the page hierarchy for the


container object with the named class. The class may be an AFC or userdefined class. The search starts with the component initiating the search. If you
search for the class corresponding to the component initiating the search, the
return value is a reference to this component. If you want to start the search on
a higher level component, use the GetPageContainer( ) method to position to
the right level in the page hierarchy.

Returns

A reference to the container object in the page hierarchy with the named class.
Nothing if the container object cannot be found.

Example

In this example, the report design calls FindPageContainerByClass( ) to return


a handle to the page list component before updating each page in the report
with relative page numbers:
Function GetValue( ) As Variant
Dim pageListAs AcPageList
Set pageList = FindPageContainerByClass( "AcPageList" )
If pageList Is Nothing Then
GetValue = Null
Else
GetValue = pageList.GetPageCount( )
End If
End Function

See also

638

AcReportComponent::FindContainerByClass method

Actuate Foundation Class Reference

AcVisualComponent::GetBottom method

AcVisualComponent::GetBottom method
Returns the position of the bottom of the component.

Syntax
Description

Function GetBottom( ) As Integer


Returns the position of the bottom of the component, in twips, relative to the
top of its enclosing frame.

AcVisualComponent::GetFirstSlave method
Returns the handle to the objects first slave object.

Syntax
Description
Returns

Function GetFirstSlave( ) As AcVisualComponent


A master object is an object that has been split across multiple pages. A slave
object is a fragment that is produced after an object has been split.
If the object is a master object, the handle to the objects first slave visual object.
If the object is not a master object, Nothing.

AcVisualComponent::GetFrame method
Returns a reference to the frame containing the visual object.

Syntax

Function GetFrame( ) As AcFrame


Description
A visual object is typically contained in a frame. In a derived class, you can call
GetFrame( ) to find out which frame contains the current object.

Returns

A reference to the frame if the current object is a control.


A reference to itself if the current object is a frame.

AcVisualComponent::GetHeight method
Returns the height of the component.

Syntax
Description

Function GetHeight( ) As Integer


Returns the height of the component in twips.

Chapter 3, AFC classes

639

AcVisualComponent:GetHtmlLinkTo method

AcVisualComponent:GetHtmlLinkTo method
Returns the value of the LinkTo variable in HTML format.

Syntax
Description

Function GetHtmlLinkTo( serverPrefix As String ) As String


Returns the value of the hyperlink contained in the LinkTo variable in HTML
format. The LinkTo variables value is generated from the LinkExp expression
property.

AcVisualComponent::GetLastSlave method
Returns the handle to the objects last slave object.

Syntax
Description
Returns

Function GetLastSlave( ) As AcVisualComponent


A master object is an object that has been split across multiple pages. A slave
object is a fragment that is produced after an object has been split.
If the object is a master object, the handle to the objects first slave visual object.
If the object is not a master object, Nothing.

AcVisualComponent::GetLeft method
Returns the position of the left edge of the component.

Syntax
Description

Function GetLeft( ) As Integer


Returns the position of the left edge of the component, in twips, relative to the
left edge of its enclosing frame.

AcVisualComponent::GetLinkTo method
Returns the value of the hyperlink expression contained in the LinkTo
variable.

Syntax
Description

640

Function GetLinkTo( ) As String


Returns the value of the hyperlink expression contained in the LinkTo
variable. The LinkTo variables value is generated from the LinkExp
expression property.

Actuate Foundation Class Reference

AcVisualComponent::GetMaster method

AcVisualComponent::GetMaster method
Returns the handle to the objects master object.

Syntax
Description
Returns

Function GetMaster( ) As AcVisualComponent


A master object is an object that has been split across multiple pages. A slave
object is a fragment that is produced after an object has been split.
If the object is a slave object, the handle to the objects master object.
If the object is not a slave object, Nothing.

AcVisualComponent::GetPage method
Returns the page on which this frame or control appears.

Syntax
Description

Function GetPage( ) As AcBaseFrame


The GetPage( ) method is a utility function intended primarily for use in the
Viewer. Call this method to find out the page on which this frame or control
appears.
If you use this method within the Factory, you must be aware of when the
page becomes available. A frame is assigned to a page by its enclosing section
after the section finishes the frame. While building the frame with the Start( ),
Build( ), BuildFromRow( ), or Finish( ) methods, the frame is not yet assigned
to a page, so this method returns Nothing. The reason is that you might choose
to adjust the frame size as part of the Finish( ) processing. As a result, the
framework does not know if the frame will fit on the current page or whether a
new page will be needed until after the frame is completely finished.

Returns

A reference to the page on which this frame or control appears.


Nothing if the frame has not yet been assigned to a page by the Factory.

AcVisualComponent::GetPageContainer method
Returns a reference to the container object in the page hierarchy for this
component.

Syntax
Description

Function GetPageContainer( ) As AcVisualComponent


Use GetPageContainer( ) to obtain a reference to the container object in the
page hierarchy, if any, for this component.

Chapter 3, AFC classes

641

AcVisualComponent::GetRect method

At report generation time, the Factory builds two object hierarchies, the
structure hierarchy and the page hierarchy. When report generation begins,
components in the report design are stored in the structure hierarchy and the
page hierarchy is empty. As frames are built, the Factory places the visual
components in the report design in the page hierarchy. The frames container
object in the page hierarchy is different from its container object in the
structure hierarchy. For example, in the structure hierarchy, a frames object
container may be another frame, section, or report object. When the Factory
builds the frame, the flow object in the page hierarchy contains the frame.

Returns

A reference to the container object in the page hierarchy.


Nothing if the frame has not yet been assigned to a page by the Factory.

See also

AcReportComponent::GetContainer method

AcVisualComponent::GetRect method
Returns the rectangular coordinates of the component relative to its enclosing
frame.

Syntax
Description

Returns

Function GetRect( ) As AcRectangle


Returns the right, left, top, and bottom coordinates of the component (in
twips) relative to its enclosing frame. GetRect( ) uses the GetTop( ), GetBottom(
), GetLeft( ), and GetRight( ) methods to calculate the coordinates.
The coordinates in a structure having the data type, AcRectangle. For
information about AcRectangle, see AcRectangle.

AcVisualComponent::GetRight method
Returns the position of the right edge of the component.

Syntax
Description

Function GetRight( ) As Integer


Returns the position of the right edge of the component, in twips, relative to
the left edge of its enclosing frame.

AcVisualComponent::GetTop method
Returns the position of the top of the component.

Syntax
642

Function GetTop( ) As Integer

Actuate Foundation Class Reference

AcVisualComponent::GetVisualComponent method

Description

Returns the position of the top of the component, in twips, relative to the top
of its enclosing frame.

AcVisualComponent::GetVisualComponent method
Returns the current visual component.

Syntax
Description
Returns

Function GetVisualComponent( ) As AcVisualComponent


Returns a reference to the current visual component.
The current visual component.

AcVisualComponent::GetWidth method
Returns the width of the component.

Syntax
Description

Function GetWidth( ) As Integer


Returns the width of the component in twips.

AcVisualComponent::HelpText method
Implements the HelpText property.

Syntax
Description

Function HelpText( ) As String


HelpText( ) specifies the string to display for the selected object in the Viewer.
The help string appears when OnHelp( ) executes. By default, OnHelp( ) is
called by AddMenuCommands( ), which builds the context menu. Help,
therefore, is accessible through the default context menu.
The following figure illustrates the default sequence of method calls leading to
HelpText( ).

Chapter 3, AFC classes

643

AcVisualComponent::IsFirstSlave method

OnRButtonDown( )

See also

OnContextMenu( )

AddMenuCommands( )

HelpText( )

OnHelp( )

AcVisualComponent::AddMenuCommands method
AcVisualComponent::OnHelp method

AcVisualComponent::IsFirstSlave method
Determines whether or not the object is the first slave of the master object.

Syntax
Description
Returns

Function IsFirstSlave( ) As Boolean


A master object is an object that has been split across multiple pages. A slave
object is a fragment that is produced after an object has been split.
True if the object is the first slave of its master object.

AcVisualComponent::IsFrameDecoration method
Determines whether or not the object is a frame decoration.

Syntax
Description

Function IsFrameDecoration( ) As Boolean


The IsFrameDecoration( ) method determines whether or not the object is a
frame decoration.
For more information about frame decoration objects, see Chapter 12,
Working with dynamic text controls, in Developing Advanced e.Reports.

AcVisualComponent::IsMaster method
Determines whether or not the object is a master object.

Syntax

644

Function IsMaster( ) As Boolean

Actuate Foundation Class Reference

AcVisualComponent::IsNormal method

Description
Returns

A master object is an object that has been split across multiple pages. A slave
object is a fragment that is produced after an object has been split.
True if the object is a master object.
False if the object is not a master object.

AcVisualComponent::IsNormal method
Returns True if the object is neither a master or a slave object.

Syntax
Description
Returns

Function IsNormal( ) As Boolean


A master object is an object that has been split across multiple pages. A slave
object is a fragment that is produced after an object has been split.
True if the object is a neither a master or a slave object.
False if the object is a either a master or a slave object.

AcVisualComponent::IsSlave method
Determines whether or not the object is a slave object.

Syntax
Description
Returns

Function IsSlave( ) As Boolean


A master object is an object that has been split across multiple pages. A slave
object is a fragment that is produced after an object has been split.
True if the object is a slave object.
False if the object is not a slave object.

AcVisualComponent::IsVisible method
Determines whether the component is visible to the user.

Syntax
Description

Returns

Function IsVisible( ) As Boolean


Call IsVisible( ) to determine if the component is all or partially visible to the
user. For example, if you set the TocIfAnyVisible property on a node to True,
then IsVisible returns True for the node.
True if the component is visible.
False if the component is not visible.

Chapter 3, AFC classes

645

AcVisualComponent::MaximumHeight method

AcVisualComponent::MaximumHeight method
Specifies the maximum height to which the component can grow
automatically.

Syntax
Description

Function MaximumHeight( ) As Boolean


The MaximumHeight( ) method specifies the maximum height to which the
component can grow automatically. Zero means the object can grow
indefinitely.
For more information, see Chapter 12, Working with dynamic text controls,
in Developing Advanced e.Reports.

AcVisualComponent::MinimumHeight method
Specifies the minimum height to which the component can shrink
automatically.

Syntax
Description

Function MinimumHeight( ) As Boolean


The MinimumHeight( ) method specifies the minimum height to which the
component can shrink automatically. Zero means the object can shrink
indefinitely.
For more information, see Chapter 12, Working with dynamic text controls,
in Developing Advanced e.Reports.

AcVisualComponent::MoveBy method
Moves a control or frame.

Syntax
Parameter

Sub MoveBy( deltaX As Integer, deltaY As Integer )


deltaX
The horizontal distance, in twips, to move the component. The distance is
relative to the current position.
deltaY
The vertical distance, in twips, to move the component. The distance is relative
to the current position.

646

Actuate Foundation Class Reference

AcVisualComponent::MoveByConstrained method

Description
See also

The MoveBy( ) method moves a control or nested frame within its enclosing
frame or flow by the given distances. The distances can be positive or negative.
AcVisualComponent::MoveTo method

AcVisualComponent::MoveByConstrained method
Specifies the distance by which to move the component.

Syntax
Parameter

Sub MoveByConstrained( deltaX As Integer, deltaY As Integer )


deltaX
The horizontal distance, in twips, to move the component. The distance is
relative to the components current position.
deltaY
The vertical distance, in twips, to move the component. The distance is relative
to the components current position.

Description

See also

The MoveBy( ) method specifies the horizontal and vertical distances by


which to move the component. This method also uses the value of the objects
CanMoveUp property to determine the amount by which the object is moved.
AcVisualComponent::MoveToConstrained method

AcVisualComponent::MoveTo method
Changes the position of a control or nested frame.

Syntax
Parameter

Sub MoveTo( newX As Integer, newY As Integer )


newX
The new X-position of the control, in twips, relative to the left edge of the
enclosing frame.
newY
The new Y-position of the control, in twips, relative to the top edge of the
enclosing frame.

Description
See also

The MoveTo( ) method changes the position of a control or nested frame


within its enclosing frame or flow.
AcVisualComponent::MoveBy method

Chapter 3, AFC classes

647

AcVisualComponent::MoveToConstrained method

AcVisualComponent::MoveToConstrained method
Moves the component.

Syntax
Parameter

Sub MoveToConstrained( newX As Integer, newY As Integer )


newX
The new X-position of the component, in twips, relative to the left edge of the
enclosing frame.
newY
The new Y-position of the control, in twips, relative to the top edge of the
enclosing frame.

Description

See also

The MoveToConstrained( ) method changes the position of a component. This


method also uses the value of the objects CanMoveUp property to determine
the amount by which the object is moved.
AcVisualComponent::MoveByConstrained method

AcVisualComponent::OnActuate method
Override to implement the visual objects main task.

Syntax
Parameter

Function OnActuate( view As AcReportView, x As Integer, y As Integer ) As


Boolean
view
The window the report is in.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.
y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

By default, OnActuate( ) executes OnFollowLink( ). OnFollowLink( )


implements hyperlinks between objects.
In Windows applications, double-clicking items typically executes the main
action. Following this convention, OnLButtonDblClk( ), which executes when
the user double-clicks the left mouse button, calls OnActuate( ). OnActuate( )

648

Actuate Foundation Class Reference

AcVisualComponent::OnContextMenu method

is also called by AddMenuCommands( ) so that the main task is accessible


from the context menu as well.
The following figure illustrates the default sequence of method calls.
OnLButtonDblClk( )
OnActuate( )

OnFollowLink( )

AddMenuCommands( )

In derived classes, override OnActuate( ) to specify a visual objects default


action. For example, the default action for a video control would be to play a
video clip, and the code to do so should be in OnActuate( ).
If you want other event methods, such as OnRButtonClick( ) or
OnLButtonClick( ), to perform the main task, call OnActuate( ) from those
other methods.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::AddMenuCommands method
AcVisualComponent::OnFollowLink method
AcVisualComponent::OnLButtonDblClk method

AcVisualComponent::OnContextMenu method
Displays the context menu that appears when users press the right mouse
button.

Syntax
Parameter

Function OnContextMenu( view As AcReportView, x As Integer,


y As Integer ) As Boolean
view
The window the report is in.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.
y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

By default, OnContextMenu( ) displays a context menu in which the content is


built by calling AddMenuCommands( ). You specify the menu items to
display by overriding AddMenuCommands( ).

Chapter 3, AFC classes

649

AcVisualComponent::OnCopyLink method

In many Windows applications, pressing the right mouse button typically


displays a context menu. Following this convention, OnRButtonDown( ),
which executes when the user presses the right mouse button, calls
OnContextMenu( ). The following figure illustrates the default sequence of
method calls.
OnRButtonDown( )

OnContextMenu( )

AddMenuCommands( )

In derived classes, you can override OnContextMenu( ) to add further


processing. Typically, however, you use OnContextMenu( ) as designed, and
override AddMenuCommands( ) to specify the menu items to display and
corresponding actions to execute.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::AddMenuCommands method
AcVisualComponent::OnRButtonDown method

AcVisualComponent::OnCopyLink method
Use OnCopyLink to copy a link to the clipboard.

Syntax
Description

Sub OnCopyLink( )
OnCopyLink( ) uses the Actuate Basic function OnCopyLink to copy the
contents of the LinkExp property to the clipboard.

AcVisualComponent::OnFollowLink method
A placeholder method that implements hyperlinks between objects.

Syntax
Parameter

Function OnFollowLink( view As AcReportView, x As Integer, y As Integer )


As Boolean
view
The window the report is in.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.

650

Actuate Foundation Class Reference

AcVisualComponent::OnFollowLink method

y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

By default, OnFollowLink( ) does nothing. Derived classes override this


method to implement the hyperlink navigation logic.
OnActuate( ) calls OnFollowLink( ) by default. Therefore, when users doubleclick the left mouse button, OnFollowLink( ) executes.
The following figure illustrates the default sequence of method calls leading to
OnFollowLink( ).
OnLButtonDblClk( )
OnActuate( )

OnFollowLink( )

AddMenuCommands( )

If you want other event methods such as OnRButtonClick( ) or


OnLButtonClick( ) to trigger OnFollowLink( ), call OnFollowLink( ) from
those methods.
For an example showing how to override OnFollowLink( ) to establish a
hyperlink to another report, see Chapter 7, Programming for report viewing
events, in Programming e.Reports.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

Example

This example calls the OnFollowLink( ) method to jump from a national


summary report to a regional summary or detail report. In the national
summary report, the user can jump to either report from the context menu for
the region control. The context menu was dynamically changed using the
AddMenuCommands( ) method. Additional items for the regional detail
report or regional summary report appear on the context menu. To see how
the menu items are added, see AcVisualComponent::AddMenuCommands
method earlier in this chapter.
The example subroutine, LinkToDetail, uses the Actuate Basic Case statement
to examine the DataValue property of the region control and set the controls
LinkExp property based on the outcome of the test. OnFollowLink( ) is called
to jump to the selected report using the region controls LinkTo property. A
subroutine, LinkToSummary, uses similar logic to jump to the regional
summary report:
Sub LinkToDetail( )
' The Actuate Basic Case statement examines the DataValue property of the
' region control to set up the LinkTo property of the control. The LinkTo
' property contains the relative path to the report object instance.

Chapter 3, AFC classes

651

AcVisualComponent::OnHelp method

Select Case DataValue


Case "East"
LinkTo = "Sales East/East Forecast Detail.roi"
Case "North"
LinkTo = "Sales North/North Forecast Detail.roi"
Case "South"
LinkTo = "Sales South/South Forecast Detail.roi"
Case "West"
LinkTo = "Sales West/West Forecast Detail.roi"
End Select
'The LinkTo property is used by OnFollowLink() to jump to the report.
OnFollowLink ()
End Sub

See also

AcVisualComponent::AddMenuCommands method
AcVisualComponent::OnActuate method
AcVisualComponent::OnLButtonDblClk method

AcVisualComponent::OnHelp method
Displays the string specified in HelpText.

Syntax
Parameter

Function OnHelp( view As AcReportView, x As Integer, y As Integer ) As


Boolean
view
The window the report is in.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.
y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

652

OnHelp( ) and HelpText( ) work together to specify how Actuate displays


information about an object. By default, OnHelp( ) is called by
AddMenuCommands( ), which builds the context menu. Help, therefore, is
accessible through the default context menu. When users choose the Help
menu item in the context menu, the help string specified in HelpText appears
at the location where the mouse was clicked.

Actuate Foundation Class Reference

AcVisualComponent::OnLButtonClick method

The following figure illustrates the default sequence of method calls leading to
HelpText( ).
OnRButtonDown( )

OnContextMenu( )

AddMenuCommands( )

HelpText( )

OnHelp( )

In derived classes, you can override OnHelp( ) to add further processing.


Typically, however, you use OnHelp( ) as designed and override
AddMenuCommands( ) to specify the menu items to display and
corresponding actions to execute. You can also call OnHelp from another
mouse event method if you want to provide another way to access help.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::AddMenuCommands method
AcVisualComponent::HelpText method
AcVisualComponent::OnContextMenu method
AcVisualComponent::OnRButtonDown method

AcVisualComponent::OnLButtonClick method
Executes when users click the left mouse button on a visual object.

Syntax
Parameter

Function OnLButtonClick( view As AcReportView, Shift As AcShiftKeyState,


x As Integer, y As Integer ) As Boolean
view
The window the report is in.

Chapter 3, AFC classes

653

AcVisualComponent::OnLButtonClick method

Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. Shift can contain one of the following values:
Keys pressed

Bit value

Shift value

None

NoKeys

Shift

ShiftKey

Ctrl

ControlKey

Shift + Ctrl

Both ShiftKey and ControlKey

Alt

AltKey

Shift + Alt

Both ShiftKey and AltKey

Ctrl + Alt

Both CtrlKey and AltKey

x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.
y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

In derived classes, you can override OnLButtonClick( ) to perform a task when


users press and release the left mouse button on a single object. If you need to
execute different actions, depending on whether the left mouse button is down
or up, use OnLButtonDown( ) or OnLButtonUp( ) instead.
OnLButtonClick( ) returns False if the event is not handled.
Using the Shift values, you can assign different actions to the different key and
left mouse-click combinations. You can also use the x- and y-coordinates to
execute different actions, depending on where the left mouse-click event
occurred. This technique is particularly useful for graphs where you might
want to display something different depending on the region of the graph that
was clicked.

Example

This example shows how to override the OnLButtonClick( ) method to handle


several interactive report display actions such as modifying the appearance of
controls and refreshing the report display.
The example application displays sales statistics in the monetary unit selected
by the user at run time. Then, the user can have the report recalculated and
displayed in another monetary unit by selecting a report control. The user is
presented with three selectable controls, TextControl, TextControl1, and
TextControl2, to cause the reports monetary controls to be displayed in either
US dollars, French Francs, or German Deutschmarks. The background color of

654

Actuate Foundation Class Reference

AcVisualComponent::OnLButtonClick method

the selected control is set to light gray and the background color of the other
controls is set to transparent:
Function OnLButtonClick( view As AcReportView, Shift As AcShiftKeyState, x
As Integer, y As Integer ) As Boolean
Dim theLink As AcReportController
' Set up object reference variables for frame and selectable controls
Dim aFrame As AcFrame
Dim USDTC As AcTextControl
Dim FFTC As AcTextControl
Dim DMTC As AcTextControl
' Get frame location
Set aFrame = GetContainer()
' Get location for each selectable control
Set USDTC = FindContentByClass("NewReportApp::Frame2::TextControl")
Set FFTC = FindContentByClass("NewReportApp::Frame2::TextControl1")
Set DMTC = FindContentByClass("NewReportApp::Frame2::TextControl2")
' Change background of controls to emphasize selected control
USDTC.BackgroundColor = TransparentColor
FFTC.BackgroundColor = LightGray
DMTC.BackgroundColor = TransparentColor
' Get access to Report Controller methods so you can issue Viewer
' commands to refresh pages
Set theLink = New AcReportController
theLink.AttachToThisReport( )
' Refresh the page -- calls GetText( ) method for controls
theLink.ShowNextPage()
theLink.ShowPrevPage()
Set return code to indicate that the event has been handled
OnLButtonClick = True
End Function

When the Actuate Viewer refreshes the display, the GetText( ) method for
every control is called. In this override to the GetText( ) method, the currency
controls value is recalculated based on the monetary unit selected by the user:
Chapter 3, AFC classes

655

AcVisualComponent::OnLButtonDblClk method

Function GetText( ) As String


Dim returnStr As String
Dim lenOfStr As Integer
Dim i As Double
Tests monetary unit selected by user; 0=Dollars 1=Francs 2=Marks
If NewReportApp::gVar = 1 Then
returnStr = Super::GetText( )
i = CDbl(returnStr)
i = i * mFFRate
GetText = "FF " & CStr(i)
ElseIf NewReportApp::gVar = 2 Then
returnStr = Super::GetText( )
i = CCur(returnStr)
i = i * mDMRate
returnStr = CStr(i)
GetText = "DM " & returnStr
Else
GetText = "$ " & Super::GetText
End If
End Function

Returns

True if the event is handled by the current object.


False if the event is not handled.

See also

AcVisualComponent::OnLButtonDblClk method
AcVisualComponent::OnLButtonDown method
AcVisualComponent::OnLButtonUp method

AcVisualComponent::OnLButtonDblClk method
Executes when users double-click the left mouse button on a visual object.

Syntax
Parameter

Function OnLButtonDblClk( view As AcReportView, Shift As AcShiftKeyState,


x As Integer, y As Integer ) As Boolean
view
The window the report is in.
Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. See OnLButtonClick for the codes.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.

656

Actuate Foundation Class Reference

AcVisualComponent::OnLButtonDown method

y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

By default, OnLButtonDblClk( ) calls OnActuate( ) to execute the objects


default action. For example, the default action for a video control would be to
play a video clip, and the code to do so should be in OnActuate( ).
In derived classes, you can override OnLButtonDblClk( ) to perform a
different task or to add functionality.
Using the Shift values, you can assign different actions to the different key and
left double-click combinations. You can also use the x- and y-coordinates to
execute different actions, depending on where the left double-click event
occurred. This technique is useful for graphs where you might want to do
something different depending on the region of the graph that was doubleclicked.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::OnLButtonDblClk method
AcVisualComponent::OnLButtonDown method
AcVisualComponent::OnLButtonUp method

AcVisualComponent::OnLButtonDown method
Executes when the user presses the left mouse button.

Syntax
Function OnLButtonDown( view As AcReportView, Shift As AcShiftKeyState,
x As Integer, y As Integer ) As Boolean
view
The window the report is in.
Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. See OnLButtonClick for the codes.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.

Chapter 3, AFC classes

657

AcVisualComponent::OnLButtonUp method

y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

The default implementation of OnLButtonDown( ) defines the following


actions:
User action

OnLButtonDown action

Press left mouse button on


object.

Select the object and deselect other


objects, if any were previously selected.

Press left mouse button and Shift


key on object.

Select the object, adding it to the set of


previously selected objects, if any.

Press left mouse button and Ctrl


key on object.

Toggle the selection state of the object.

Press left mouse button and Shift


+ Ctrl keys on object.

Toggle the selection state of the object.

In derived classes, you can override OnLButtonDown( ) to add further


processing. Typically, however, use OnLButtonDown( ) as designed to
perform the conventional actions.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::OnLButtonClick method
AcVisualComponent::OnLButtonDblClk method
AcVisualComponent::OnLButtonUp method

AcVisualComponent::OnLButtonUp method
Executes when users release the left mouse button on a visual object.

Syntax
Parameter

Function OnLButtonUp( view As AcReportView, Shift As AcShiftKeyState,


x As Integer, y As Integer ) As Boolean
view
The window the report is in.
Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. See OnLButtonClick for the codes.

658

Actuate Foundation Class Reference

AcVisualComponent::OnRButtonClick method

x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.
y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

By default, OnLButtonUp( ) does nothing. It returns False if the event is not


handled.
In derived classes, you can override OnLButtonUp( ) to perform a task when
users release the left mouse button. If you need to execute an action when the
left mouse button is down, use OnLButtonDown( ).
Using the Shift values, you can assign different actions to the different key and
left mouse up combinations. You can also use the x- and y-coordinates to
execute different actions, depending on where the left mouse up event
occurred. This technique is particularly useful for graphs where you might
want to do something different depending on the region of the graph.

Returns

True if the event is handled by the current object.


False is not handled by the current object.

See also

AcVisualComponent::OnLButtonClick method
AcVisualComponent::OnLButtonDblClk method
AcVisualComponent::OnLButtonDown method

AcVisualComponent::OnRButtonClick method
Executes when users click the right mouse button on a visual object.

Syntax
Parameter

Function OnRButtonClick( view As AcReportView, Shift As AcShiftKeyState,


x As Integer, y As Integer ) As Boolean
view
The window the report is in.
Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. See OnLButtonClick for the codes.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.

Chapter 3, AFC classes

659

AcVisualComponent::OnRButtonDblClk method

y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

By default, OnRButtonClick( ) does nothing. It returns False if the event is not


handled.
In derived classes, you can override OnRButtonClick( ) to perform a task when
users press and release the right mouse button on a single object. If you need
to execute different actions, depending on whether the right mouse button is
down or up, use OnRButtonDown( ) or OnRButtonUp( ) instead.
Using the Shift values, you can assign different actions to the different key and
right mouse click combinations. You can also use the x- and y-coordinates to
execute different actions, depending on where the right mouse click event
occurred.
In many Windows applications, the right mouse button is used for displaying
context menus. By default, Actuate displays context menus when the right
mouse down (OnRButtonDown) event occurs.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::OnRButtonDblClk method
AcVisualComponent::OnRButtonDown method
AcVisualComponent::OnRButtonUp method

AcVisualComponent::OnRButtonDblClk method
Executes when users double click the right mouse button on a visual object.

Syntax
Parameter

Function OnRButtonDblClk( view As AcReportView, Shift As AcShiftKeyState,


x As Integer, y As Integer ) As Boolean
view
The window the report is in.
Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. See OnLButtonClick for the codes.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.

660

Actuate Foundation Class Reference

AcVisualComponent::OnRButtonDown method

y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

By default, OnRButtonDblClk( ) does nothing. It returns False if the event is


not handled.
In derived classes, you can override OnRButtonDblClk( ) to perform a task
when users double-click the right mouse button. Using the Shift values, you
can assign different actions to the different key and right mouse double-click
combinations. You can also use the x- and y-coordinates to execute different
actions, depending on where the right mouse double-click event occurred.
In many Windows applications, the right mouse button is used for displaying
context menus. By default, Actuate displays context menus when the right
mouse down (OnRButtonDown) event occurs.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::OnRButtonClick method
AcVisualComponent::OnRButtonDown method
AcVisualComponent::OnRButtonUp method

AcVisualComponent::OnRButtonDown method
Executes when the user presses the right mouse button.

Syntax
Parameter

Function OnRButtonDown( view As AcReportView, Shift As AcShiftKeyState,


x As Integer, y As Integer ) As Boolean
view
The window the report is in.
Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. See OnLButtonClick for the codes.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.
y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Chapter 3, AFC classes

661

AcVisualComponent::OnRButtonUp method

Description

By default, OnRButtonDown( ) calls OnContextMenu( ), which displays the


context menu at the location where the mouse event occurred. You customize
the context menu by overriding AddMenuCommands( ).
In derived classes, you can override OnRButtonDown( ) to perform a different
task, or to add functionality. Using the Shift values, you can assign different
actions to the different key and right mouse down combinations. You can also
use the x- and y-coordinates to execute different actions, depending on where
the right mouse down event occurred.
In many Windows applications, however, the right mouse button is used
solely for context menus.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::OnRButtonClick method
AcVisualComponent::OnRButtonDblClk method
AcVisualComponent::OnRButtonUp method

AcVisualComponent::OnRButtonUp method
Executes when the user releases the right mouse button.

Syntax
Parameter

Function OnRButtonUp( view As AcReportView, Shift As AcShiftKeyState,


x As Integer, y As Integer ) As Boolean
view
The window the report is in.
Shift
A bit field that indicates if the Shift, Ctrl, or Alt keys were pressed at the time of
the event. See OnLButtonClick for the codes.
x
The horizontal position of the mouse cursor at the time of the event, measured
in pixels relative to the left of the view.
y
The vertical position of the mouse cursor at the time of the event, measured in
pixels relative to the top of the view.

Description

662

By default, OnRButtonUp( ) does nothing. It returns False if the event is not


handled.

Actuate Foundation Class Reference

AcVisualComponent::ResizeBy method

In derived classes, you can override OnRButtonUp( ) to perform a task when


users release the right mouse button. If you need to execute an action when the
right mouse button is down, use OnRButtonDown( ).
Using the Shift values, you can assign different actions to the different key and
left mouse up combinations. You can also use the x- and y-coordinates to
execute different actions, depending on where the right mouse up event
occurred.

Returns

True if the event is handled by the current object.


False if the event is not handled by the current object.

See also

AcVisualComponent::OnLButtonDown method
AcVisualComponent::OnRButtonClick method
AcVisualComponent::OnRButtonDblClk method

AcVisualComponent::ResizeBy method
Resizes a component by the given distances.

Syntax
Parameter

Sub ResizeBy( deltaWidth As Integer, deltaHeight As Integer )


deltaWidth
The amount, in twips, by which to resize the width of the component.
deltaHeight
The amount, in twips, by which to resize the height of the component.

Description
See also

The ResizeBy( ) method resizes a component by the given distances. Negative


amounts make the component smaller, positive amounts make it larger.
AcVisualComponent::ResizeTo method

AcVisualComponent::ResizeByConstrained method
Specifies the amount by which to resize the component.

Syntax
Parameter

Sub ResizeByConstrained( deltaX As Integer, deltaY As Integer )


deltaX
The amount, in twips, by which to resize the width of the component.
deltaY
The amount, in twips, by which to resize the height of the component.

Chapter 3, AFC classes

663

AcVisualComponent::ResizeTo method

Description

See also

The ResizeBy( ) method specifies the amount by which to resize the


component. This method also uses the values of the objects
CanIncreaseHeight, CanReduceHeight, MinimumHeight, and
MaximumHeight properties to determine the amount by which the object is
resized. Negative amounts make the component smaller, positive amounts
make it larger.
AcVisualComponent::ResizeToConstrained method

AcVisualComponent::ResizeTo method
Resizes a frame or control to the given size.

Syntax
Parameter

Sub ResizeTo( newWidth As Integer, newHeight As Integer )


newWidth
The new width of the component in twips.
newHeight
The new height of the component in twips.

Description
See also

The ResizeTo( ) method resizes a frame or control to the given size.


AcVisualComponent::ResizeBy method

AcVisualComponent::ResizeToConstrained method
Resizes the component to the given size.

Syntax
Parameter

Sub ResizeToConstrained( newWidth As Integer, newHeight As Integer )


newWidth
The new width of the component in twips.
newHeight
The new height of the component in twips.

Description

See also

664

The ResizeToConstrained( ) method resizes the component to the given size.


This method also uses the values of the objects CanIncreaseHeight,
CanReduceHeight, MinimumHeight, and MaximumHeight properties to
determine the amount by which the object is resized.
AcVisualComponent::MoveToConstrained method

Actuate Foundation Class Reference

AcVisualComponent::Searchable method

AcVisualComponent::Searchable method
Implements the Searchable property.

Syntax
Description

See also

Function Searchable( ) As AcSearchType


Searchable( ) specifies if and how users can search for a particular component
in the Viewer or view process. You can disable searching, enable searching, or
enable high performance searching using an indexed search.
AcVisualComponent::SearchAlias method

AcVisualComponent::SearchAlias method
Implements the SearchAlias property that appears on the Properties page of
the Component Editor.

Syntax
Description
Default
See also

Function SearchAlias( ) As String


SearchAlias( ) specifies the name to display in the Search dialog when users
create a search criteria for a particular control.
The objects class name.
AcVisualComponent::Searchable method

AcVisualComponent::Selectable method
Implements the Selectable property that appears on the Properties page of the
Component Editor.

Syntax
Description
Returns

Function Selectable( ) As Boolean


Selectable specifies if users can select the visual object in the Viewer.
True if the object is selectable.
False if the object is not selectable.

See also

AcVisualComponent::Searchable method

Chapter 3, AFC classes

665

AcVisualComponent::SetLinkTo method

AcVisualComponent::SetLinkTo method
Sets the LinkTo run-time variable based on values of data row variables.

Syntax
Description
Example

Sub SetLinkTo( row As AcDataRow )


Override the SetLinkTo method to cause the report to update the LinkTo runtime variable based on the values of data row variables.
In the following example, the report links to a web page showing a credit
application if the data row variable, CreditRank, indicates that the customer
has excellent credit. If CreditRank shows that the customer does not have
excellent credit, the report links to a web page giving financial advice:
Sub SetLinkTo( row As DataRow )
If CreditRank = "A" Then
LinkTo = "http://www.fs.credit/newcredit.html"
Else
LinkTo = "http://www.fs.advice/finan-advice.html"
End If
End Sub

AcVisualComponent::ShowInHTML method
Determines whether or not a control is visible in the HTML report.

Syntax
Description

Returns

Function ShowInHTML( ) As Boolean


Determines whether or not the current control is visible in an HTML report.
Override ShowIn HTML to prevent a control from appearing when generating
HTML. The default behavior is to return True, so that controls appear in the
HTML output.
True if the control is visible.
False if the control is not visible.

Example

The following example shows how to override ShowInHTML( ) to hide the


current control in HTML output. The control appears in printed reports and in
the Viewer:
Function ShowInHTML( ) As Boolean
ShowInHTML = False
End Function

666

Actuate Foundation Class Reference

AcVisualComponent::SplitVertically method

AcVisualComponent::SplitVertically method
Overridden by AFC classes to split visual objects vertically.

Syntax
Parameter

Sub SplitVertically( fragment1 As AcVisualComponent, fragment2 As


AcVisualComponent )
fragment1
The fragment to fit into the current flow.
fragment2
The fragment to fit into the subsequent flow.

Description

The SplitVertically( ) method throws a ClassProtocolError. It is overridden in


other AFC classes to split the object vertically so that it can be spread across
multiple flows.
Before calling SplitVertically( ) you must successfully call the objects
FindLowestSplit( ) or ComputeLowestSplit( ) method.
A master object is an object that has been split across multiple pages. A slave
object is a fragment that is produced after an object has been split.
When overridden, SplitVertically( ) sets the values of the arguments to two
slave objects. The first object is placed in the current flow and the second object
is placed in a subsequent flow.
If the original object is neither a master or a slave object, it must be first be
converted to a master object. The two returned objects become its slaves.
If the original object is a master object, SplitVertically( ) must return a
ClassProtocolError.
If the original object is a slave object, SplitVertically( ) must return that
object in either the first or the second argument.

AcVisualComponent::StatusText method
Returns the value of GetLinkTo( ) if there is a hyperlink, or the help text
associated with this component.

Syntax
Description

Function StatusText( ) as String


StatusText( ) returns the value of the current components hyperlink, if any, or
the help text associated with the component. This is useful for users viewing
.rois. You can display the link for a particular control when the cursor is placed
on the control in the Viewer, or display help text for the control.

Chapter 3, AFC classes

667

AcVisualComponent::TargetWindowName method

Returns

The value of the hypertext link if there is one, help text if there is any, or the
empty string if there is no hyperlink or help text.

AcVisualComponent::TargetWindowName method
Implements the TargetWindowName property.

Syntax
Description

Returns

Function TargetWindowName( ) As String


Override TargetWindowName( ) to specify a target window name for the
Actuate LRX to display the new report. When you hyperlink from the current
report to a new report, you can display the new report in the same window or
in a different window. If you want the new report to display in a different
window, set TargetWindowName to the name of the window. If the target
window name is blank, the new report displays in the current window.
The name of the target window.
Blank if the report is to be displayed in the current window.

AcVisualComponent::VerticalPosition method
Returns the value of the VerticalPosition property.

Syntax
Description

Function VerticalPosition( ) As AcVerticalPosition


The VerticalPosition( ) method returns the value of the VerticalPosition
property.

AcVisualComponent::VerticalSize method
Returns the value of the VerticalSize property.

Syntax
Description

668

Function VerticalSize( ) As AcVerticalSize


The VerticalSize( ) method returns the value of the VerticalSize property.

Actuate Foundation Class Reference

Class AcXMLDataVisitor

Class AcXMLDataVisitor
AcXMLDataVisitor is a tools class.

Description

AcXMLDataVisitor contains methods to build XML elements, attributes, and


text for Actuate report components and then create an XML file to be
processed by XML applications. Most of the time, you tell Actuate how to
generate XML for a component such as a report, section, frame, or control by
completing the components XML Data property group. Actuate generates an
XML element, attribute, or text based on the value of the XMLType property in
the XML Data group. When you save the report as an XML file on the client,
Actuate builds an XML file containing the generated XML. The
AcXMLDataVisitor class provides a way to control XML generation.

Subclassing AcXMLDataVisitor
To perform custom XML generation:
1 Open your report design in e.Report Designer Professional.
2 Set up the XML data visitor class:
1 Create a new Actuate Basic source file.
2 Create a new subclass of the AcXMLDataVisitor class and instantiate it.
3 Trigger XML generation.
Call the GenerateXML method specifying the name of the structure
component where you want the generation to start. For example, if you
want to generate XML for all components in the report, pass the name
of the report. If you want to generate XML for a group section, pass the
name of the group section.
3 Provide custom logic to generate XML. For each component that needs
custom XML generation:


Set the XMLType property to XMLCustom.

Override the GenerateXML method on the component. The XML data


visitor class provides methods to create an XML element, attribute, and
text. Or, you can use the Actuate Basic Print statement to write XML to
the channel directly. Call the appropriate methods as required.

Ordering and verifying XML


AcXMLDataVisitor provides methods to create elements, attributes, and text.
The order that you add elements, attributes, and text must be consistent with
the sequence in the Document Type Definition (DTD) used by your web

Chapter 3, AFC classes

669

Class AcXMLDataVisitor

browser to interpret the XML file. Actuate rules for the order of adding XML
data are:


The current element must have all its attributes before you add a nested
element, text, or end the element.

Before you add an attribute, you must open the element by calling
StartElement and add any required attributes by calling GenerateAttribute.

Actuate does not perform syntax checking on the generated XML.

Variables
Variable

Type

Description

Level

Integer

The current level of indentation within the XML file.


Each new element starts a new indentation level.

TabSize

Integer

The number of spaces that each level in an XML file


is indented. The default is 4 spaces. You can view
the generated XML file more easily by using the
default value. To improve performance and reduce
XML file size, set the TabSize to 0.

XMLFile

Integer

This is the channel number for the XML file. You


write to this channel number using the Actuate
Basic Print statement.

Methods

670

Method

Type

Description

EndElement( )

N/A

Finishes generation for a custom


XML element.

GenerateAttribute( )

N/A

Adds one attribute to an element.

GenerateEmpty
Element( )

N/A

Generates an empty element.

GenerateText( )

N/A

Builds the text value for an element.

GenerateXML( )

AcXML
Visitor

Starts XML generation.

StartElement( )

N/A

Starts generation for a custom XML


element.

Actuate Foundation Class Reference

AcXMLDataVisitor::EndElement method

AcXMLDataVisitor::EndElement method
Completes an XML element initiated with the StartElement( ) method.

Syntax
Parameter
Description
See also

Sub EndElement( tag As String )


tag
The name of the element.
Call EndElement( ) method to finish an XML element started using the
StartElement( ) method. The generated XML has the form </tag>.
AcXMLDataVisitor::StartElement method

AcXMLDataVisitor::GenerateAttribute method
Adds an attribute to the current element.

Syntax

Sub GenerateAttribute( attrib As String )


or
Sub GenerateAttribute( attrib As String, value As String )

Parameter

attrib
The name of the attribute.
value
The value of the attribute.

Description

See also

Call GenerateAttribute( ) to add an attribute to the current element, and,


optionally add a value for the attribute. All XML attributes must have values,
even if the value is a blank string. The generated XML has the form
attrib=value. Before you add an attribute, you must open the element by
calling the StartElement( ) method. If either the element is not open or the
attribute name is empty, the method does not add the attribute.
AcXMLDataVisitor::StartElement method

AcXMLDataVisitor::GenerateEmptyElement method
Builds an element with no content.

Syntax

Sub GenerateEmptyElement( tag As String )

Chapter 3, AFC classes

671

AcXMLDataVisitor::GenerateText method

Parameter
Description

tag
The name of the element.
Call GenerateEmptyElement( ) to build an element with the form <tag/>.

AcXMLDataVisitor::GenerateText method
Adds text to the current element.

Syntax
Parameter
Description

See also

Sub GenerateText( text As String )


text
The value of the text.
Call GenerateText( ) to add text to the current element. The text to add must
already be properly formatted for XML. If it is not, call the Actuate Basic
ConvertToXML function to do the conversion before you call GenerateText.
For information about ConvertToXML, see the Actuate Basic Language
Reference.
AcXMLDataVisitor::GenerateAttribute method
AcXMLDataVisitor::StartElement method

AcXMLDataVisitor::GenerateXML method
Generates custom XML.

Syntax

Function GenerateXML( fileName As String, root As AcReportComponent,


encoding As String ) As Boolean
or
Function GenerateXML( channel As Integer, root As AcReportComponent ) As
Boolean

Parameter

channel
The Actuate Basic channel to be opened for output.
encoding
The encoding to use for opening the output file. To use the default encoding,
specify an empty string.
fileName
The name of the XML file.

672

Actuate Foundation Class Reference

AcXMLDataVisitor::StartElement method

root
The name of the highest level component for which XML is to be generated.

Description

Returns

Call GenerateXML( ) to generate the XML file. The form of GenerateXML that
accepts a filename calls the second form of GenerateXML( ) that accepts a
channel as input. The channel number is available in the XMLFile variable.
True if the output file is generated.
False if the output file is not generated.

AcXMLDataVisitor::StartElement method
Creates an element.

Syntax
Parameter
Description

Sub StartElement( tag As String )


tag
The name of the element.
Call StartElement( ) to begin a new XML element. Before you add attributes,
text, or nested elements to the element, you call StartElement. To create a
nested element:
1 Create the outer element by calling StartElement.
2 Build the outer element by adding attributes and text.
3 Create the inner element by calling StartElement.
4 Add attributes and text to the inner element.
5 Finish the inner element by calling EndElement.
6 Finish the outer element by calling EndElement.

Chapter 3, AFC classes

673

AcXMLDataVisitor::StartElement method

674

Actuate Foundation Class Reference

Index
Symbols
& (ampersand) in menu commands 462
* as overflow character 81
. (dot) notation 196
[] in value expressions 195, 196

Numerics
2-D graphs
specifying 65
3-D graphs
bar grouping constants for 61
specifying 65

A
Abandon method 508
abstract base classes 4
AC_VIEWSERVER_EXCELOUTPUTDIR
variable 268
AcAutoSplit data type 44
AcBaseFrame class 88
subclassing 89
AcBasePage class 101
AcBitmapStyle data type 45
AcBrowserScriptingControl class 103
AcBTree class 107
Access Control Lists (ACLs)
changing 513
customizing 502
generating 553
getting 448, 491, 513, 517, 546
overview 480, 501
access keys (menus) 462
access restrictions 480, 501
accessing online help xxix
AcChartAxisOrigin data type 45
AcChartBarGrouping data type 45
AcChartBarOrientation data type 46
AcChartBorderStyle data type 46
AcChartHLCBarStyle data type 47
AcChartLegendPosition data type 47
AcChartLinePen data type 48
AcChartLineStyle data type 48

AcChartPointLabelStyle data type 49


AcChartRoundTo data type 49
AcChartTickStyle data type 50
AcChartType data type 50
AcChartUnitType data type 51
AcChartXAxisPosition data type 51
AcChartXLabelStyle data type 52
AcChartXValueSet data type 52
AcChartYLabelStyle data type 53
AcChartYOrientation data type 53
AcCollection class 138
AcColor data type 54
AcComponent class 142
AcConditionalSection class 147
AcConnection class 150
AcControl class 153
subclassing 153
AcControlValueType data type 55
AcCurrencyControl class 161
AcCursorShape data type 55
AcDataAdapter class 162
subclassing 163
AcDataBaseSource class 178
AcDataControl class 183
AcDataFilter class 189
AcDataFrame class 190
subclassing 191
AcDataRow class 192
subclassing 192
AcDataSection class 199
subclassing 201
AcDataSource class 211
AcDateTimeControl class 213
AcDB2Connection class 219
AcDBConnection class 214
AcDBCursor class 222
AcDBStatement class 234
AcDetailGraph class 250
AcDoubleControl class 253
AcDynamicTextControl class 254
AcEllipseControl class 266
AcExcelApp class 268
AcExcelBorderName data type 57

Index

675

AcExcelBorderType data type 56


AcExcelCell class 272
AcExcelColumn class 273
AcExcelHorizontalAlignment data type 57
AcExcelRange class 275
AcExcelRow class 286
AcExcelVerticalAlignment data type 58
AcExcelWorkbook class 288
AcExcelWorksheet class 292
AcFlow class 297
AcFlowPlacement data type 58
AcFont data type 59
AcFrame class 305
subclassing 307
AcGraph class 315
AcGraphAxisStyle data type 60
AcGraphBarGrouping data type 61
AcGraphBarOrientation data type 61
AcGraphBorderStyle data type 62
AcGraphLabelStyle data type 62
AcGraphLegendPosition data type 63
AcGraphLineStyle data type 63
AcGraphPoint data type 64
AcGraphPointLabelStyle data type 64
AcGraphTickStyle data type 65
AcGraphType data type 65
AcGraphXAxisPosition data type 66
AcGraphXValueSet data type 66
AcGraphYAxisPosition data type 67
AcGraphYOrientation data type 67
AcGroupOnType data type 67
AcGroupSection class 342
AcHLCGraph class 353
AcHtmlAppletControl class 357
AcHtmlBackgroundStyle data type 68
AcHtmlFrame class 362
AcHtmlFrameStyle data type 68
AcHtmlHorizontalAlignment data type 69
AcHtmlImageAlignment data type 70
AcHtmlImageControl class 365
AcHtmlImageMapType data type 71
AcHtmlObjectControl class 369
AcHtmlPlugInControl class 370
AcHtmlPlugInUnits data type 71
AcHtmlReport class 375
AcHtmlRuleControl class 381
AcHtmlTableCaptionStyle data type 71
AcHtmlTableStyle data type 72
676

A ctu ate Fo und ation Cla ss Re fe re nc e

AcHtmlTextAlignment data type 72


AcHtmlTextVertAlignment data type 72
AcHtmlTocStyle data type 73
AcHtmlUnits data type 73
AcImageControl class 383
AcImageEmbedType data type 74
AcInformixConnection class 386
AcInteger class 388
AcIterator class 389
AcLabelControl class 395
AcLeftRightPageList class 396
AcLinearFlow class 398
AcLineControl class 400
AcLinePen data type 74
AcLineStyle data type 75
AcList class 402
ACLs See Access Control Lists
AcMargins data type 75
AcMemoryBuffer class 406
AcMemoryDataSorter class 410
AcMSSQLConnection class 413
AcMultipleInputFilter class 416
subclassing 417
AcObjectArray class 420
AcODBCConnection class 423
AcOffset data type 76
AcOleContainerControl class 427
AcOleControl class 431
AcOracleConnection class 433
AcOrderedCollection class 435
AcPage class 439
AcPageList class 443
subclassing 446
AcPageNumberControl class 452
AcPageNumberStyle data type 76
AcParallelSection class 458
AcPoint data type 77
AcPopupMenu class 460
AcProgressConnection class 465
AcProgressSQL92Connection class 470
AcQuerySource class 474
AcRecordBuffer class 477
AcRectangle data type 78
AcRectangleControl class 478
AcReport class 480
AcReportComponent class 500
subclassing 504
AcReportSection class 528

AcReportView class 537


AcRounding data type 78
AcSearchType data type 79
AcSection class 542
AcSequentialSection class 557
AcShadow data type 79
AcShiftKeyState data type 80
AcSimplePageList class 562
AcSingleInputFilter class 563
AcSingleList class 568
AcSingleListIterator class 570
AcSize data type 80
AcSqlQuerySource class 571
AcStoredProcedureSource class 574
AcSubPage class 578
AcSummaryGraph class 583
AcSybaseConnection class 587
AcTextClipStyle data type 80
AcTextControl class 590
AcTextJustify data type 81
AcTextPlacement data type 82
AcTextQuerySource class 591
AcTextualControl class 595
AcTextVerticalPlacement data type 82
AcTitleBodyPageList class 596
ActiveCursor constant 55
ActiveX controls
adding to reports 369
AcTOCNodeType data type 83
AcTopDownFlow class 598
ActualPageCount constant 76
ActualPageCount type 454
ActualPageNofM constant 76
ActualPageNofM page number type 454
ActualPageNumber constant 76
ActualPageNumber type 454
Actuate Basic
issuing viewer commands 524
programming prerequisites 4
Actuate Foundation Classes
alphabetical listing 87
data types 42
documentation overview xxvii
inheritance hierarchy 2
library overview 1
summary of 439
Actuate LRX xxv

setting target window for 668


Actuate product summary xxiii
Actuate Viewer See Viewer
Actuate web site xxv
AcTwips data type 83
AcVisitor class 600
AcVisualComponent class 621
subclassing 622
AcWordWrapStyle data type 85
AcXMLDataVisitor class 669
AcXMLType data type 86
ad hoc conditions 593
ad hoc parameters 476, 572, 593
AddCascade method 461
AddContent method
AcReportComponent 508
AcSection 548
AddFrame method 299
AddHeader method 299
AddItem method 461
AddMenuCommands method 632
AddPoint method
AcDetailChart 248
AcHLCGraph 354
AddRow method 165
AddRowToBuffer method 407
AddSeparator method 462
AddSeriesPoint method
AcDetailChart 248
AcDetailGraph 251
AddSortKey method
AcDataAdapter 165
AcSqlQuerySource 475
AddSubpage method 300
AddToAdjustSizeList method 91
AddToHead method
AcList 403
AcOrderedCollection 435
AddToTail method 436
AddWorkbook method 268
AddWorksheet method 288
adhoc conditions 592
AdjustContentVerticalGeometry method 92
AdjustFooter method 300
AdjustSize method 634, 635
AdjustVerticalGeometry method 635
AFC See Actuate Foundation Classes

Index

677

After property 201


After slot (Design Editor)
adding components 207
creating subtotals with 342
getting components in 205
referencing components in 200
Age_ArchiveBeforeDelete variable 482
Age_DeleteDependencies variable 482
Age_NoExpiration variable 482
Age_NoOptions variable 482
aggregate controls
creating 185, 563
defined 160, 184
processing values 200
testing for 188
Aging_Options variable 483
aliases
as typedefs 42
database 195
order of evaluation for 197
aligning browser code output 105
alignment constants
graph legends 63
HTML documents 69, 70
images 70
narrow frames 58
text 72, 81, 82
Alignment property
AcHtmlAppletControl 359
AcHtmlImageControl 366
AcHtmlPlugInControl 372
AcHtmlRuleControl 382
AcLinearFlow 399
AcTopDownFlow 599
Alignment variable
AcHtmlAppletControl 358
AcHtmlImageControl 365
AcHtmlPlugInControl 371
AcHtmlRuleControl 381
AcLinearFlow 398
AcTopDownFlow 599
AllocateCursor method 236
allocating database cursors 231, 236, 245
AlternateText property 104
AcHtmlAppletControl 359
AcHtmlImageControl 366
getting value for 105
AlternateText variable
678

A ctu ate Fo und ation Cla ss Re fe re nc e

AcHtmlAppletControl 358
AcHtmlImageControl 365
AltKey constant 80
ampersand (&) in menu commands 462
analysis tools (third-party) xxiii
AnalysisType property 623
annual costs 168
AnyClass type 138
AppletName property 359
AppletName variable 358
applets
aligning 70, 358, 359
attaching to reports 357, 369
defining parameters for 360
providing alternate text for 358
providing specialized behavior for 615
sizing 358, 359
application programming interfaces xxiii
applications
sample xxvi
ApplyVisitor method 509
AppStartingCursor constant 56
archiving 481, 496
changing rules for 487
area graphs 65, 332
arrays
creating 420
expanding 422
resizing 421
setting object location 421
ArrowCursor constant 55
AsColumnHeader constant 203
AsPageHeader constant 203
aspect ratios 45
attaching
applets to reports 357, 369
plug-ins to reports 370
to databases See connections
AttachReport method 525
AttachToThisReport method 524
auto-archive rules
changing 487
customizing 481
setting 496
Autofit method 292
automatic sorting 531
automating reporting tasks xxiv
automation servers 427

AutoScrollbar constant 104


AutoSort constant 532
AutoSplitVertical property
AcDynamicTextControl 255
AcFrame 308
AutoValueControl constant 55
averages 353
axes labels
adding to graphs 252, 334, 356
customizing 321, 324, 336, 337
orientation 67
specifying number 321, 324
styles 62, 322, 324
axes values
border styles 326
computing for overlay graphs 335
displaying 60, 66, 67, 320, 324
rotating 323, 326
setting range limits 322, 325, 335
specifying 64, 66
tick mark styles 65, 322, 325
AxisColor property 316
AxisColor variable 316
AxisTitleFont property 317
AxisTitleFont variable 317

B
BackgroundColor property
AcBaseFrame 90
AcFlow 298
AcFrame 306
AcGraph 316
AcHtmlFrame 362
AcHtmlReport 377
AcTextualControl 595
BackgroundColor variable
AcBaseFrame 89
AcFlow 298
AcGraph 316
AcHtmlReport 375
BackgroundImage property 377
BackgroundImage variable 375
BackgroundIsClear property 316
BackgroundIsClear variable 316
backgrounds
Excel spreadsheets 276, 280
flows 298

frames 89, 90, 306, 362


graphs 316
images as 68
BackgroundSound property 377
BackgroundSound variable 375
BackgroundStyle property 377
BackgroundStyle variable 375
BalanceFlows property 101
BalloonHelp method
AcControl 155
BalloonHelp property 154
bar graphs
creating 65
display constants 61
grouping data in 331
setting bar orientation 61, 331
BarGrouping property 331
BarGrouping variable 331
BarOrientation property 331
BarOrientation variable 331
base classes 4
BaseFontSize property 377
BaseFontSize variable 375
Before property 201
Before slot (Design Editor)
adding components 208
getting components in 205
referencing components in 200
BindColumn method 224
BindDataRow method 179
BindParameter method
AcDBCursor 225
AcDBStatement 237
BindStaticParameters method 180
BindToFlow method 92
bitmap style constants 45
BMP files 383
BodyPage property 596
Bold property 59
Border property
AcBaseFrame 90
AcFlow 298
AcFrame 306
AcHtmlFrame 362
AcImageControl 384
AcTextualControl 595
border style constants 62

Index

679

Border variable
AcBaseFrame 89
AcFlow 298
BorderColor property 201
BorderDarkColor property 202
borderless graphs 62
BorderLightColor property 202
BorderLineWidth property 202
borders
Excel spreadsheets 276, 280
flows 298
frame origins 312, 313
frame size 313
frame styles 89, 90
graphs 62
HTML tables 201, 306, 362
images 384
bounding rectangles See enclosing rectangles
brackets in value expressions 195, 196
browser code
adding 103, 312
debugging 104
BrowserClipping property 104
BrowserCode method 105
BrowserCode property 104
getting value for 105
buffering data rows 406, 477
buffers
adding specified data 407
creating memory 406
creating record 477
data sorter for 410
flushing 171, 406, 407, 408, 477
getting contents 408
getting first row position 409
Build method 510
BuildFromRow method 510
building reports
factory protocol for 441
nested 459, 532, 557
overview 480
procedure described 480, 529
with method calls 510, 512, 523
BuildText method 260
bulleted lists 69

680

A ctu ate Fo und ation Cla ss Re fe re nc e

C
calculated variables 197
CalculateEndingValue method 333
CalculateRangeUnit method 333
CalculateStartingValue method 333
CalculateTickIntervalUnit method 334
calculations 195, 250
candlestick graphs 65
CanExpand property 441
CanFitFrame method 301
CanFitHeight method 301
CanIncreaseHeight property 623
CanModifyOrderByClause property 591
CanMoveUp method 635
CanMoveUp property 623
CanReduceHeight method 636
CanReduceHeight property 623
CanSeek method 166
CanShrink property 101
CanSortDynamically method 166, 593
CanSplitVertically method 636
CascadeSecurity property 546
cascading menus 461
case statements 147
categories
defined 583
numbering 337
CategoryKey property 584
CategoryLabel property 584
CellPadding property 202
CellSpacing property 202
centering frames 58
centering HTML objects 69
centering images 70
centering text 72, 81, 82
changing
access lists 513
auto-archive rules 487
graphical elements at runtime 266
labels at runtime 395
private classes 4
report structures 4
channels xxiv
charts See graphs
charts. See graphs 247
CheckMenuItem method 463

checkpoints 451
circles 266
class library 1
data types defined in 42
classes
Actuate inheritance hierarchy 2
caution for changing private 4
instantiating abstract base 4
summary of 439
clearing
data buffers 171
memory buffers 406, 407, 408
record buffers 477
ClipLeading constant 81
clipping
browser output 104
images 45
text 80, 82
ClipToControlSize constant 104
ClipTrailing constant 81
cloning OLE objects 432
CloseConnection method 167
CloseCursor method 226
CloseOrDeactivate method 428
CloseValueExp property 353
closing
data adapters 170
data streams 533
database connections 151, 167, 549
database cursors 226
OLE applications 428
report files 494
cluster bar graphs 61
CodeBase property 359
CodeBase variable 358
collection classes 29
collections
accessing items 139, 420
adding items 108, 110, 435, 436
assigning object references for 138
controlling item order 435
counting items 141, 539
creating 107, 138
defined 138
defining list interface for 402, 568
getting contents 141
getting object keys 109

getting specific items 108, 109, 436, 437,


539
iterating through 139, 389, 570
removing items 139, 140, 437, 438
color constants 54
Color property 59
colors 92
columns 192
accessing values 194
adding lookup values 563
binding to variables 224
containing two key values 412
counting 242
creating multicolumnar layouts 101, 578
defining 193
displaying substrings 343
getting values 194
mapping to rows 195
referencing with aliases 195
reordering 475
setting values 198
sizing for HTML reports 363, 364
sorting on key properties 342
CommittedToFlow method 548
Compare method
AcMemoryDataSorter 411
AcSingleList 568
CompareKeys method 412
comparing
data 411
objects in lists 568
CompatibleSort constant 532
component classes 142, 621
components
accessing contents 515
accessing for special processing 509, 600
adding 500, 508
adding to sections 147, 542, 557
building with data rows 510
building with no data rows 510
checking type 521
controls vs. 153
counting content items in 514
creating 145
getting associated data stream 515
getting associated report 518
getting contents 515, 516

Index

681

components (continued)
getting first usage 517
getting names 143
getting top-level frame 516
implementing security 501
instantiating with conditions 147, 148
pinning/unpinning 508, 512, 523
providing specialized behavior for 600,
611
removing from containers 508, 510, 511
searching for 79, 622, 665
testing contents 520, 521
testing for in slots 144
testing for type 144
testing for visual 521
ComputeCategoryRange method 585
computed columns 343
ComputeLabels method 334
ComputeLowestSplit method 636
ComputeMinMax method 335
ComputeYOverlayMinMax method 335
concatenation 417
conditional expressions 148, 149
conditional section components 147
conditional sections
creating 147, 148
defined 543
providing specialized behavior for 611
ConditionIsTrue method 148
ConfigKey property 214
Connect method 151
connection classes
instantiating 173
overview 25
connection components
adding server-specific 219, 386, 413, 423,
433, 465, 470, 587
adding to reports 150, 214
Connection property
AcDataAdapter 163
AcSection 546
connections
closing 167, 549
current state 150
database-specific 219, 386, 413, 423, 433,
465, 470, 587
defining for data adapters 163, 172, 176

682

A ctu ate Fo und ation Cla ss Re fe re nc e

defining for multiple data streams 544


error handling 152
establishing 151
failing 215, 216, 217
getting associated adapter 171
getting associated cursor 229
getting associated data source 181
getting report-specific 513
opening 173, 551
setting core protocol for 150, 214
setting run time properties for 214
terminating 151
testing 151
usage overview 529, 544
ConnectionString property 423
ConnectionString variable 423
constant controls 159
adding to reports 395, 400, 478
defined 153
placing in reports 305
constants 42
constructors 144
Container variable 504
containers
adding objects 142, 508
collections vs. 138
for OLE objects 427
getting components in 638, 641
getting content 144
getting references 511, 514
providing specialized behavior for 617
removing items 508, 510, 511
removing transient objects 143
testing for 520
containment structures 500
Contains method 404
content components
adding 508
getting 516
getting number of 514
providing specialized behavior for 611
content hierarchy 445
Content property
AcDataSection 202
AcParallelSection 459
AcReport 484
AcSequentialSection 558

Content slot (Design Editor)


adding components 208
creating nested groups 342
referencing components in 200
ContentList variable 545
contents page
adding entries 83, 188, 348, 523
adding to HTML documents 73
getting entries 519
getting page numbers 517
context menus
adding items 461, 632
adding separators 462, 633
checking items 463
creating 460
defaults 462
displaying 464, 649, 662
displaying help text for 643, 645, 652, 667
enabling/disabling items 463
initializing 463
context-sensitive help xxviii
ContiguousPageFooter property 202
ContiguousPageFooter variable 201
control classes 17, 153
ControlKey constant 80
controls
adding to frames 91, 93, 94, 260, 261, 262,
263, 264, 265, 311, 312, 313, 314, 635, 636,
637, 638, 639, 640, 641, 644, 645, 646, 648,
664, 667, 668
adding to report designs 154
adjusting size of 634
assigning values 55
changing properties for 156, 184
creating 98, 153
data categories described 159
defined 153
determining type 188
displaying hints for 154, 155
displaying in HTML documents 666
finding specific 93, 664
font options and HTML 60
getting page 641
getting references for 95
getting values 155, 157
hiding 666
mixing multiple in single frame 191

moving 646, 647


moving to different frames 97
providing specialized behavior for 611
removing from frames 91, 93, 94, 260, 261,
262, 263, 264, 265, 311, 312, 313, 314, 635,
636, 637, 638, 639, 640, 641, 644, 645, 646,
648, 664, 667, 668
resizing 664
setting values 159
ConvertCategoryKey method 585
Copy method 436
copying data 224, 538
cost-accounting example 168
counting
columns 242
data rows 519
parameters in SQL statements 244
report pages 455, 456
CREATE TABLE queries 234
CreateClone property 432
CreateEmptyCategories method 585
CreateNode method 108
creating
collections 138
controls 98, 153
database cursors 222, 236
hierarchical object lists 107
HTML tables 69, 72, 199
hyperlinks 524
memory buffers 406
persistent objects 145
record buffers 477
singly linked lists 568
textual queries 591
top-level sections 493
transient objects 145
creating report-specific online help xxxi
CrossCursor constant 55
cross-hair cursors 55
currency controls
adding 161
providing specialized behavior for 612
current page 445, 448
current page number
getting 456, 457
setting 452
current row 550, 555

Index

683

cursor constants 55
cursor shapes 55, 637
CursorParameter variable 575
cursors (SQL)
accessing 222
allocating 231, 236, 245
assigning values to parameters 226
binding to data rows 179
binding to SQL parameters 180
closing 226
creating 222, 236
defined 222
defining parameters for 225, 237
deleting 222
fetching data rows 228
getting associated connection 229
getting associated data source 181
getting database statements for 230
opening 182, 231, 245
example for 231, 236, 245
overview 472
returning data rows 178
testing if opened 230
CursorShape method 637
CursorShape property 624
custom browser code
adding 103, 312
debugging 104
custom reports 4
custom run-time sorting 166
CustomDHTMLFooter method 312
CustomDHTMLFooter property property
AcFrame 308
CustomDHTMLHeader method 312
CustomDHTMLHeader property 308
customizing data filters 189
customizing sort order 166
CustomRequesterName property 484
CustomXLabels method 252
AcDetailChart 249
CustomYOverlayLabels method 335

D
DashDotDotLine constant 74
DashDotLine constant 74
DashLine constant 74

684

A ctu ate Fo und ation Cla ss Re fe re nc e

data adapters
adding data rows 165
advancing row position 174, 175, 176
closing 170
creating 162, 211, 419
defining connections for 163, 172, 176
enabling dynamic ordering 166
getting connections for 171
getting data randomly 166, 406, 477
getting data rows 167, 172
getting row position 172
input filters for 189
opening connections for 173
sorting defaults 166
starting 176
testing for open 163, 172
usage overview 417
data controls
adding 305, 595
assigning values 55, 158, 159, 186
building if no data rows 183
building with data rows 184, 185
contents categorized 184
defined 153
for date and time values 213
for graphical elements 266, 383, 400, 478
for graphical elements in HTML
documents 365, 381
for graphs 250, 315, 353, 583
for monetary values 161
for numbers 253, 388
for text strings 590
formatting 157, 187
getting values 95, 157
providing specialized behavior for 612
retrieving sort key information 187
returning formatted values 192
setting display values for 183
setting sample values for 186
values defined 183
data extraction 604
data filter classes 189, 416, 563
data filters
closing input adapters 170
creating 189, 410, 563
creating for multiple sources 416
creating input streams for 419

data filters (continued)


customizing 167, 173, 189, 192, 417
defined 162
fetching data rows 565
getting associated adapter 566
implementing algorithm for 416
instantiating adapters 566
setting input adapter 567
supporting random access 406, 477
data groups 67, 345
data packets 588
data points
adding to graphs 248, 251, 318, 354
assigning values to 319
axes assignment 66
getting user-initiated hits 340
high-low values only 353
labeling 64
properties and variables 318
summary values only 583
type constants for 64
unsummarized 250
data row variables 194, 197
data rows 305
accessing nested objects in 196
accessing values 194
adding 165
associating with data adapters 163
binding to columns 224
binding to database cursors 179
buffering 406, 477
building data controls from 184, 185
building frames from 190
building with queries 192
comparing 411
counting 519
customizing content retrieval 563
defined 162, 192
defining characteristics 192
getting 167, 172, 550, 565
getting randomly 166, 406, 477
getting sets of 232
getting values at runtime 195
getting with conditions 417
getting with cursors 178, 222, 228
grouping related 342
inserting new 522

instantiating 173
mapping to high-low data points 353
mapping to summary data points 583
mapping to unsummarized data
points 250
nesting values 342, 343
reading 197, 211, 212
retrieving from databases 574
returning adapter position 172
setting number of retrievable 163
data section components 199, 342, 528
data sections
creating 199
defined 199
getting components in 205
getting current header or footer 207
getting first page header or footer 206
instantiating components for 207, 208, 209,
210
providing specialized behavior for 613
with no data rows 210
data series (graphs)
defined 583
defining number of 318
getting user-initiated hits 339
setting colors for 319
data sorter component 410
data sources
closing input sources 170
connecting to 25
containing formatted data 192
customizing 167, 173, 192
defined 162
getting associated connections 181
getting associated cursors 181
monitoring state 211, 212
reading from 178, 211, 574
starting data adapters for 176
data stream classes 30
data streams
associated with reports sections 343
closing 533
connecting to 514, 544
creating for database cursors 178
creating for SQL queries 195, 474, 571
creating for stored procedures 574
defined 162

Index

685

data streams (continued)


defining adapters for 162, 211
filtering 189, 410, 563
filtering multiple sources 416
getting 515, 534
instantiating 534
opening 536
returning formatted data 192
setting input position 163
usage overview 529
data types
associating with stored procedures 226,
227, 239
DB2 database mappings 220
Excel spreadsheets 284
for data controls 183
for stored procedures 228, 240
Informix database mappings 387
MS-SQL database mappings 414
ODBC database mappings 424
Oracle database mappings 434
program-specific 42
Progress database mappings 467
Progress9 database mappings 471
setting return value for 228, 240
Sybase database mappings 588
database cursors
accessing 222
allocating 231, 236, 245
assigning values to parameters 226
binding to data rows 179
binding to SQL parameters 180
closing 226
creating 222, 236
defined 222
defining parameters for 225, 237
deleting 222
fetching data rows 228
getting associated connection 229
getting associated data source 181
opening 182, 231, 245
example for 231, 236, 245
example forcursors (SQL)
opening
example for 236, 245
overview 472

686

A ctu ate Fo und ation Cla ss Re fe re nc e

returning data rows 178


returning database statements for 230
testing if opened 230
Database property 470
database statement objects
adding 234
initializing 218, 246
database statements
allocating cursors for 236
creating 234
defined 234
getting 230
overview 472
DatabaseEnvironment property 386
DatabaseEnvironment variable 386
DatabaseList parameters 466
DatabaseList property 465
DatabaseList variable 465
databases xxiv, 468
accessing DB2 219
accessing Informix 386
accessing MS-SQL 413
accessing ODBC 423
accessing Oracle 433
accessing Progress 465, 470
accessing Sybase 587
connecting to See connections
getting SQL-specific errors 217
mapping columns to rows 195
retrieving data rows 178, 222, 574
supported 150
DataRow property 163
DataSetCount property 318
DataSetCount variable 318
DataSource property
AcDB2Connection 219
AcODBCConnection 423
DataSource variable
AcDB2Connection 219
AcODBCConnection 423
DataStream property 531
DataValue variable
AcCurrencyControl 161
AcDateTimeControl 213
AcDoubleControl 253
AcIntegerControl 388
AcTextControl 590

date controls 213


providing specialized behavior for 613
Date$() function 213
DateExp property 353
dates 333
DateTime control 213
DB_BadParamTypeForFunc constant 216
DB_CannotLoadDLL constant 216
DB_CantConvertParameter constant 216
DB_CursorNotOpen constant 216
DB_CursorOnSprocStmtErr constant 216
DB_DescNotAvailable constant 215
DB_EndOfLife constant 216
DB_EndOfResults constant 216
DB_FuncNotForDB constant 216
DB_FuncNotForDBServer constant 216
DB_InternalError constant 215
DB_Invalid_DataType constant 216
DB_InvalidColumn constant 215
DB_InvalidConnProperty constant 216
DB_InvalidDescId constant 216
DB_InvalidLogin constant 215
DB_InvalidParameter constant 215
DB_InvalidParamId constant 216
DB_InvalidStatement constant 215
DB_LoginFailed constant 216
DB_MaxCursorsOnParm constant 216
DB_MaxCursorsOnStatement constant 216
DB_NoColumnInfo constant 216
DB_NoCurrentConnection constant 216
DB_NoError constant 215
DB_NoResultSetAvailable constant 216
DB_OutOfCursors constant 216
DB_OutOfMemory constant 215
DB_ParameterNotBound constant 216
DB_Specific constant 215
DB_TimeOut constant 215
DB_VariableDescMismatch constant 216
DB2 data types 220
DB2 database connections 219
DBInterface property
AcSybaseConnection 587
DbInterface property 433
Db-library API 415
debugging browser code 104
debugging reports 162, 448
DebugOption property 104

default data values 183


DefineProcedureInputParameter method
AcDBCursor 226
AcDBStatement 238
DefineProcedureOutputParameter method
AcDBCursor 227
AcDBStatement 239
DefineProcedureReturnParameter method
AcDBCursor 228
AcDBStatement 240
Delete method
AcComponent 143
DeleteWorkbook method 269
DeleteWorksheet method 289
deleting
archived report files 496
components from containers 508, 510, 511
controls in frames 91, 93, 94, 260, 261, 262,
263, 264, 265, 311, 312, 313, 314, 635, 636,
637, 638, 639, 640, 641, 644, 645, 646, 648,
664, 667, 668
database cursors 222
objects from collections 139, 140, 437, 438
destructors 143
DetachContent method 510
DetachFromContainer method 511
detaching from databases See disconnecting
detail graphs
creating 250
providing specialized behavior for 613
discarding generated report files 494
Disconnect method 151
disconnecting from databases 151, 167
displaying
applets 358
context menus 464, 649, 662
controls in HTML documents 666
data 159, 183
dates and time 213
graph axes values 60, 66, 67, 320, 324
graph overlay axes values 327
help strings in Viewer 643, 652, 667
images 365, 367, 383
monetary values 161
numeric values 253, 388
OLE objects 431
online documentation xxviii

Index

687

displaying (continued)
plug-ins 371
report objects 307, 439, 537
report pages 76, 526, 527
secured reports 502
string data 590
DisplayName property 142
DllPath property
AcDB2Connection 219
AcInformixConnection 386
AcMSSQLConnection 413
AcODBCConnection 423
AcProgressConnection 466
AcProgressSQL92Connection 470
DllPath variable
AcDB2Connection 219
AcInformixConnection 386
AcMSSQLConnection 413
AcODBCConnection 423
AcOracleConnection 433
AcProgressConnection 465
document files
archiving 496
closing 494
discarding generated 494
naming 497
opening 494
removing archived 496
Document Type Definition (DTD) 669
documentation xxvii
online xxviii
syntax conventions xxxii
typographical conventions xxxi
dot syntax 196
DotLine constant 74
DoubleLine constant 74
double-precision reals 253, 613
DoVerb method 428
drop shadows
graphs 62
rectangles 79
DualYValueExp property
AcDetailChart 247
dynamic arrays
creating 420
expanding 422

688

A ctu ate Fo und ation Cla ss Re fe re nc e

resizing 421
setting object location 421
dynamic sorting 593

E
e.Analysis application xxiv
e.Report Designer xxiii
e.Report Designer Java Edition xxiii
e.Report Designer Professional xxiii
overview xxv
e.Reporting Server xxiv
e.Reporting Suite xxi
product summary xxiii
e.Spreadsheet
Designer xxv
EjectPage method 447
ellipse controls
adding 266
providing specialized behavior for 614
ellipses as truncated text 81, 82
else expressions 148
Else property 148
Embedded property 384
embedding images 74
EnableMenuItem method 463
enclosing rectangles 75, 78, 642
End User Desktop xxiii
EndElement method 671
ending dates 333
EndPosition property 400
EndPosition variable 400
EndSelectionScan method 538
enumerations (enums) 42
error codes
getting SQL specific 217
listing of 215
error messages
creating 152
getting general 216
getting SQL specific 217
ErrorText property 359
ErrorText variable 358
events 502, 503
Example folder xxvi
Excel classes 33
Excel files 268

Excel spreadsheets
accessing specific cells 293
accessing specific columns 293
adding rows 286
adding workbooks 268
adding worksheets 288
creating 268, 270
deleting workbooks 269
deleting worksheets 289
displaying gridlines 294, 295
enabling autofit option for 292
finding specific workbook 269
finding worksheets 289
generating 33, 509
getting alignment settings 277, 279
getting background color 276
getting border type 276, 280
getting fonts for 277
getting indentation values 278
getting merge cells option 278
getting merge cells options 278
getting numeric formats 278
getting range content 279
getting specific cells 294
getting specific rows 295
getting workbook name 290
getting worksheet name 294
getting wrap text setting 280
instantiating worksheet cells 272
instantiating worksheet columns 273
managing workbooks in 288
managing worksheets in 292
naming worksheets 296
saving workbooks 290
setting alignment options 281, 284
setting background color 280
setting border type 280
setting data types for 284
setting fonts for 281
setting indentation values 282
setting merge cell options 285
setting numeric formats 282
setting properties for 275
setting wrap text option 285
ExcelBorderBottom constant 57
ExcelBorderDashDot constant 56
ExcelBorderDashDotDot constant 57

ExcelBorderDashed constant 56
ExcelBorderDotted constant 56
ExcelBorderDouble constant 56
ExcelBorderHair constant 56
ExcelBorderLeft constant 57
ExcelBorderMedium constant 56
ExcelBorderMediumDashDot constant 57
ExcelBorderMediumDashDotDot
constant 57
ExcelBorderMediumDashed constant 56
ExcelBorderNone constant 56
ExcelBorderRight constant 57
ExcelBorderSlantedDashDot constant 57
ExcelBorderThick constant 56
ExcelBorderThin constant 56
ExcelBorderTop constant 57
ExcelHAlignCenter constant 57
ExcelHAlignCenterAcrossSelection
constant 58
ExcelHAlignFill constant 58
ExcelHAlignGeneral constant 57
ExcelHAlignJustify constant 58
ExcelHAlignLeft constant 57
ExcelHAlignRight constant 58
ExcelVAlignBottom constant 58
ExcelVAlignCenter constant 58
ExcelVAlignJustify constant 58
ExcelVAlignTop constant 58
Execute method 241
executing queries 234, 241, 246
ExpirationAge variable 483
ExpirationDate variable 483
expressions 319

F
F1 key xxix
FaceName property 59
Factory checkpoints 451
Fetch method
AcDataAdapter 167
AcDBCursor 228
AcSingleInputFilter 565
FetchLimit property 163
FetchLimit variable 163
FetchRowBufferCount property 470
fields See columns
FileName property 384

Index

689

FileNameExp property 384


files
archiving 481, 496
closing 494
deleting 496
discarding generated report 494
generating HTML 375, 379
generating XML 503, 539
getting specific 378
graphics formats 383
naming report 497
opening report 494
removing archived 496
specifying HTML locations 489
fill patterns 82
FillColor property
AcEllipseControl 266
AcRectangleControl 479
FillColor variable
AcEllipseControl 266
AcRectangleControl 478
FillRow property 364
FillRow variable 363
FillRows property 201
filters
creating 189, 410, 563
creating for multiple sources 416
creating input streams for 419
customizing 167, 173, 189, 192, 417
defined 162
fetching data rows 565
getting associated adapter 566
implementing algorithm for 416
instantiating adapters 566
setting input adapter 567
supporting random access 406, 477
Find method 108
FindByValue method 569
FindContainerByClass method 511
FindContentByClass method 93
FindContentByClassID method 94
finding specific controls 93, 664
FindLowestSplit method 637
FindOrCreate method 109
FindPageContainerByClass method 638
FindWorkbook method 269
FindWorksheet method 289

690

A ctu ate Fo und ation Cla ss Re fe re nc e

Finish method
AcDataAdapter 170
AcReportComponent 512
FinishConnection method 549
FinishDataStream method 533
FinishFlow method 549
FinishPage method 549
FirstIsLeft property 396
FixedBackground constant 68
FixedColumnWidths property
AcDataSection 202
AcHtmlFrame 364
FixedColumnWidths variable 363
floating-point numbers 253, 388
flow (page layouts)
adding frames 97, 299
adding headers and footers 299
adjusting headers and footers 300, 304
aligning frames 58
attaching to sections 548, 549, 554
attaching to subpages 101, 300, 578
balancing in subpages 96, 101
binding frames to 92, 96
defining 297
freeing space in 302
getting active 447
getting content size 302
getting current header/footer 207
getting first page header/footer 206
getting unused space 301
HTML reports and 297
multiple 458
providing one-directional 398
providing specialized behavior for 614,
617, 620
providing top-down 598
reserving available space 303, 450
resetting available space 303
testing size 301
flow components 297, 398, 598
FlowAlignCenter constant 58
FlowAlignCustom constant 59
FlowAlignLeft constant 58
FlowAlignRight constant 59
FlushBuffer method
AcDataAdapter 171
AcMemoryBuffer 407

FlushBufferTo method
AcDataAdapter 171
AcMemoryBuffer 408
FollowLink method 525
Font property 595
fonts
Excel spreadsheets 277, 281
graph legends 330
graph titles 317
setting text attributes 59
footers See page headers and footers
Format method 187
format patterns 187
Format$ function 157
FormatPageNumber method 442
FormattedPageNumber constant 76
FormattedPageNumber type 454
formatting custom graph labels 336, 337
formatting data values 157, 187
formatting page numbers 457
formatting text
for HTML documents 68, 156, 362
for report documents 157
FormatXLabel method 336
FormatYLabel method 336
FormatYOverlayLabel method 337
fractions 253
frame components 88, 190, 305, 362
frames
accessing contents 93, 94, 95
adding controls 91, 93, 94, 260, 261, 262,
263, 264, 265, 311, 312, 313, 314, 635, 636,
637, 638, 639, 640, 641, 644, 645, 646, 648,
664, 667, 668
adding for HTML reports 362
adding to flow 97, 299
adding to page layouts 444
adding to report designs 88, 305
aligning text in HTML 72
alignment constants 58
as HTML contents page 73
binding to flow 92, 96, 297, 398, 598
borders 312, 313
building from data rows 190
building if no data rows 89
defining viewing areas 305

deleting controls in 91, 93, 94, 260, 261,


262, 263, 264, 265, 311, 312, 313, 314, 635,
636, 637, 638, 639, 640, 641, 644, 645, 646,
648, 664, 667, 668
displaying narrow 58
getting component position 639, 640, 642
getting content 144, 156
getting data values 95
getting page 641
getting references for 95, 639
getting top-level 516
HTML reports and 306
instantiating 89, 208
moving 646, 647
moving contents 97
moving controls to different 97
placing text controls in 82
providing specialized behavior for 612,
614
resizing 635, 664
splitting large 97
testing for 521
FromClause variable 571
functions 195
See also methods
order of evaluation for 197

G
GenerateAttribute method 671
GenerateEmptyElement method 671
GenerateText method 672
GenerateXML method
AcReportComponent 512
AcXMLDataVisitor 672
GenerateXMLData method 539
GenerateXMLDataFile method 488
GetActualPageCount method 455
GetActualPageNumber method 456
GetAfter method 205
GetAt method 436
GetAvailableHeight method 261
GetAvailableWidth method 261
GetBackgroundColor method 276
GetBaseImageName method 385
GetBefore method 205
GetBorder method 276

Index

691

GetBorderOrigin method 312


GetBorderRect method 313
GetBorderSize method 313
GetBottom method 639
GetBufferCount method 408
GetBufferStart method 409
GetCell method 293
GetCloseValue method 355
GetColumn method 293
GetColumnWidth method 273
GetComponentACL method 513
GetConnection method
AcDataAdapter 171
AcDBCursor 229
AcReportComponent 513
GetContainer method 514
GetContent method 488
GetContentCount method 514
GetContentIterator method 515
GetContentName method 143
GetContents method
AcReportComponent 515
AcSection 550
GetControl method 95
GetControlValue method
AcBaseFrame 95
AcControl 155
GetCount method 141
GetCurrentFlow method 447
GetCurrentPage method 448
GetCurrentPageACL method 448
GetCurrentRow method 550
GetCursor method 181
GetDataStream method 515
GetDateValue method 355
GetDBConnection method 181
GetDisplayGridlines method 294
GetEstimatedPageCount method 448
GetFileName method 385
GetFirstContent method 516
GetFirstContentFrame method 516
GetFirstPage method 449
GetFirstPageFooter method 206
GetFirstPageHeader method 206
GetFirstSlave method 639
GetFixedWidthFontFaceName method 261
GetFont method 277

692

A ctu ate Fo und ation Cla ss Re fe re nc e

GetFormattedPageNumber method 456


GetFrame method 639
GetFreeSpace method 301
GetFullACL method 517, 546
GetFullName method 290
GetGeneralError method 215
GetGeneralErrorText method 216
GetGlobalDHTMLCode method 489
GetGroupKey method 187
GetHead method 437
GetHeight method 639
GetHighValue method 355
GetHitPoint method 337
GetHitSet method 338
GetHitXValue method 340
GetHitYValue method 340
GetHorizontalAlignment method 277
GetHtmlDir method 489
GetHtmlLinkTo method 640
GetHtmlText method 156
GetIndent method 278
GetIndex method 404
GetInput method 566
GetInsideSize method 302
GetIntervalValue method 346
GetItem method 391
GetKey method
AcBTree 109
AcGroupSection 347
GetKeyString method 347
GetKeyValue method 348
GetLabelValue method 356
GetLastPage method 449
GetLastSlave method 640
GetLayoutOrientation method
AcReport 490
GetLeft method 640
GetLinkTo method 640
GetLowValue method 356
GetMaster method 641
GetMergeCells method 278
GetName method 294
GetNext method 391
GetNextSelection method 539
GetNumberFormat method
Excel spreadsheets
getting formatting setting 278

GetOpenValue method 356


GetOutputCount method 242
GetOutputParameter method
AcDBCursor 229
AcDBStatement 242
GetPage method
AcReportComponent 517
AcVisualComponent 641
GetPageContainer method 641
GetPageCount method 449
GetPageFooter method 207
GetPageHeader method 207
GetPageIndex method 518
GetPageList method
AcReport 490
AcReportComponent 518
GetPageNumber method 96
GetParameterCount method 244
GetPlaintext method 261
GetPosition method
AcDataAdapter 172
AcIterator 391
GetProcedureStatus method
AcDBCursor 230
AcDBStatement 244
GetRange method 294
GetRect method 642
GetReport method 518
GetRight method 642
GetRow method 295
GetRowCount method 519
GetRowFileName method 378
GetRowHeight method 286
GetSelectionCount method 539
GetSeriesKey method 341
GetServerPrefix method 379
GetSpecificError method 217
GetSpecificErrorText method 217
GetStatement method 230
GetStatementText method
AcDBStatement 245
AcSqlQuerySource 476
GetTaggedText method 262
GetTail method 437
GetText method 105, 157, 262
GetTocEntry method 519

GetTop method 642


GetTwipsPerPixel method 491
GetUserACL method 491
GetValue method
AcControl 157
AcDataRow 194
AcExcelRange 279
GetValueAsDate method 279
GetVerticalAlignment method 279
GetVisiblePageCount method 456
GetVisiblePageNumber method 457
GetVisualComponent method 643
GetWidth method 643
GetWrapText method 280
GetXmlText method 519
GIF files 383
GlobalDHTMLCode property
AcReport 484
GrantExp property 546
graph components 250, 315, 353, 583
Graph2DArea constant 65
Graph2DBar constant 65
Graph2DPie constant 65
Graph3DArea constant 65
Graph3DBar constant 65
Graph3DPie constant 65
GraphAutoLabels constant 62
GraphAutoOrigin constant 60
GraphAutoTicks constant 65
GraphBackgroundColor property 316
GraphBackgroundColor variable 316
GraphBackgroundIsClear property 316
GraphBackgroundIsClear variable 316
GraphBarCluster constant 61
GraphBarClusterZ constant 61
GraphBarHorizontal constant 61
GraphBarHorizontalReversed constant 61
GraphBarNoGrouping constant 61
GraphBarStack constant 61
GraphBarStackPercentage constant 61
GraphBarVertical constant 61
GraphBorderStyle property 317
GraphBorderStyle variable 317
GraphCandleStick constant 65
GraphColoredNumericLabels constant 64,
318

Index

693

GraphColoredTextLabels constant 64, 318


GraphCustomLabels constant 62
GraphCustomOrigin constant 60
GraphCustomTicks constant 65
GraphDayUnit constant 320, 321
GraphDefaultLines constant 63
GraphDefaultUnit constant 320, 321
GraphDefaultXValues constant 66
GraphDropShadow constant 62
GraphExpressionLabels constant 62
GraphHLC constant 65
GraphHourUnit constant 320, 321
graphical elements
aligning in HTML documents 70
as backgrounds 68
associating with HTML documents 71
embedding in reports 74
HTML documents 365, 381
HTML limitations for 479
report documents 266, 383, 400, 478
graphics files 365, 367, 383
GraphLegendBottom constant 63
GraphLegendBottomLeft constant 63
GraphLegendBottomRight constant 63
GraphLegendLeft constant 63
GraphLegendNone constant 63
GraphLegendRight constant 63
GraphLegendTop constant 63
GraphLegendTopLeft constant 63
GraphLegendTopRight constant 63
GraphLine constant 65
GraphLoweredBorder constant 62
GraphMinuteUnit constant 320, 321
GraphMonthUnit constant 320, 321
GraphNoBorder constant 62
GraphNoLabels constant 62
GraphNoPointLabels constant 64, 318
GraphNoTicks constant 65
GraphNumberUnit constant 321
GraphNumericLabels constant 64, 318
GraphOHLC constant 65
GraphPatternLines constant 63
GraphQuarterUnit constant 320, 321
GraphRaisedBorder constant 62
GraphRoundToInterval constant 320
GraphRoundToRange constant 320
graphs

694

A ctu ate Fo und ation Cla ss Re fe re nc e

adding data points 248, 251, 318, 354


adding titles 62, 317
adding to reports 315
axes display options 60, 66, 67, 320, 324
bar groupings 61
bar orientation 61
border style constants 62
calculating starting/ending dates 333
calculating tick interval units 334
cost-accounting example for 168
data point properties and variables 318
data point types 64
displaying minor tick marks 323, 326
for summarizing data values 583
generating sample values for 319
getting series key 341
getting user-initiated hits 337, 338, 340
label orientation 67
label styles 62, 64
labels 252, 334, 336, 337, 356
legend positions 63
legend properties and variables 330
line styles 63, 332
minimum/maximum values 322, 325, 335
overlay axes display options 327
overlay minimum/maximum values 335
providing specialized behavior for 613,
614, 615, 619
setting grid colors 317
setting grid styles 322, 325
setting number of tick marks 322, 325
setting properties for 316, 319, 331
setting tick styles 65, 322, 325
setting values 355, 356
specifying type 65
specifying X-values for 66
with high-low averages 353
with unsummarized data points 250
GraphScatter constant 65
GraphShadowAndBorder constant 62
GraphSolidBorder constant 62
GraphTape constant 65
GraphTextLabels constant 64, 318
GraphThickLines constant 63
GraphType property 317
GraphType variable 317
GraphWeekUnit constant 320, 321

GraphXAxisAuto constant 66
GraphXAxisBottom constant 66
GraphXAxisNone constant 66
GraphXAxisTop constant 66
GraphXValuePerPoint constant 66
GraphXValuesPerDataSet constant 66
GraphYAxisAuto constant 67
GraphYAxisLeft constant 67
GraphYAxisNone constant 67
GraphYAxisRight constant 67
GraphYearUnit constant 320, 321
GraphYLabelDown constant 67
GraphYLabelHoriz constant 67
GraphYLabelUp constant 67
GraphZeroOrigin constant 60
grid lines in graphs 317, 322, 325
GridColor property 317
GridColor variable 317
group keys 346, 347, 348
group section components 342
group sections
adding 342
building 343
comparing key values 348
defined 199, 543
determining group interval 346
getting group key 187
getting key values 347, 348
grouping data in 67, 345
nesting in report sections 342
providing specialized behavior for 614
setting key values 148
setting sort key 166
GroupByClause variable 571
grouping data 67, 345
GroupInterval property 345
GroupOn property 345
GroupOnCustom constant 68
GroupOnDay constant 68
GroupOnEveryValue constant 67
GroupOnHour constant 68
GroupOnInterval constant 68
GroupOnMinute constant 68
GroupOnMonth constant 68
GroupOnPrefix constant 67
GroupOnQuarter constant 68
GroupOnWeek constant 68

GroupOnYear constant 67

H
HandCursor constant 56
HasContents method 520
HasFetchedLast method 212
HasMore method 392
HasPageSecurity method 493
HavingClause variable 571
headers See page headers and footers
headings 68
help xxviiixxxi
creating for controls 155
creating report-specific xxxi
usage overview xxix
help cursors 56
Help menu xxix
help topics xxix
HelpText method 643
HelpText property 624, 643
hiding controls 666
hiding TOC entries 83
hierarchical trees
adding items 108, 109, 110
creating 107
getting items 108, 109
getting object keys 109
high-low-close graphs
creating 65, 353
providing specialized behavior for 615
HighValueExp property 353
hints 154, 155
hits 337, 338, 340
HLC graphs See high-low-close graphs
HLCBarStyle property 331
HLCBarStyle variable 331
horizontal bar graphs 61
horizontal resize arrows 55
horizontal rules 381, 616
Host property 470
HostString property 433
HostString variable 433
hourglass cursors 55
HTML documents
adding images 365, 479
adding Java applets 357, 369

Index

695

HTML documents (continued)


adding plug-ins 369, 370
aligning objects in 69, 70
aligning text in 72, 363, 364
associating image maps with 71
background images for 68
choosing fonts for 59
creating 204, 375
creating lists for 69
defining colors 54
formatting text controls for 68, 156
getting server location 379
hiding controls in 666
including contents page 73
line controls in 381, 401
page breaks and 442, 447, 546
parallel sections and 459
providing specialized behavior for 615,
616
setting component visibility for 666
setting target window for 668
sizing Java applets for 358
sizing objects 73
sizing plug-in windows 71, 371
specifying file locations 489
HTML files 375, 379
HTML frames 615
HTML image controls
adding 365
providing specialized behavior for 615
support for 267, 401, 479
HTML tables
adding borders 201, 306, 362
aligning 203
aligning text in 72
cell spacing for 202
creating 69, 72, 199
creating empty cells 363, 364
defaults 459
placing captions in 71
setting column widths 363, 364
setting properties for 306
setting width 204
HTML text formats 362
HtmlAlignImageAbsBottom constant 70
HtmlAlignImageAbsMiddle constant 70

696

A ctu ate Fo und ation Cla ss Re fe re nc e

HtmlAlignImageBottom constant 70
HtmlAlignImageCenter constant 70
HtmlAlignImageLeft constant 70
HtmlAlignImageMiddle constant 70
HtmlAlignImageNone constant 70
HtmlAlignImageRight constant 70
HtmlAlignImageTextTop constant 70
HtmlAlignImageTop constant 70
HtmlAutomaticTable constant 72, 203
HtmlBodyText constant 68
HtmlBulletedList constant 69
HtmlCaptionAbove constant 71
HtmlCaptionBelow constant 71
HtmlCenterAlign constant 69
HtmlClientSideMap constant 71
HtmlCreateTable constant 72, 203
HtmlDefinitionList constant 69
HtmlHeading19 constants 68
HtmlHorizDefault constant 69
HtmlLeftAlign constant 69
HtmlNoCaption constant 71
HtmlNoImageMap constant 71
HtmlNoToc constant 73
HtmlNotTable constant 72, 203
HtmlOrderedList constant 69
HtmlParams method
AcHtmlAppletControl 360
AcHtmlPlugInControl 373
HtmlPercent constant 73
HtmlPixels constant 73
HtmlPlugInEns constant 71
HtmlPlugInPercent constant 71
HtmlRightAlign constant 69
HtmlServerSideMap constant 71
HtmlStyle property 364
HtmlStyle variable 363
HtmlTable constant 69
HtmlTextAlignCenter constant 72
HtmlTextAlignLeft constant 72
HtmlTextBaseline constant 73
HtmlTextBottom constant 73
HtmlTextMiddle constant 72
HtmlTextTop constant 72
HtmlTextVertDefault constant 72
HtmlTocInFrame constant 73
HtmlTocInHeader constant 73
hyperlink cursors 56

hyperlinks
copying 650
creating 524
defined 524
executing 525, 648
getting values 640, 667
implementing 650
providing server prefixes for 379
setting at runtime 666

I
IBeamCursor constant 55
IconCursor constant 55
If expressions 148, 149
IfExp property 148
overriding 149
image controls
adding to HTML documents 68, 70, 365
associating with HTML documents 71
bitmapped styles for 45
clipping 45
creating for external files 383
embedding in reports 74
getting file names 385
providing specialized behavior for 615,
616
supported file formats 383
image maps 71
ImageDesignTime constant 74
ImageFactoryTime constant 74
ImageName property 366
images 367
aligning 70
as backgrounds 68
scrollable 68
supported in HTML reports 267, 401, 479
ImageViewTime constant 74
implementing security 501
index searches 79, 622
Informix database connections
creating 386
data types 387
initializing
database statement objects 218, 246
properties 144
user-defined variables 144
input adapters

closing 170
creating 419, 566
defined 170
getting 566
setting for data filters 567
usage overview 417, 564
input filters 189
input parameters
defining 226, 238
overview 574
input sources
closing 170
connecting to 150
current position 163
defined 162
getting data from 192, 211
InputAdapter variable 565
InputAdapters variable 417
Insert method 110
INSERT queries 234
InsertAfter method 404
InsertBefore method 405
InsideFrameBorder constant 74
installing online documentation xxviii
instantiation 4
conditional 147, 148
integers 253, 388, 616
internal tools classes 35
IsAtEnd variable 211
getting values 212
IsConnected method 151
IsContainer method 520
IsDone method 392
IsEmpty method 141, 302
IsFirstSlave method 644
IsFrame method 521
IsFrameDecoration method 644
IsHidden property 372
IsHidden variable 371
IsLeaf method 521
IsMaster method 644
IsNormal method 645
IsOpen method 230
IsOpen variable
AcConnection 150
AcDataAdapter 163
IsPersistent method 144

Index

697

IsSameKey method 348


IsSlave method 645
IsStarted method 172
IsSummary method 188
IsVisible method 645
IsVisual method 521
Italic property 59
iterators
arrays vs. 420
creating 139, 389, 570
defining for variables 197
getting 515
getting current position 391
getting items 391
moving 392, 393, 394
restarting 393
testing for additional items 392

J
Java applets
aligning 70, 358, 359
attaching to reports 357, 369
defining parameters for 360
providing alternate text for 358
providing specialized behavior for 615
sizing 358, 359
joins 417, 468, 469, 473
JPG files 383
justifying text 81, 82

K
KeepAspectRatio constant 45
KeepOriginalSize constant 45
KeepTaggedText method 262
KeepTaggedText property
AcDynamicTextControl 255
key columns 148
Key property 345
keyboard events 80
KeyValue variable 148, 344

L
LabelExp property 353
LabelFont property 317
LabelFont variable 317
labels

698

A ctu ate Fo und ation Cla ss Re fe re nc e

adding to graphs 252, 334, 356


adding to reports 395, 595
changing at runtime 395
formatting custom graph 336, 337
formatting text values 157
graph orientation constants 67
graph style constants 62, 64
providing specialized behavior for 616
LabelValueExp property
AcDetailGraph 251
LayoutOrientation property 484
LayoutOrientation variable 483
leading truncation 80
LeftPage property 396
left-to-right flows 398
LegendBackgroundColor property 330
LegendBackgroundColor variable 330
LegendBackgroundIsClear property 330
LegendBackgroundIsClear variable 330
LegendBorderStyle property 331
LegendBorderStyle variable 331
LegendColorText property 330
LegendColorText variable 330
LegendFont property 330
LegendFont variable 330
LegendLabelCount property 330
LegendLabelCount variable 330
LegendLabels variable 330
LegendPosition property 330
LegendPosition variable 330
legends
disabling for graphs 63
graph position constants 63
graph properties and variables 330
LegendSize property 331
LegendSize variable 331
Level variable 670
line controls
adding to reports 400
defining pens for 74
defining styles 75
in HTML documents 381, 401
providing specialized behavior for 616,
617
line graphs
displaying points 333
line styles 63, 332

line graphs (continued)


line thickness 332
setting as graph type 65
with unsummarized data points 250
line style constants 63, 75
LineSpacing method 262
LineSpacing property
AcDynamicTextControl 256
LineStyle property
AcEllipseControl 266
AcGraph 332
AcLineControl 400
AcRectangleControl 479
LineStyle variable
AcEllipseControl 266
AcGraph 332
AcLineControl 400
AcRectangleControl 478
LineStylesList property 332
LineThickness property 332
LineThickness variable 332
LineWidthPadding method 263
LineWidthPadding property
AcDynamicTextControl 256
LinkColor property 377
LinkColor variable 376
LinkExp property 624
links See hyperlinks
LinkTo variable 622
getting values 640
updating 666
list components 402, 568
list interface (collections) 402, 568
list iterators See iterators
lists
adding items 403, 404, 405
adding singly linked 568
appending items 436
comparing objects 568
copying 389
creating 69, 402
getting item index 404
iterating through 389, 570
locating objects 569
removing items 405
testing for items 404
updating items 389
Live Report Extension See LRX

Locale property
AcReport 484
lookahead aggregates 200
lookup filters 563
LowResSourceURL property 367
LowResSourceURL variable 365
LowValueExp property 353
LRX (Live Report Extension) xxv
setting target window for 668

M
MakeContents method 96
MakeMenu method 463
Manuals directory xxviii
MapName property 367
MapName variable 366
MapType property 367
MapType variable 366
Margin property
AcDataSection 202
AcHtmlAppletControl 359
AcHtmlImageControl 367
AcHtmlPlugInControl 372
Margin variable
AcHtmlAppletControl 359
AcHtmlImageControl 366
AcHtmlPlugInControl 371
margins 75, 305, 598
Margins property
AcDynamicTextControl 256
AcFlow 298
AcFrame 306, 309
AcHtmlFrame 363
AcLinearFlow 399
AcSubpage 578
AcTopDownFlow 599
Margins variable
AcDynamicTextControl 255
AcFlow 298
AcFrame 307
AcLinearFlow 398
AcTopDownFlow 599
MaximumHeight method 646
MaximumHeight property 441, 624
MaximumStringLength property
AcDBConnection 214
MaxTocDepth property 377

Index

699

MaxTocDepth variable 376


MaxVersCount variable 483
measurement units 77, 83
memory
component state and 144
optimizing 512
pinning objects to 512, 523
reclaiming 171
memory buffers
adding specified data 407
creating 406
data sorter for 410
flushing 406, 407, 408
getting contents 408
getting first row position 409
menu components 460
menus
adding items 461, 632
adding separators 462, 633
cascading 461
checking items 463
creating 460
defaults 462
displaying 464, 649, 662
displaying help text for 643, 645, 652, 667
enabling/disabling items 463
initializing 463
methods 87
collection classes 29
connection classes 25
control classes 17
data stream classes 30
Excel classes 33
internal tools classes 35
page layout classes 11
report section classes 4
summary of 4
Microsoft SQL database connections
creating 413
data types 414
MimeType property 372
MimeType variable 371
MinimumHeight method 646
MinimumHeight property 101, 625
MinimumLineHeight method 263
MinimumLineHeight property
AcDynamicTextControl 256

700

A ctu ate Fo und ation Cla ss Re fe re nc e

monetary values 161


mouse shift states 80
MouseClick events 653, 659
MouseDblClick events 430, 656, 660
MouseDown events 657, 661
MouseUp events 658, 662
MoveBy method 646
MoveByConstrained method 647
MoveNext method 392
MoveTo method
AcIterator 393
AcVisualComponent 647
MoveToConstrained method 648
moving
controls 97, 646, 647
frames 646, 647
multicolumnar page layouts 101, 578
multi-input data filters 416, 419
multi-line text controls
adding 82, 590
wordwrapping 82, 85
multiple-input filter 189

N
names
assigning to report files 497
getting component 143
NeedHeight method 450
nested data groups 342, 343
nesting reports 459, 531, 532, 557
NESW cursors 55
Netscape plug-ins 370
New method
AcComponent 144
AcExcelApp 270
NewAfter method 207
NewBefore method 208
NewBodyPage method 596
NewComponent method 145
NewConnection method 172
NewContent method
AcDataSection 208
AcReport 493
AcSequentialSection 559
NewDataRow method 173
NewDataStream method 534

NewInputAdapter method
AcMultipleInputFilter 419
AcSingleInputFilter 566
NewIterator method 139
NewLeftPage method 397
NewPage method
AcPageList 450
AcSection 550
NewPageFooter method 209
NewPageHeader method 210
NewPageList method 493
NewPersistentComponent method 145
NewRightPage method 397
NewTitlePage method 597
NoClipping constant 104
NoCursor constant 56
NoHeaderOnFirst constant 203
NoKeys constant 80
nonsearchable components 79
NoShade property 382
NoShade variable 381
NoSplitBottom property
AcDynamicTextControl 257
AcFrame 309
NoSplitTop property
AcDynamicTextControl 257
AcFrame 309
NotSearchable constant 79, 622
Now() function 213
NT cursors 56
NullLine constant 74
numbered lists 69
numeric controls
adding to reports 253, 388
integer vs. double 253
providing specialized behavior for 613,
616
NWSE cursors 55

O
Object method 429
objects
accessing 420
accessing nested 196
adding to collections 108, 110, 138, 435,
436

adding to containers 142, 508


aligning in HTML documents 69
comparing 568
container for 480
creating 145, 500, 512, 523
creating hierarchical lists of 107
deleting 143
displaying help strings for 643, 652, 667
getting first usage 517
hierarchical relationships 500
iterating through 389, 570
locating in lists 569
order of evaluation for 197
pinning/unpinning 512, 523
providing specialized behavior for 600
referencing 138, 511, 512, 514
removing from collections 139, 140, 437,
438
sizing measurements 73
storing in collections 435
testing for type 144
with no data rows 510
ObjectVariable property 621, 625
ObsoleteWordWrap constant 85
ObtainConnection method 551
ObtainDataStream method 534
ObtainSelectStatement method
AcQuerySource 476
AcSqlQuerySource 572
AcTextQuerySource 593
OCX See OLE custom controls
ODBC database connections
creating 423
data types 424
offset coordinates
defining 77
specifying negative 97
OHLC graphs 65, 331, 353
OLE Automation 427, 432
OLE client items See OLE containers
OLE components
creating 427, 431
providing specialized behavior for 617
OLE containers
activating/deactivating 428, 429
adding objects to 432
closing 428

Index

701

OLE containers (continued)


creating 427, 429
executing actions 428, 429
getting associated objects 429
providing specialized behavior for 617
sizing 431
OLE custom controls 427
OLE objects
adding 431
cloning 432
displaying 431
getting 429
OleverbHide verb 428
OleverbOpen verb 428
OleverbPrimary verb 428
OleverbShow verb 428
OnActivate method 429
OnActuate method 648
OnContextMenu method 649
OnCopyLink method 650
OnCreate method 429
OneCM constant 83
OneInch constant 83
OneMM constant 83
OnEmptyGroup method 210
one-pass aggregates See running aggregates
OnePoint constant 83
OnFinishViewer method 494
OnFollowLink method 650
OnHelp method 652
OnLButtonClick method 653
OnLButtonDblClk method
AcOleContainer 429
AcVisualComponent 656
OnLButtonDown method 657
OnLButtonUp method 658
online documentation xxviii
syntax conventions xxxii
typographical conventions xxxi
online help xxviiixxxi
creating report-specific xxxi
usage overview xxix
OnRButtonClick method 659
OnRButtonDblClk method 660
OnRButtonDown method 661
OnRButtonUp method 662
OnRead method 197
OnRow method 522
702

A ctu ate Fo und ation Cla ss Re fe re nc e

OnStartViewer method 494


OpenConnection method 173
OpenCursor method
AcDatabaseSource 182
AcDBCursor 231
AcDBStatement 245
open-high-low-close graphs 65, 331, 353
opening
data adapters 172, 176
data connections 151, 173, 551
data streams 536
database cursors 182, 230, 231, 245
example for 231, 236, 245
report files 494
OpenValueExp property 353
optimizing performance 448, 451
Oracle database connections 433
Oracle8 data types 434
OrderByClause variable 571
ordered collections 435
ordered lists 69, 568
orientation
graph legends 63
graph titles 67
origins 77
output 104
output parameters
defining 227, 239
getting 229, 242
overview 574
overflow characters 81
overlay graphs 319
computing axes labels 335
computing axes values 335
displaying axes values 327
formatting labels 337
OverlayValueExp property 584
OverlayValueExpression property
AcDetailGraph 251
OwnerName variable 575

P
packet size 588
page breaks
adding 450, 550, 551, 554
conditionally setting 552
HTML documents and 442, 447, 546

page components
adding to reports 101, 439, 578
instantiating 443, 450
providing specialized behavior for 617
page containers 638, 641
page count
estimating 448
getting in page lists 449
getting total in report 455, 456
page headers and footers
adding 299, 549
adding page numbers to 157, 158
adding to HTML reports 362
adjusting 300, 304
getting 206, 207
placing 201, 202, 203
page hierarchy 445, 501, 600
getting 638
page indexes
defined 439
getting 157, 518
page layout classes 11
page layouts
accessing contents 93, 94, 95
adding frames 444
adding subpages 101, 300
adding title pages 596
adjusting headers and footers 300, 304
alternating left/right formats 396, 397
building if no data rows 89
creating simple 562
creating top-level sections 493
customizing 11
defining printable areas 297, 398, 598
designing specific pages for 439
displaying page numbers 76, 452
getting formatted page numbers 442, 456
getting printable areas 447
getting top-most component 488
inserting new pages 450, 550, 551, 554
instantiating 89
moving contents 97
multicolumnar 101, 578
multiple flows 458
providing contents for 88, 101, 439
providing formatted contents for 192
rebuilding pages 445, 447

removing components 508, 510, 511


resizing pages 102
resizing subpages 439
structures defined 443, 445
page list components 396, 443, 562, 596
page lists
adding additional checkpoints 451
creating 443, 493, 562
creating for alternate layouts 396
creating for title pages 596
estimating page counts 448
generating current page 445, 447
getting 490, 518
getting current flow 447
getting current page 448
getting first page 449
getting last page 449
getting page counts 449
initializing new pages 450
providing specialized behavior for 616,
618, 619, 620
page number controls 452
page number types 452
selecting 453
page numbers
assigning 157, 158
calculating 452
displaying 76, 452
formatting 457
getting 96, 158, 517, 518
getting current 456, 457
getting formatted values 442, 456
getting totals 455, 456
page index vs. 439
providing specialized behavior for 618
page security
customizing 501
getting ACLs 448
setting up 481
testing for page security
testing for 493
usage overview 542
page structures 443
PageBreakAfter method 551
PageBreakAfter property 546
overriding 551
PageBreakBefore method 551

Index

703

PageBreakBefore property 546


overriding 551
PageBreakBetween property 202
PageFooter property 203
PageFooter slot
adding components 209
referencing components in 200
PageHeader property 202
PageHeader slot
adding components 210
referencing components in 200
PageIndex variable 441
PageList property 484
PageNo method 157
PageNo$ method 158
PageNOfM method 457
PageNumber variable 441
PageNumberFormat method 442
PageNumberFormat property 441
PageNumberType property 452, 454
pages
resizing 102
pages See page layouts
Pages variable
AcPageList 446
AcReport 483
PageSize property 377
PageSize variable 376
PageStyle property 562
parallel section components 458
parallel sections
creating 458
defined 543
providing specialized behavior for 618
parameterized queries
counting parameters 244
creating 222, 574
defining input parameters 226, 238
defining output parameters 227, 239
defining return value types 228, 240
executing 237, 243
getting output parameters 229, 242
getting return values 244
getting status 230, 244
retrieving data sets 232
selecting 576
Password property

704

A ctu ate Fo und ation Cla ss Re fe re nc e

AcDB2Connection 219
AcInformixConnection 386
AcMSSQLConnection 413
AcODBCConnection 424
AcOracleConnection 433
AcProgressConnection 466
AcProgressSQL92Connection 471
AcSybaseConnection 587
Password variable
AcDB2Connection 219
AcInformixConnection 386
AcMSSQLConnection 413
AcODBCConnection 423
AcOracleConnection 433
AcProgressConnection 465
AcSybaseConnection 587
past due accounts 560
patterns 63
PCX files 383
pens 74, 306, 362
percentages
in area graphs 332
in bar graphs 61
in pie graphs 332
performance 448, 451
PerRowControl constant 55
Persistent Object Storage Mechanism 512
persistent objects
creating 145
testing for 144
pie graphs 65, 332
pinning components 512, 523
PinObject function 512, 523
pixels 491
plug-in controls
adding to HTML documents 369, 370
defining parameters for 373, 374
providing specialized behavior for 615
size constants 71
sizing windows 371
PlugInPage property 373
PlugInPage variable 372
PointCount property 318
PointCount variable 318
PointLabelColor property 318
PointLabelColor variable 318
PointLabelStyle property 318

PointLabelStyle variable 318


points 77
Points property 319
PointsArePercent property 332
PointsArePercent variable 332
PopulateCategoryIndex method 586
pop-up menus
adding items 461, 632
adding separators 462, 633
checking items 463
creating 460
defaults 462
displaying 464, 649, 662
displaying help text for 643, 645, 652, 667
enabling/disabling items 463
initializing 463
Position property 625
Position variable
AcDataAdapter 163
AcVisualComponent 622
POSM (Persistent Object Storage
Mechanism) 512
Prepare method
AcDBConnection 218
AcDBStatement 246
PreSorted constant 532
PrintAllPages method 540
printed documentation xxvii
syntax conventions xxxii
typographical conventions xxxi
printing report pages 540
PrintPages method 540
private classes 4
ProcedureName variable 575
ProcedureStatus variable 575
ProcessText method 263
product summary xxiii
product update information xxv
programming interfaces xxiii
programming prerequisites 4
Progress database connections
data types 467, 471
database qualifiers 472
opening 465, 470
Progress9 data types 471
Progress9 database qualifiers 472

projected costs 168


projection filters 563
prologs 499
properties 87
changing values 156, 184
initializing 144
setting for Excel spreadsheets 275
setting graph 316, 319, 331
setting graph axes 320, 324
setting graph data point 318
setting graph label 330
setting graph overlay 327
setting graph title 317
setting HTML table 306
setting run time connection 214
providing report-specific online help xxxi

Q
QcPercentage data type 77
QualificationOption variable 575
QualifierName variable 575
queries 468, 563
creating 192
creating textual 591
executing 237, 243
parameterized See parameterized queries
running 234, 241
usage overview 415
query data source components 474, 571
creating for textual queries 591
query data streams
associated with reports sections 342
building 195
Query property
AcSQLQuerySource 572
AcTextQuerySource 592
query statements 192, 468
binding to cursors 180
counting parameters 244
creating 178, 474, 571
defining cursors for 222
defining sort keys 475
executing 234, 241
getting 245, 476, 572, 593
not returning data rows 234
opening cursors for 182

Index

705

query statements (continued)


preparing for execution 218, 246
quoted identifiers in 415
reserved characters and words in 415
returning ordered data groups 342, 343
setting ad hoc parameters 476, 572
setting up 179
updating column order 475
QuestionCursor constant 56
queues 568

R
raised borders 62
RaiseError method 152
random access 406, 477
enabling 166
Range property 320
Range variable 320
RangeUnit property 320
RangeUnit variable 320
ReadOnlyQuery property 466
AcProgressSQL92Connection 471
real numbers 253
ReBindToFlow method 96
record buffers
allocating 477
flushing 171, 477
records See data rows
rectangles
adding 478
bounding points 78
drop shadows 79
providing specialized behavior for 618
rounding 78, 478
size 80
referencing objects 138, 511, 512, 514
relational databases 152
relative page numbers 452
release notes xxv
ReleaseSpace method 302
Remove method 140
RemoveAll method 139
RemoveHead method
AcList 405
AcOrderedCollection 437
RemoveTail method 438

706

A ctu ate Fo und ation Cla ss Re fe re nc e

report components
accessing contents 515
accessing for special processing 509, 600
adding 500, 508
building with data rows 510
building with no data rows 510
checking type 521
counting content items in 514
getting associated data stream 515
getting associated report 518
getting contents 515, 516
getting first usage 517
getting top-level frame 516
pinning/unpinning 508, 512, 523
providing specialized behavior for 611,
618
removing from containers 508, 510, 511
testing contents 520, 521
report controller
attaching to reports 524, 525
displaying report pages 526, 527
executing links 525
implementing 524
report examples xxvi
report files
archiving 481, 496
closing 494
discarding 494
generating for HTML formats 375, 379
generating for XML reports 503, 539
getting specific 378
naming 497
opening 494
removing archived 496
specifying HTML locations 489
report objects 480
report section classes 4
report section components 528
report sections
adding group sections to 342
closing data streams 533
creating 528
defined 199, 543
getting data streams for 534
instantiating data streams for 534
opening data streams for 536
preparing 528

report sections (continued)


providing specialized behavior for 619
specifying sort keys for 536
report server API xxiv
ReportCast channels xxiv
ReportController class 524
ReportEncoding property
AcReport 485
reporting solutions xxii
reports
See also report components
adding controls 98, 153
building 441, 480, 529
building with method calls 510, 512, 523
changing structures for 4
creating online help for xxxi
creating top-level sections 493
customizing 4
discarding 494
getting contents 93, 94, 95
getting top-most component 488
grouping related data 342
implementing security for 501
moving among 651
naming 497
nesting 459, 531, 532, 557
printing 540
scrolling with fixed backgrounds 68
Requester API xxiii
ReserveSpace method 303
ResetSpace method 303
resizable arrays
creating 420
expanding 422
setting object location 421
setting size 421
resize arrows 55
resize cursors 55
ResizeBy method
AcBasePage 102
AcVisualComponent 663
ResizeByConstrained method 663
ResizeRegion property 101
ResizeTo method
AcObjectArray 421
AcVisualComponent 664
ResizeToConstrained method 664

resizing frames 635


Restart method 393
result sets 534, 574
Rewind method 174
RGB color values 54
RightPage property 396
RoiIsTemporary method 494
Root variable 483
rounded rectangles 78, 478
rounding constants 320
rounding errors 161
Rounding property
AcFlow 298
AcFrame 309
AcRectangleControl 479
AcSubpage 578
Rounding variable
AcFlow 298
AcFrame 307
AcRectangleControl 478
RoundTo property 320
RoundTo variable 320
RoundToRange method 586
RowCount variable 504
RowNumber variable 193
rows See data rows
rules 381, 401
rules See horizontal rules
Run method 464
running aggregates 200
running queries 234, 241, 246

S
sample application xxiv
sample applications xxvi
sample reports xxvi
sample values 319
SampleMax property 319
SampleMin property 319
SampleValue property 186
Save method 290
SaveAs method 290
scatter graphs 65, 250, 332, 333
scripting 103, 312
scroll bars 104
scrollable images 68

Index

707

ScrollableBackground constant 68
Scrollbars constant 104
search criteria 665
search extension API xxiii
search strings 526
Searchable method 665
searchable objects 665
Searchable property 625, 665
SearchableNoIndex constant 79
SearchableWithIndex constant 79
SearchAlias method 665
SearchAlias property 626, 665
searches (help topics) xxix
searching for components 79, 622, 665
SearchNoIndex constant 622
SearchWithIndex constant 622
secondary indexes 411, 412
section components
adding for data groups 199, 342, 528
adding for multiple flows 458
adding for sequential reporting 557
adding for specified conditions 147
initializing 542
sections
adding content to 548
adding flows to 548, 549, 554
building 502, 544, 557, 558
closing connections 549
creating 458, 542, 557
creating based on conditions 147, 148
creating for data groups 199, 342, 528
creating top-level 493
defined 542
establishing connections 551
getting contents lists 550
getting current row 550
getting page status 549
interrupting builds 545, 555
nesting 342
providing specialized behavior for 611,
613, 614, 618, 619
setting page for 550, 551, 554
types described 543
with no data rows 210, 557
security
changing ACLs 513
customizing ACLs 502

708

A ctu ate Fo und ation Cla ss Re fe re nc e

customizing page 501


example for 492
generating ACLs for 553
getting ACLs 448, 491, 513, 517, 546
overview 542
setting up page 481
security IDs
adding 491
creating 502
customizing 480, 553
defined 542
getting 491
SeekBy method 175
SeekTo method 175
SeekToEnd method 176
SELECT queries
creating 234, 474, 571
getting statements for 476, 572, 593
selectable elements 55
Selectable method 665
Selectable property 626, 665
SelectClause variable 571
SelectContent method 560
selection filters 563
SelectStatement property 592
sequential section components 557
sequential sections
building 557, 558
creating 557
defined 543
filtering contents 560
instantiating contents 559
providing specialized behavior for 619
with no data rows 557
series
defined 583
defining number of 318
getting user-initiated hits 339
setting colors for 319
series key 341
SeriesExp property
AcDetailChart 247
SeriesKey property 584
AcDetailGraph 251
SeriesLabel property 584
AcDetailGraph 251
SeriesLabelExp property
AcDetailChart 247

ServerName property
AcMSSQLConnection 413
AcSybaseConnection 587
ServerName variable
AcMSSQLConnection 413
AcSybaseConnection 587
servers xxiv
ServiceOrPort property 471
SetAdHocCondition method 593
SetAdHocParameter method 572
SetAt method 421
SetBackgroundColor method
Excel spreadsheets
setting background color 280
SetBorder method 280
SetColumnWidth method 273
SetConnection method 176
SetDataValue method 158
SetDisplayGridlines method 295
SetFont method 281
SetFontScalingFactor method
AcExcelApp 270
SetGrowthIncrement method 422
SetHorizontalAlignment method 281
SetIndent method 282
SetInput method 567
SetLayoutOrientation method 495
SetLinkTo method 666
SetName method 296
SetNumberFormat method 282
SetParam method
AcHtmlAppletControl 360
AcHtmlPlugInControl 374
SetROIAgingProperties method 496
SetROWAgingProperties method 496
SetRowHeight method 287
SetSecurity method 553
SetSortKey method 536
SetTaggedText method 263
SetTocEntry method
AcDataControl 188
AcGroupSection 348
AcReportComponent 523
SetupAdHocParameters method 476
SetValue method 284
AcControl 159
AcDataRow 198

SetValue() function 213


SetVerticalAlignment method 284
SetWrapMergeCellsOption method 285
SetWrapText method 285
Shadow property
AcFrame 309
AcSubpage 578
Shadow variable 307
shadows See drop shadows
shift bit fields 430, 654
ShiftFooterUp method 304
ShiftKey constant 80
Shift-key states 80, 430, 654
ShortDotLine constant 74
ShowAsPercent property 332
ShowAsPercent variable 332
ShowFooterOnLast property 203
ShowFooterOnLast variable 201
ShowHeaderOnFirst property 203
ShowHeaderOnFirst variable 201
ShowInDHTML property 626
ShowInHTML method 666
ShowInPDF property 626
ShowLines property 332
ShowLines variable 332
ShowNextPage method 526
ShowOverflowChar constant 81
ShowPage method 527
ShowPrevPage method 527
ShowSticks property 332
ShowSticks variable 332
ShowSymbols property 333
ShowSymbols variable 333
ShowTitle property 378
ShowWhenPrinting property 626
ShowWhenViewing property 626
ShrinkToFit property 399
ShrinkToFit variable 399
single-input filter 189
SingleLine constant 74
single-line text controls 82
singly linked lists
comparing objects 568
creating 568
iterating through 570
locating objects 569

Index

709

Size property
AcFont 60
AcHtmlAppletControl 359
AcHtmlImageControl 367
AcHtmlPlugInControl 373
AcVisualComponent 626
Size variable
AcHtmlAppletControl 359
AcHtmlPlugInControl 372
AcVisualComponent 622
Size.Height property 382
Size.Width property 382
SizeAllCursor constant 56
SizeCursor constant 55
SizeNESWCursor constant 55
SizeNSCursor constant 55
SizeNWSECursor constant 55
SizeUnits property 373
SizeUnits variable 372
SizeWECursor constant 55
sizing HTML objects 73
sizing plug-in windows 71, 371
sizing rectangle controls 80
SkipTo method 394
slots (Design Editor)
See also specific
adding frames with no data rows 89
getting components in 143, 205
instantiating components for 207, 208, 209,
210
nesting data groups 342
processing data rows for 200
testing for contents 144
Software Development Kit xxiii
solid borders 62
sort algorithm 410
sort filters 563
sort key columns
adding 166
setting at runtime 165, 475
sort keys
adding 165, 475
comparing 412
defined 411
specifying 343, 536
sort order
customizing 166

710

A ctu ate Fo und ation Cla ss Re fe re nc e

implementing 410
setting 475
SortAscending constant 475
SortDescending constant 475
sorting data
dynamically 593
in memory buffers 410
in report sections 531
multiple data sources 416
on key properties 342
Sorting property 531
SortParamsByAlias property 485
sound files 375, 377
SourceURL property
AcHtmlImageControl 367
AcHtmlPlugInControl 373
SourceURL variable
AcHtmlImageControl 366
AcHtmlPlugInControl 372
SpaceBetweenLines method 264
SpaceBetweenLines property
AcDynamicTextControl 257
SpaceBetweenParagraphs method 264
SpaceBetweenParagraphs property
AcDynamicTextControl 257
SplitContents method 97
SplitFrame method 97
SplitMarginBottom property
AcDynamicTextControl 258
AcFrame 310
SplitMarginTop property
AcDynamicTextControl 258
AcFrame 310
SplitVertically method 667
spreadsheets
creating 33, 268, 270
data types for Excel 284
SQL database connections
creating 413
data types 414
SQL statements 192, 468
binding to cursors 180
counting parameters 244
creating 178, 474, 571
defining cursors for 222
defining sort keys 475
executing 234, 241

SQL statements (continued)


getting 245, 476, 572, 593
not returning data rows 234
opening cursors for 182
preparing for execution 218, 246
quoted identifiers in 415
reserved characters and words in 415
returning ordered data groups 342, 343
setting ad hoc parameters 476, 572
setting up 179
updating column order 475
SQL textural queries 591
SQL-92 interface 470
SQL-specific errors 217
square bracket notation 195, 196
stacked bar graphs 61
stacks 568
Start method
AcDataAdapter 176
AcReportComponent 523
StartDataStream method 536
StartElement method 673
StartFlow method 554
StartNextSet method 232
StartPage method 554
StartSelectionScan method 541
StartUpParameter parameters 466
StartUpParameters property 466
StartUpParameters variable 465
state 150, 211
static images 383
static text controls 395, 595
StatusText method 667
StopAfterCurrentFrame method 555
StopAfterCurrentRow method 555
StopNow method 555
Stored Procedure Builder 576
stored procedures
creating 222, 574
defining data sources for 178
defining input parameters 226, 238
defining output parameters 227, 239
defining return value types 228, 240
executing 237, 243
getting output parameters 229, 242
getting return values 244

getting status 230, 244


retrieving data sets 232
selecting 576
StoredProcedureDef property 576
storing
dates and time values 213
monetary values 161
numeric values 253, 388
text strings 590
StretchToFit constant 45
StrikeThrough property 60
strings
accessing 590
displaying as help text 643, 645, 652, 667
displaying portions 343
getting format patterns as 187
getting page numbers as 442, 456
truncating 80
structure hierarchy 501
structures 600
accessing members 196
as data types 42
changing report 4
content vs. page 501
order of evaluation for 197
subpage components 578
Subpage property 546
subpages
adding 101, 300
balancing flow in 96, 101
creating 578
defined 101
providing specialized behavior for 619
resizing 439
subreports 458
subroutines 600
substrings 343
subtotals 342
SuggestRoiName method 497
summary graphs
adding categories to 585, 586
computing category ranges 585
creating 583
providing specialized behavior for 619
rounding category keys 585, 586
summary values See aggregate controls

Index

711

SummaryControl constant 55
sunken borders 62
supported databases 150
Sybase database connections
creating 587
data types 588
syntax conventions (documentation) xxxii

T
Table of Contents
adding entries 83, 188, 348, 523
adding to HTML documents 73
getting entries 519
getting page numbers 517
TableAlignment property 203
TableColor property 203
tables 468, 469
adding captions for HTML 71
aligning text in HTML 72
creating HTML 69, 72, 199
defaults for HTML 459
setting properties for HTML 306
TableStyle property 203
TableWidth property 204
TableWidthUnits property 204
TabPadding method 264
TabPadding property
AcDynamicTextControl 258
TabSize variable 670
TabSpacing method 264
TabSpacing property
AcDynamicTextControl 259
tape graphs 65
TargetWindowName method 668
TargetWindowName property 626, 668
terminating database connections 151, 167
text attributes 59
text controls
adding 362, 590
adding for labels 395, 595
aligning in HTML documents 363, 364
alignment constants 72
clipping 80
formatting 157
formatting for HTML 68, 156, 362
justification constants 81
placing 82

712

A ctu ate Fo und ation Cla ss Re fe re nc e

providing specialized behavior for 620


wordwrapping 82, 85
Text property 395
Text variable 395
TextAlignBottom constant 82
TextAlignCenter constant 81
TextAlignLeft constant 81
TextAlignment property 364
TextAlignment variable 363
TextAlignMiddle constant 82
TextAlignRight constant 81
TextAlignTop constant 82
TextCharacterWrap constant 86
TextColor property 377
TextColor variable 376
TextFormat method 265
TextPlacement property 105, 595
TextTruncateLines constant 86
textual controls
for labels and data 595, 620
for queries 591
TextWordWrap constant 85
TGA files 383
then expressions 148
Then property 148
third-party analysis tools xxiii
tick marks
calculating intervals for 334
displaying minor 323, 326
setting interval for 320, 321
setting number or frequency of 322
specifying 65, 325
TickInterval property 320
TickInterval variable 320
TickIntervalUnit property 321
TickIntervalUnit variable 321
TIF files 383
time controls 213, 613
time series calculations 250, 583
TimeSeries property 333
TimeSeries variable 333
title pages
adding 596
instantiating 596, 597
providing specialized behavior for 620
Title property 377
Title variable 376

TitleBackgroundColor property 317


TitleBackgroundColor variable 317
TitleBackgroundIsClear property 317
TitleBackgroundIsClear variable 317
TitleBorderStyle property 318
TitleBorderStyle variable 318
TitleFont property 318
TitleFont variable 318
TitlePage property 596
titles
adding to reports 395, 595
graph border styles 62
graph orientation constants 67
graph properties and variables 317
TitleText property 318
TitleText variable 318
TocAddComponent property 504
TocAddContents property 504
TOCAlwaysAdd constant 83
TocEntry variable 504
TOCIfAllVisible constant 83
TOCIfAnyVisible constant 83
TOCSkip constant 83
TocStyle property 378
TocStyle variable 376
TocValueExp property 505
TocWidth property 378
TocWidth variable 376
TocWidthUnits property 378
TocWidthUnits variable 376
tools class 669
top-down flows
creating 598
defined 398
trailing truncation 80
transient objects 192
creating 145
destroying 143
pinning/unpinning 512, 523
referencing 512
testing for 144
TransparentColor constant 54
trees
adding items 108, 109, 110
creating 107
getting items 108, 109

getting object keys 109


TrueSize property 431
truncation 80
twips 83
setting per pixel ratio 491
two-pass aggregates See lookahead
aggregates
typedefs 42
types See data types
typographical conventions xxxi
syntax xxxii

U
Underline property 60
union filter 418
units of measurement 77, 83
unpinning components 508, 512
UnpinObject function 512
unsummarized data points 250
UpArrowCursor constant 55
UPDATE queries 234
UseAcceleratedCheckpoints method 451
UseDefaultSize property 367
UseDefaultSize variable 366
UseForegroundPalette property 373
UseForegroundPalette variable 372
user-defined variables 144
UserName property
AcDB2Connection 219
AcInformixConnection 386
AcMSSQLConnection 413
AcODBCConnection 424
AcOracleConnection 433
AcProgressConnection 466
AcProgressSQL92Connection 471
AcSybaseConnection 588
UserName variable
AcDB2Connection 219
AcInformixConnection 386
AcMSSQLConnection 413
AcODBCConnection 423
AcOracleConnection 433
AcProgressConnection 465
AcSybaseConnection 587
utility class 600

Index

713

V
value expressions
assigning 183
square bracket notation in 195, 196
ValueExp property 186, 584
implementing 159
values
assigning to cursor parameters 237
assigning to data controls 55
comparing group key 348
copying 224, 538
defining for data points 319
generating sample for graphs 319
getting cursor parameter 226
getting for data controls 95, 157
getting group section key 347, 348
reading 197
returning specified column or variable 194
setting column or variable 198
setting data 158, 159
setting for controls 159
setting group key 148
setting sample 186
ValuesColorList property 319
ValuesColorList variable 319
ValueType constants 55
ValueType property 186
variable index 197
variables 87
accessing values 194, 196
as structures 42
assigning values 198
binding to columns 224
binding to cursors 225, 237
binding to data rows 195
defining 518
getting values 194
in stored procedures 575
initializing user-defined 144
iterating over 197
manipulating 197
order of evaluation for 197
vertical bar graphs 61
vertical resize arrows 55
VerticalPosition method 668
VerticalPosition property 627

714

A ctu ate Fo und ation Cla ss Re fe re nc e

VerticalSize method 668


VerticalSize property 628
view components 537
View variable 460
ViewContext data type 86
Viewer xxv
closing report files 494
displaying help strings 643, 652, 667
displaying report pages 307, 439
issuing commands 524
locating components 641, 665
opening report files 494
selecting items 665
viewing
applets 358
context menus 464, 649, 662
controls in HTML documents 666
data 159, 183
dates and time 213
graph axes values 60, 66, 67, 320, 324
graph overlay axes values 327
help strings in Viewer 643, 652, 667
images 365, 367, 383
monetary values 161
numeric values 253, 388
OLE objects 431
online documentation xxviii
plug-ins 371
report objects 307, 439, 537
report pages 76, 526, 527
secured reports 502
string data 590
views 468
creating 537
getting selection count 539
selecting objects for 539, 541
setting target window for 668
VisiblePageCount constant 76
VisiblePageCount type 454
VisiblePageNofM constant 77
VisiblePageNofM page number type 454
VisiblePageNumber constant 77
VisiblePageNumber type 454
VisitBaseFrame method 610
VisitBasePage method 611
VisitComponent method 611
VisitConditionalSection method 611

VisitContents method 611


VisitControl method 611
VisitCurrencyControl method 612
VisitDataControl method 612
VisitDataFrame method 612
VisitDataSection method 613
VisitDateTimeControl method 613
VisitDetailGraph method 613
VisitDoubleControl method 613
VisitDynamicTextControl method 614
VisitedLinkColor property 378
VisitedLinkColor variable 376
VisitEllipseControl method 614
VisitFlow method 614
VisitFrame method 614
VisitGraph method 614
VisitGroupSection method 614
VisitHLCGraph method 615
VisitHtmlAppletControl method 615
VisitHtmlFrame method 615
VisitHtmlImageControl method 615
VisitHtmlObjectControl method 615
VisitHtmlPlugInControl method 615
VisitHtmlReport method 616
VisitHtmlRuleControl method 616
VisitImageControl method 616
VisitIntegerControl method 616
VisitLabelControl method 616
VisitLeftRightPageList method 616
VisitLeftToRightFlow method 617
VisitLinearFlow method 617
VisitLineControl method 617
VisitOleContainerControl method 617
VisitOleControl method 617
visitor classes 600, 669
visitor components
activating 610, 611
adding 600, 669
applying 509
VisitPage method 617
VisitPageList method 618
VisitPageNumberControl method 618
VisitParallelSection method 618
VisitRectangleControl method 618
VisitReport method 618
VisitReportSection method 619
VisitSection method 619

VisitSequentialSection method 619


VisitSimplePageList method 619
VisitSubpage method 619
VisitSummaryGraph method 619
VisitTextControl method 620
VisitTextualControl method 620
VisitTitleBodyPageList method 620
VisitTopDownFlow method 620
VisitVisualComponent method 620
visual components
See also controls
activating context menus 661
adding 153, 621
containers for 305
customizing actions 653, 658, 659, 662
defined 621
determining visibility 645
displaying in HTML documents 666
executing default actions 656, 660
getting container 638, 641
getting current 643
getting frame 639
getting page 641
getting position 639, 640, 642
getting size 639, 643
moving 646, 647
overriding main task 648
providing specialized behavior for 620
resizing 663, 664
searching for 622, 665
selecting 657, 665
testing for 521
visual controls See visual components
visual objects See visual components

W
WaitCursor constant 55
WantHtml method 379
web browsers xxv
adding custom code for 103, 312
debugging code for 104
web pages See HTML reports
web site (Actuate) xxv
WhereClause variable 571
whole numbers 388
WidowAndOrphanControl method 265

Index

715

WidowAndOrphanControl property
AcDynamicTextControl 259
WidthUnits property 382
WidthUnits variable 382
wildcards 526
windows
setting HTML target 668
sizing for plug-ins 371
wordwrapping 82, 85

X
XAxisPosition property 321
XAxisPosition variable 321
XAxisStyle property 321
XAxisStyle variable 321
XLabelCount variable 321
XLabelExp property
AcDetailChart 247
XLabelFormat property 321
XLabelFormat variable 321
XLabels variable 322
XLabelsList property 322
XLabelStyle property 322
XLabelStyle variable 322
XMajorGridStyle property 322
XMajorGridStyle variable 322
XMajorTickCount property 322
XMajorTickCount variable 322
XMajorTickStyle property 322
XMajorTickStyle variable 322
XMax property 322
XMax variable 322
XMin property 322
XMin variable 322
XMinorGridStyle property 323
XMinorGridStyle variable 323
XML documents
adding attributes to elements 671
adding text 672
building elements for 671
creating 86, 488, 503, 539
creating elements for 671, 673
creating prologs for 499
customizing 512, 669, 672
getting attributes 519
ordering elements in 669

716

A ctu ate Fo und ation Cla ss Re fe re nc e

verifying contents 669


XMLAddContents property 505
XMLAttribute constant 86
XMLAttribute type 505
XMLAttributes property 505
XMLCharSet property 485
XMLCustom constant 86
XMLCustom type 505
XMLDataProlog method 499
XMLDocType property 485
XMLElement constant 86
XMLElement type 505
XMLEmptyAttribute type 505
XMLEmptyElement constant 86
XMLFile variable 670
XMLFileDescription property 485
XMLFileExtension property 485
XMLIgnore constant 86
XMLIgnore type 505
XMLIndent property 486
XMLMimeType property 486
XMLTag property 505
XMLText constant 86
XMLType property 505
XShowMinorTicks property 323
XShowMinorTicks variables 323
XTitle property 323
XTitle variable 323
XTitleBackGroundColor property 323
XTitleBackGroundColor variable 323
XTitleBackgroundIsClear property 323
XTitleBackgroundIsClear variable 323
XTitleBorderStyle property 323
XTitleBorderStyle variable 323
XValueExp property
AcDetailChart 247
AcDetailGraph 251
XValueSet property 323
XValueSet variable 323
XVerticalLabels property 323
XVerticalLabels variable 323

Y
YAxisPosition property 324
YAxisPosition variable 324
YAxisStyle property 324

YAxisStyle variable 324


YBorderStyle property 326
YBorderStyle variable 326
YLabelCount variable 324
YLabelFormat property 324
YLabelFormat variable 324
YLabels variable 324
YLabelsList property 324
YLabelStyle property 324
YLabelStyle variable 324
YMajorGridStyle property 325
YMajorGridStyle variable 325
YMajorTickCount property 325
YMajorTickCount variable 325
YMajorTickStyle property 325
YMajorTickStyle variable 325
YMax property 325
YMax variable 325
YMin property 325
YMin variable 325
YMinorGridStyle property 325
YMinorGridStyle variable 325
YMinorTicks property 326
YMinorTicks variable 326
YOverlayAxisStyle property 327
YOverlayAxisStyle variable 327
YOverlayDisplay property 327
YOverlayDisplay variable 327
YOverlayKeyValue property 327
YOverlayKeyValue variable 327
YOverlayLabelFormat property 327
YOverlayLabelFormat variable 327
YOverlayLabelStyle property 327
YOverlayLabelStyle variable 327
YOverlayLineColor property 327
YOverlayLineColor variable 327
YOverlayLinePattern property 327
YOverlayLinePattern variable 327
YOverlayLineStyle property 328
YOverlayLineStyle variable 328
YOverlayLineThickness property 328
YOverlayLineThickness variable 328
YOverlayMajorTickCount property 328
YOverlayMajorTickCount variable 328
YOverlayMajorTickStyle property 328

YOverlayMajorTickStyle variable 328


YOverlayMax property 328
YOverlayMax variable 328
YOverlayMin property 328
YOverlayMin variable 328
YOverlayShowLine property 329
YOverlayShowLine variable 329
YOverlayShowSymbols property 329
YOverlayShowSymbols variable 329
YOverlayTickInterval 328
YOverlayTickInterval property 328
YOverlayTickInterval variable 328
YOverlayTitle property 329
YOverlayTitle variable 329
YOverlayTitleBackgroundColor
property 329
YOverlayTitleBackgroundColor variable 329
YOverlayTitleBorder property 329
YOverlayTitleBorder variable 329
YOverlayTitleOrientation property 329
YOverlayTitleOrientation variable 329
YOverlayValueExp property 319
YOverlayValueExp variable 319
YOverlayVerticalLabels property 329
YOverlayVerticalLabels variable 329
YTickInterval property 326
YTickInterval variable 326
YTitle property 326
YTitle variable 326
YTitleBackgroundColor property 326
YTitleBackgroundColor variable 326
YTitleBackgroundIsClear property 326
YTitleBackgroundIsClear variable 326
YTitleOrientation property 326
YTitleOrientation variable 326
YValueExp property
AcDetailChart 247
AcDetailGraph 251
YVerticalLabels property 326
YVerticalLabels variable 326

Z
ZValueExp property
AcDetailGraph 251

Index

717

718

A ctu ate Fo und ation Cla ss Re fe re nc e

Vous aimerez peut-être aussi