Sie sind auf Seite 1von 402

v7.

20
Process Analyst User Guide

October 2010

Legal Notice
DISCLAIMER
Schneider Electric (Australia) Pty. Ltd. makes no representations or warranties with respect to this manual and, to the maximum extent permitted by law, expressly limits its liability for breach of any warranty that may be implied to the replacement
of this manual with another. Further, Schneider Electric (Australia) Pty. Ltd. reserves the right to revise this publication at any
time without incurring an obligation to notify any person of the revision.

COPYRIGHT
Copyright 2010 Schneider Electric (Australia) Pty. Ltd. All rights reserved.

TRADEMARKS
Schneider Electric (Australia) Pty. Ltd. has made every effort to supply trademark information about company names, products
and services mentioned in this manual.
Citect, CitectHMI, and CitectSCADA are registered trademarks of Schneider Electric (Australia) Pty. Ltd.
IBM, IBM PC and IBM PC AT are registered trademarks of International Business Machines Corporation.
MS-DOS, Windows, Windows NT, Microsoft, and Excel are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
DigiBoard, PC/Xi and Com/Xi are trademarks of Digi International Inc.
Novell, Netware and Netware Lite are either registered trademarks or trademarks of Novell, Inc. in the United States and other
countries..
dBASE is a trademark of dataBased Intelligence, Inc.
All other brands and products referenced in this document are acknowledged to be the trademarks or registered trademarks of
their respective holders.

GENERAL NOTICE
Some product names used in this manual are used for identification purposes only and may be trademarks of their respective
companies.
October 2010 edition for CitectSCADA Version v7.20
Manual Revision Version v7.20.

Contact Schneider Electric (Australia) Pty. Ltd. today at www.Citect.com/citectscada

Contents

Contents
Legal Notice

Contents

Safety Information

Process Analyst for Developers


Chapter: 1 Integration with CitectSCADA
Configuring the Process Analyst Control from Graphics Builder
Tag Association
Security and Permissions
Administration privilege
Command privilege
Write privilege
Multi-language Support
Understanding the Process Analyst resources
Using CitectSCADA to switch the Process Analyst language
Manually switching languages
Specifying languages for the Web Client
Creating your own Process Analyst resource.dll
Persistence
Saving while using the Citect Graphics Builder
Using the Save View toolbar button
Using the SaveToFile automation method
Saving between CitectSCADA page transitions (Run-time)
Resetting back to the default state
Backing up Projects

Chapter: 2 Configuring Design Time Properties


Adding New Commands

13

15
17
17
18
18
19
19
20
20
20
21
22
22
22
28
28
29
29
29
30
30

31
31

Contents

Editing Existing Custom Commands


Creating or Editing Object View Columns
Process Analyst View Synchronization

Chapter: 3 Using the Process Analyst Command System

37

Command System Overview


Custom Commands
CommandExecuted
UpdateCommand
Icons

37
37
37
38
38

Chapter: 4 Automation Model

39

Execution Results
Enumerations
AlarmType [Enumeration]
AxisLabelType [Enumeration]
ErrorNotifyCode [Enumeration]
FileLocation [Enumeration]
HatchStyle [Enumeration]
LineStyle [Enumeration]
LineType [Enumeration]
PenNameMode [Enumeration]
PenType [Enumeration]
PointType [Enumeration]
QualityCompactionType [Enumeration]
QualityType [Enumeration]
RequestMode [Enumeration]
ToolbarButtonType [Enumeration]
Events
CommandExecuted [Event]
CursorMoved [Event]
Error [Event]
HorizontalAxisChanged [Event]
MouseClick [Event]
MouseDoubleClick [Event]
OVColumnAdded [Event]
OVColumnRemoved [Event]
OVItemAdded [Event]
OVItemChecked [Event]
OVItemRemoved [Event]
OVItemSelected [Event]
PenCreated [Event]
PenDeleted [Event]
PenRenamed [Event]
PenSelectionChanged [Event]
PropertyChanged [Event]
UpdateCommand [Event]
VerticalAxisChanged [Event]

32
33
34

39
40
41
41
43
44
45
46
46
47
47
48
49
49
50
51
52
52
53
54
55
56
57
57
58
59
60
60
61
62
62
63
64
65
66
67

Contents

Interfaces
IAlarmPen Interface
IAlarmPen.AlarmType [Property][Get/Set]
IAlarmPen.GetFillColor [Method]
IAlarmPen.GetHatchColor [Method]
IAlarmPen.GetHatchStyle [Method]
IAlarmPen.LineColor [Property][Get/Set]
IAlarmPen.LineWidth [Property][Get/Set]
IAlarmPen.SetFillColor [Method]
IAlarmPen.SetHatchColor [Method]
IAlarmPen.SetHatchStyle [Method]
IAnalogPen Interface
IAnalogPen.LineColor [Property][Get/Set]
IAnalogPen.LineInterpolation [Property][Get/Set]
IAnalogPen.LineWidth [Property][Get/Set]
ICommand Interface
ICommand.Tooltip [Property][Get]
ICommand.ButtonType [Property][Get]
ICommand.CommandId [Property][Get]
ICommand.Enabled [Property][Get/Set]
ICommand.Pressed [Property][Get/Set]
ICommand.Privilege [Property][Get]
ICommandSystem Interface
ICommandSystem._NewEnum [Property][Get]
ICommandSystem.Count [Property][Get]
ICommandSystem.Create [Method]
ICommandSystem.Execute [Method]
ICommandSystem.Item [Property][Get]
ICommandSystem.ItemById [Property][Get]
ICommandSystem.Remove [Method]
ICursors Interface
ICursors._NewEnum [Property][Get]
ICursors.Count [Property][Get]
ICursors.Create [Method]
ICursors.Item [Property][Get]
ICursors.ItemByName [Property][Get]
ICursors.RemoveAll [Method]
IDigitalPen Interface
IDigitalPen.Fill [Property][Get/Set]
IDigitalPen.FillColor [Property][Get/Set]
IDigitalPen.LineColor [Property][Get/Set]
IDigitalPen.LineWidth [Property][Get/Set]
IObjectView Interface
IObjectView.BackgroundColor [Property][Get/Set]
IObjectView.Columns [Property][Get]
IObjectView.ForeColor [Property][Get/Set]
IObjectView.Height [Property][Get/Set]
IObjectView.Items [Property][Get]
IObjectView.SelectedItem [Property][Get]

68
68
69
70
71
72
73
74
75
76
77
78
78
79
80
81
82
83
84
84
85
86
87
88
88
89
90
91
92
93
93
94
95
95
96
97
98
99
99
100
101
102
103
104
105
106
107
108
109

Contents

IObjectView.Visible [Property][Get/Set]
IObjectViewColumn Interface
IObjectViewColumn.Name [Property][Get]
IObjectViewColumn.Text [Property][Get]
IObjectViewColumn.Width [Property][Get/Set]
IObjectViewColumns Interface
IObjectViewColumns._NewEnum [Property][Get]
IObjectViewColumns.Add [Method]
IObjectViewColumns.Count [Property][Get]
IObjectViewColumns.Hide [Method]
IObjectViewColumns.Item [Property][Get]
IObjectViewColumns.ItemByName [Property][Get]
IObjectViewColumns.Remove [Method]
IObjectViewColumns.Show [Method]
IObjectViewItem Interface
IObjectViewItem.Expanded [Property][Get/Set]
IObjectViewItem.GetField [Method]
IObjectViewItem.Items [Property][Get]
IObjectViewItem.PutField [Method]
IObjectViewItem.Tag [Property][Get/Set]
IObjectViewItems Interface
IObjectViewItems._NewEnum [Property][Get]
IObjectViewItems.Count [Property][Get]
IObjectViewItems.Item [Property][Get]
IObjectViewPenItem Interface
IObjectViewPenItem.BlockColor [Property][Get]
IObjectViewPenItem.Checked [Property][Get/Set]
IObjectViewPenItem.Selected [Property][Get]
IPane Interface
IPane.BackgroundColor [Property][Get/Set]
IPane.Collection [Property][Get]
IPane.Delete [Method]
IPane.FixedHeight [Property][Get/Set]
IPane.Height [Property][Get/Set]
IPane.Name [Property][Get/Set]
IPane.Pens [Property][Get]
IPanes Interface
IPanes._NewEnum [Property][Get]
IPanes.Count [Property][Get]
IPanes.Create [Method]
IPanes.Item [Property][Get]
IPanes.ItemByName [Property][Get]
IPanes.RemoveAll [Method]
IPen Interface
IPen.AddSample
IPen.AxisBackgroundColor [Property][Get/Set]
IPen.BlockRepaint [Property][Get/Set]
IPen.Clear [Method]
IPen.Collection [Property][Get]

109
110
111
111
112
113
114
114
115
116
117
118
118
119
120
121
122
123
124
125
126
126
127
128
128
129
130
131
132
132
133
134
135
136
137
138
139
139
140
140
141
142
143
144
145
147
148
149
149

Contents

IPen.DataPoint [Property][Get/Set]
IPen.DataServer [Property][Get/Set]
IPen.Delete [Method]
IPen.GetDefaultSpan [Method]
IPen.GetHorizontalAxisTimeSpan [Method]
IPen.GetInformation [Method]
IPen.GetStatistic [Method]
IPen.GetVerticalAxisSpan [Method]
IPen.GoToNow [Method]
IPen.Height [Property][Get/Set]
IPen.HorizontalAxisColor [Property][Get/Set]
IPen.HorizontalAxisResize [Property][Get/Set]
IPen.HorizontalAxisScroll [Property][Get/Set]
IPen.HorizontalAxisWidth [Property][Get/Set]
IPen.HorizontalGridlinesColor [Property][Get/Set]
IPen.HorizontalGridlinesStyle [Property][Get/Set]
IPen.HorizontalGridlinesWidth [Property][Get/Set]
IPen.HorizontalMinorGridlinesColor [Property][Get/Set]
IPen.HorizontalMinorGridlinesStyle [Property][Get/Set]
IPen.HorizontalScrollBy [Method]
IPen.HorizontalZoom [Method]
IPen.InstantTrend [Property][Get/Set]
IPen.IsDeleted [Property][Get]
IPen.IsSelected [Property][Get]
IPen.LocalTime [Property][Get/Set]
IPen.Name [Property][Get/Set]
IPen.PointsVisible [Property][Get/Set]
IPen.PutHorizontalAxisTimeSpan [Method]
IPen.PutVerticalAxisSpan [Method]
IPen.RefreshData [Method]
IPen.RequestMode [Property][Get/Set]
IPen.ResetToDefaultSpan [Method]
IPen.SamplePeriod [Property][Get/Set]
IPen.Select [Method]
IPen.SetDefaultSpan [Method]
IPen.SetQualityCompactionPointType [Method]
IPen.SetQualityLineStyle [Method]
IPen.SetVerticalAxisLabelValue [Method]
IPen.Stacked [Property][Get/Set]
IPen.TrendCursorLabelFillColor [Property][Get/Set]
IPen.TrendCursorLabelLineColor [Property][Get/Set]
IPen.TrendCursorLabelTextColor [Property][Get/Set]
IPen.VerticalAxisAutoscale [Property][Get/Set]
IPen.VerticalAxisColor [Property][Get/Set]
IPen.VerticalAxisLabelType [Property][Get/Set]
IPen.VerticalAxisResize [Property][Get/Set]
IPen.VerticalAxisScroll [Property][Get/Set]
IPen.VerticalAxisWidth [Property][Get/Set]
IPen.VerticalGridlinesColor [Property][Get/Set]

150
151
152
153
155
156
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
173
174
175
176
177
178
180
181
182
183
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199

Contents

IPen.VerticalGridlinesStyle [Property][Get/Set]
IPen.VerticalGridlinesWidth [Property][Get/Set]
IPen.VerticalMinorGridlinesColor [Property][Get/Set]
IPen.VerticalMinorGridlinesStyle [Property][Get/Set]
IPen.VerticalScrollBy [Method]
IPen.VerticalZoom [Method]
IPen.Visible [Property][Get/Set]
IPens Interface
IPens._NewEnum [Property][Get]
IPens.Count [Property][Get]
IPens.Create [Method]
IPens.Item [Property][Get]
IPens.ItemByName [Property][Get]
IPens.Pane[Property][Get]
IPens.RemoveAll [Method]
IProcessAnalyst Interface
IProcessAnalyst.BlockUpdates [Method]
IProcessAnalyst.UnBlockUpdates [Method]
IProcessAnalyst.CopyToClipboard [Method]
IProcessAnalyst.CopyToFile [Method]
IProcessAnalyst.FreezeEvent [Method]
IProcessAnalyst.LoadFromFile [Method]
IProcessAnalyst.PrintAll [Method]
IProcessAnalyst.SaveToFile [Method]
IProcessAnalyst.ShowProperties [Method]
IProcessAnalyst.SubscribeForPropertyChange [Method]
IProcessAnalyst.SynchroniseToNow [Method]
IProcessAnalyst.UnsubscribePropertyChange [Method]
IProcessAnalyst.AdminPrivilegeLevel [Property] [Get]
IProcessAnalyst.AutoScroll [Property][Get/Set]
IProcessAnalyst.BackgroundColor [Property][Get/Set]
IProcessAnalyst.CommandSystem [Property][Get]
IProcessAnalyst.ContextMenu [Property][Get/Set]
IProcessAnalyst.Cursors [Property][Get]
IProcessAnalyst.DataRequestRate [Property][Get/Set]
IProcessAnalyst.DisplayRefreshRate [Property][Get/Set]
IProcessAnalyst.Language [Property] [Get/Set]
IProcessAnalyst.LastSelectedPen [Property][Get]
IProcessAnalyst.LockedPens [Property][Get/Set]
IProcessAnalyst.NumberofSamples[Property][Get/Set]
IProcessAnalyst.ObjectView [Property][Get]
IProcessAnalyst.Panes [Property][Get]
IProcessAnalyst.PrimaryPath [Property][Get/Set]
IProcessAnalyst.SecondaryPath [Property][Get/Set]
IProcessAnalyst.Toolbars [Property][Get]
IProcessAnalyst.WritePrivilegeLevel [Property][Get]
IProcessAnalyst.ZoomMode [Property][Get/Set]
IToolbar Interface
IToolbar.Buttons [Property][Get]

200
201
202
203
204
205
206
207
207
208
209
210
211
212
212
213
214
215
216
217
218
219
220
221
222
223
225
226
227
228
229
230
231
232
233
234
235
236
237
238
240
241
242
243
244
245
246
247
247

Contents

IToolbar.Visible [Property][Get/Set]
IToolbars Interface
IToolbars.Item [Property][Get]
IToolbars._NewEnum [Property][Get]
IToolbars.Count [Property][Get]
IToolbarButton Interface
IToolbarButton.CommandId [Property][Get]
IToolbarButtons Interface
IToolbarButtons._NewEnum [Property][Get]
IToolbarButtons.Add [Method]
IToolbarButtons.Count [Property][Get]
IToolbarButtons.Item [Property][Get]
IToolbarButtons.Remove [Method]
IToolbarButtons.RemoveAll [Method]
ITrendCursor Interface
ITrendCursor.Collection [Property][Get]
ITrendCursor.Color [Property][Get/Set]
ITrendCursor.Delete [Method]
ITrendCursor.GetValue [Method]
ITrendCursor.LabelsLocked [Property][Get/Set]
ITrendCursor.Name [Property][Get/Set]
ITrendCursor.PenLabelHeight [Property][Get/Set]
ITrendCursor.PenLabelVisible [Property][Get/Set]
ITrendCursor.PenLabelWidth [Property][Get/Set]
ITrendCursor.PenLabelX [Property][Get/Set]
ITrendCursor.PenLabelY [Property][Get/Set]
ITrendCursor.Position [Property][Get/Set]
ITrendCursor.Visible [Property][Get/Set]
ITrendCursor.Width [Property][Get/Set]

Chapter: 5 Automation Examples


Handling an Event
Enumerating collections
Implementing a custom command
Implementing a custom column

Process Analyst for Operators

248
249
249
250
251
251
252
252
253
253
254
255
256
257
257
258
259
260
260
262
263
264
265
266
267
268
269
270
271

273
273
275
276
278

283

Chapter: 6 The Process Analyst: An Overview

285

Chapter: 7 Using the Main Toolbar

287

Chapter: 8 Understanding Process Analyst Pens

289

Data Compaction
Data Quality

289
290

Contents

Date/Time (Horizontal) Axis


Vertical (Value) Axis
Gridlines
Pen Layout
Pen Types
Analog pens
Digital pens
Alarm pens

Chapter: 9 Interacting with the Process Analyst


Pens: An Overview
Pen Selection
Locking/Unlocking Pens
Scrolling the Chart
Scaling the Chart
Using the Navigation Toolbar
Specifying a start time and end time
About time spans
Span Lock
Navigating time
Synchronize to Now
Toggle Autoscrolling
Zoom In/Zoom Out
Undo Last Zoom
Toggle Box Zoom
Edit Span
Edit Vertical Scale
Reset to Default Span
Using Cursors
Using Cursor Labels
Using the Right-click Menu
Understanding Mouse Pointers
Adding and Deleting Pens
Adding Pens
Deleting Pens
Viewing Pen Details
Instant Trending using the Process Analyst

Chapter: 10 Using the Object View


Object View Basics
Using Object View

Chapter: 11 Printing and Exporting


About Process Analyst Reports
Configuring Process Analyst Report Options
Setting up report legends
Setting up report options

10

291
293
294
294
295
295
296
296

301
301
301
302
303
303
304
304
307
307
308
308
308
309
309
309
310
311
312
312
313
315
316
316
317
319
320
320

323
323
324

327
327
328
329
330

Contents

Exporting Pen Data


Copying data to the Clipboard
Copying data to file

Chapter: 12 Configuring the Process Analyst


Using the Process Analyst Properties Dialog Box
Main page
Toolbars
Object View
Configuring Chart-wide Properties
Configuring general properties
Configuring server paths
Configuring Chart Panes
Configuring Pens
Configuring pen appearance
Configuring pen gridlines
Configuring pen axes
Configuring pen quality
Configuring the pen data connection
Configuring cursor labels
Configuring Cursors
Configuring Defaults
Configuring Toolbars
Adding or removing toolbar commands
Changing the order of toolbar commands
Configuring the Object View
Object View properties page
Working with Views
Saving a view
Loading a view

Chapter: 13 Operator Command Reference


View Commands
Zoom Commands
Navigation Commands
Export Commands
Interface Commands
General Commands

331
332
333

335
335
335
337
337
338
338
340
341
342
343
345
346
347
348
350
351
351
352
352
353
353
354
356
356
357

359
359
360
361
361
362
363

Glossary

365

Index

389

11

Contents

12

Safety Information

Safety Information
Hazard categories and special symbols
The following symbols and special messages may appear in this manual or on the product to warn of potential hazards or to call attention to information that clarifies or simplifies a procedure.
A lightning bolt or ANSI man symbol in a "Danger" or "Warning" safety label on the
product indicates an electrical hazard which, as indicated below, can or will result in
personal injury if the instructions are not followed.
The exclamation point symbol in a safety message in a manual indicates potential personal injury hazards. Obey all safety messages introduced by this symbol to avoid possible injury or death.
Symbol

Name

Lightning Bolt

ANSI man

Exclamation Point

DANGER indicates an imminently hazardous situation, which, if not avoided, will result in
death or serious injury.

WARNING indicates a potentially hazardous situation, which, if not avoided, can result in
death or serious injury.

CAUTION indicates a potentially hazardous situation which, if not avoided, can result in
minor or moderate injury.

13

Safety Information

CAUTION
CAUTION used without the safety alert symbol, indicates a potentially hazardous situation
which, if not avoided, can result in property damage.

Please Note
Electrical equipment should be installed, operated, serviced, and maintained only by
qualified personnel. No responsibility is assumed by Schneider Electric (Australia) Pty.
Ltd. for any consequences arising out of the use of this material.
Before You Begin
CitectSCADA is a Supervisory Control and Data Acquisition (SCADA) solution. It facilitates the creation of software to manage and monitor industrial systems and processes.
Due to CitectSCADA's central role in controlling systems and processes, you must appropriately design, commission, and test your CitectSCADA project before implementing it
in an operational setting. Observe the following:

UNINTENDED EQUIPMENT OPERATION


Do not use CitectSCADA or other SCADA software as a replacement for PLC-based control programs. SCADA software is not designed for direct, high-speed system control.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

LOSS OF CONTROL
l

l
l
l

The designer of any control scheme must consider the potential failure modes of control
paths and, for certain critical control functions, provide a means to achieve a safe state
during and after a path failure. Examples of critical control functions are emergency
stop and overtravel stop.
Separate or redundant control paths must be provided for critical control functions.
System control paths may include communication links. Consideration must be given to
the implications of unanticipated transmission delays or failures of the link.*
Each implementation of a control system created using CitectSCADA must be individually and thoroughly tested for proper operation before being placed into service.

Failure to follow these instructions can result in death, serious injury, or equipment damage.

* For additional information, refer to NEMA ICS 1.1 (latest edition), "Safety Guidelines
for the Application, Installation, and Maintenance of Solid State Control".

14

Process Analyst for Developers


This section contains information for developers and describes the following:
Integration with CitectSCADA
Configuring Process Analyst Design Time Properties
Using the Process Analyst Command System
Automation Model
Cicode Programming Reference Automation Examples

15

16

Chapter: 1 Integration with CitectSCADA


The Process Analyst integrates into the CitectSCADA system and is designed to work primarily with the CitectSCADA Graphics Builder and the run time environment. But the
Process Analyst can also be embedded in custom Visual Basic and .NET applications. In
these situations CitectSCADA is still necessary.
Integration with Historian
The Process Analyst integrates with the Historian Web Client, a component of CitectHistorian. The Process Analyst is deployed as an ActiveX object within the client, allowing it to be operated within Internet Explorer via a connection to a Historian Web Server.
To facilitate this, the Process Analyst supports a Historian connection. This needs a URL
server address for an available Historian Web Service. See Configuring connection properties.
Once established, a Historian connection allows pens to be added to the Process Analyst
that represent data archived to a Historian database.
See Also
Configuring the Process Analyst Control from Graphics Builder | Security and Permissions | Multi-language Support | Persistence | Backing up Projects

Configuring the Process Analyst Control from Graphics Builder


Being an ActiveX control, you can insert the Process Analyst onto a CitectSCADA graphics page. To do this, do one of the following:
l

In Graphics Builder, choose Edit | Insert ActiveX Control. The Insert ActiveX dialog
box appears. Double-click the Citect Process Analyst Control item in the ActiveX Controls list box. The control is inserted onto the graphics page and the Properties dialog
box appears.

Click the Process Analyst button in the Graphics Builder toolbox.

After inserting the Process Analyst into a page, you can resize it into position. To view
the configuration pages for the Process Analyst, double-click the Process Analyst control.
For details on configuring the design time properties for the Process Analyst, see Configuring Process Analyst Design Time Properties.

17

Chapter: 1 Integration with CitectSCADA

See Also
Persistence

Tag Association
You can create an association between a property of an ActiveX object and a variable
tag.
To create an association between a property of an ActiveX object and a variable tag:
1. Double-click the ActiveX object. The Properties dialog box appears.
2. Click the Tag Association tab.
3. Select a property from the Properties list.
4. Click the Wizard | Insert Tag button.
5. Select a tag from the list and click OK.
See Also
"ActiveX Object Properties" in CitectSCADA User Guide
"Understanding Object Types" in CitectSCADA User Guide

Security and Permissions


The Process Analyst integrates into the CitectSCADA security model by allowing access
to certain Process Analyst features based on the privilege level of the currently logged in
Operator.
The Process Analyst has nine privilege levels. Privilege level zero (0) indicates there is
no security and any user can perform the function. Levels 1-8 map directly to the eight
(8) privilege levels of security provided by CitectSCADA. The Process Analyst, by
default, assumes the area of the page that it is situated on; this can be changed in the
Graphics Builder. So if an operator has area access for the page and has privilege level
1, and the function they want to use is level 2, the function will be unavailable. If the
operator had level 2, the function would then become available. The Process Analyst
also supports the CitectSCADA Hierarchical Privilege security option.
Security can be applied to the following features:

18

Administration; for details, see Administration privilege.

Commands; for details, see Command privilege.

Saving Process Analyst views (write privilege); for details, see Write privilege.

Chapter: 1 Integration with CitectSCADA

Administration privilege
The Process Analyst also uses an Administration privilege level to disable engineeroriented features at run time. For example, the ability to add new custom commands
and so on are disabled if the Operator does not meet the necessary privilege level. The
Administration privilege level has never to be zero on a running system as this would
expose properties to an Operator, which could adversely affect the performance of the
client and/or server (for example, Number Of Samples property).

UNACCEPTABLY SLOW PROGRAM EXECUTION


Do not set the Administration Privilege level to zero on a running system.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

The features that are disabled when an operator does not meet the Administration privilege level include:
l

Add Pen context menu in Property dialog box.

New/Edit/Delete command (includes changing the privilege of commands).

New/Delete Column.

Data Refresh Rate property.

Display Refresh Rate property.

Number Of Samples property.

Server Paths tab.

Server field on Connection tab.

Tag field on Connection tab.

To modify the Administration privilege level, see Configuring Chart-wide Properties.

Command privilege
The Process Analyst allows a privilege level to be assigned to each command (standard
or custom command). If an Operator does not have the necessary privilege level to use
that command, the associated toolbar button is disabled and cannot be executed.
See Also
Editing Existing Custom Commands

19

Chapter: 1 Integration with CitectSCADA

Write privilege
The Process Analyst uses a concept of "write" privilege level to control whether an operator can save Process Analyst views to a location other than "My documents". These
views can then be loaded into the Process Analyst later by any Operator. The write privilege is set at design time on the Server Paths property page located on the root Process
Analyst node in the Property pages dialog box. If the write privilege level is set to zero
(0), any operator can save to any location. If the write privilege is any other level, the
Operator needs to have that privilege level to be able to save an Analyst view to a location other than "My Documents".
See Also
Configuring server paths | Working with Views | Process Analyst View Synchronization

Multi-language Support
The Process Analyst supports the CitectSCADA multilanguage ability of changing the
user interface language dynamically at run time. If the language is changed in CitectSCADA, the Process Analyst will change its language to match.
The process of configuring the Process Analyst for multiple languages is different from
that of CitectSCADA. This section describes how to localize the Process Analyst user
interface and get it to work with CitectSCADA.

Understanding the Process Analyst resources


The Process Analyst uses a special file, called Resources.dll, to store of its display strings
and dialog boxes. This file holds the native translations for your version of the Process
Analyst; these native translations are considered the default language. For example, the
Japanese version of the Process Analyst will contain Japanese resources inside the
Resources.dll file.
A separate Resources.dll file needs to be created for each individual language that you
want to support in your system. Rename the file using a special format to indicate the
language. The Process Analyst expects the file to be named Resources_<LanguageCode>.dll,
where <LanguageCode> is the unique identifier of your dll.
For example, if you are creating French resources, name your dll Resources_fr.dll. CitectSCADA uses the RFC 1766 standard for specifying culture names.
See Also
Creating your own Process Analyst resource.dll

20

Chapter: 1 Integration with CitectSCADA

All language Resources*.dll files needs to be placed in the same directory as the
Analyst.dll file.
The example below shows a system that contains English as the default, and has alternative languages of French, German and Chinese.
l

Resources.dll (default - any language, for example English)

Resources_fr.dll (French standard)

Resources_zh-CN.dll (Chinese PRC)

Resources_de.dll (German)

Using CitectSCADA to switch the Process Analyst language


CitectSCADA uses the Cicode function SetLanguage to switch languages at run time. To
allow the Process Analyst to determine the language to display, you need to map your
CitectSCADA language databases to the Process Analyst resource files.
To do this, add a new .ini section called [ProcessAnalyst] to the Citect.ini file on each of
your CitectSCADA clients and servers, and create a mapping for each language. (This
section might already exist in your Citect.ini file.) The mapping need to use this format:
LanguagePath.<dbf>=<ProcessAnalystLanguage>

where <dbf> is the name of a specific CitectSCADA language translation database, and
<ProcessAnalystLanguage> is the language code of the resources.dll file that has the equivalent translations.
For example,
[ProcessAnalyst]
LanguagePath.French=fr
LanguagePath.Chinese=zh-CN
LanguagePath.German=de

The last step is to verify each of your machines contains the necessary language fonts.
Windows XP and Windows 2000 both provide facilities to add the necessary languages
to your machine via the Regional and Language Options dialog box, accessible from the
Control Panel. This step is necessary if you want to use Asian languages on an English
operating system. See Creating your own Process Analyst resource.dll for details on adding languages to your system.
With the .ini file now configured, languages installed, and the Resource.dll files in place
when the SetLanguage Cicode function is called, CitectSCADA and the Process Analyst
will automatically change into the selected language.

21

Chapter: 1 Integration with CitectSCADA

Manually switching languages


The Process Analyst can also switch languages by itself using the IProcessAnalyst.Language property. You can call this property directly from Cicode, for example.
Note: Using this method will only switch the Process Analyst language and not the
one used by CitectSCADA. See IProcessAnalyst.Language [Property] [Get/Set].

Specifying languages for the Web Client


A Process Analyst running inside a CitectSCADA Web Client also supports run time language switching, but you need to configure the languages that the Web Client will download to the client machine.
To configure the languages to download:
1. Create a zip file in the CitectSCADA\bin folder called bin.zip.
2. Add to the zip file the language resource DLL files that you want the client to download and use. (You can find these files in your \Program Files\Common Files\Citect
folder.)
Note: The bin.zip file and its contents are not version-checked. This means you need
to manually remove the bin.zip from the Web Client machines if your server contains
a more recent bin.zip file. To do this:
1. Find the installation directory of the Analyst.dll file on your Web Client machines
and look for a file called bin.zip in this directory.
2. Delete this file.
3. Reconnect to the Web server to download the latest bin.zip file.

Creating your own Process Analyst resource.dll


To create your own resources dll, you need to do the following:
1. Install the specific languages you are localizing on your Windows system.
2. Set your system to use that specific language.
Note: To create your own resources.dll file, you&#39;ll need to use Microsoft Developer Studio 6 or an equivalent tool.

22

Chapter: 1 Integration with CitectSCADA

Setup for localization on Windows XP


You need to have Administrator privileges to perform the following setup.
1. Open Control Panel and double-click Regional and Language Options.
2. Click the Languages tab.
3. If localizing for East Asian languages, select the Install files for East Asian languages check box, then click OK.
4. Once the languages are installed, click the Languages tab in the Regional and Language Options dialog box.
5. Click Details in the Text services and input languages section to display the Text
Services and Input Languages dialog box.

6. In the Installed services section, verify that the language you want to localize with is
listed. If not, add it.
1. To add a language, click Add to display the Add Input Language dialog box.
2. Select the language you want from the Input language menu and click OK. (You
might need your original Windows Installer CD.)
3. You might need to restart your system before the language is available. If not,
click Apply and then OK to close the Text Services and Input Languages dialog

23

Chapter: 1 Integration with CitectSCADA

box and return to the main window under the Languages tab. If you need to
restart your system, return to the Regional and Language Options dialog box after
logging back into Windows. Be sure to login as an Administrator.
7. Click the Advanced tab in the Regional and Language Options dialog box.
8. Select the language you want from the menu in the Language for Non-Unicode Programs section.
9. Click Apply and then OK (you may need to restart your system).
Setup for localization on Windows 2000
You need to have Administrator privileges to perform the following setup.
1. Open Control Panel and double-click Regional Options.
2. On the General tab under Language Settings for the System, make sure the language
you want to localize with is in the list and "Checked". If it is not, you need to add it.
1. To add a language, click the Input Locales tab.
2. Click Add to display the Add Input Locale dialog box.
3. Select the language you want from the list.
4. Click OK and follow the on-screen prompts.
Note: You will need your original Windows Installer CD.Once the language has
been installed, repeat steps 1 and 2, and continue on to 3.
3. Click the Input Locales tab.

24

Chapter: 1 Integration with CitectSCADA

4. Verify that your language is listed in the Installed input locals list.
5. Click back to the General tab.
6. Click Set default to display the Select System Locale dialog box.
7. From this list, select the language that you want to localize to and click OK. This step
is necessary if you are using Asian characters on an English system. (This may
require a system restart.)
Note: When you are finished localizing, switch this option back to its original setting.

Changing the input language


When your system has been configured to use multiple languages, you will find a new
icon in the system tray displayed as "EN" or similar.
To change input language:

25

Chapter: 1 Integration with CitectSCADA

1. Click EN to display the input language option menu.

2. Select the language you want to use (to work correctly with Visual Studio, to match
the language you selected in Step 8 of the Windows XP setup and Step 7 of the Windows 2000 setup). This might display a language-specific IME editor, which allows
you to select characters to use in your translations.
Localizing the Process Analyst resource dll
Once you have set up your system to cope with multiple languages, you can begin localizing. Do the following:
1. Open Microsoft Visual Studio 6.
2. Choose File | Open.

3. Browse to the location of the Process Analyst's Resources.dll file. By default it is


located at C:\Program Files\Common Files\Citect\.
4. Verify that the Files of type menu has Executable Files (.exe;.dll;*.ocx) selected.
5. Verify that the Open as menu has Resources selected.
6. Select Resources.dll and click Open.

26

Chapter: 1 Integration with CitectSCADA

7. Save the file under a new name. For example, if you are localizing for Japanese, use
Resources_ja-JP.dll. See Understanding the Process Analyst resources for naming conventions.
8. Before changing any string, you need to change the language code for each dialog
box and the string table by doing the following:
1. Expand the String Table folder in the tree.
2. Right-click the String Table entry.
3. Choose Properties from the right-click (context) menu (see below).
4. From the Language menu, select the language that you are localizing for.
5. Click Close in the top-right corner of the dialog.
6. Repeat these steps for each of the dialogs inside the Dialog folder.
Once the language code has been set for every dialog and the string table, you are ready
to begin changing the text.
Localizing dialog boxes
To localize a dialog box, do the following:
1. Expand the Dialogs folder in the tree.
2. Double-click a dialog to edit.
3. Select an item of text and right-click to display the properties for that item.
4. Enter your replacement text into the Caption field.
5. Click the Close button in the top-right corner of the dialog box.
note the following:

27

Chapter: 1 Integration with CitectSCADA

Controls can be repositioned or resized if necessary to fit your replacement text.

Never resize a dialog box. The size of a dialog box is set to an optimum size so that
it integrates into Graphics Builder correctly.

Dialogs 3028 and 3050 do not require translation.

Localizing the String Table


To localize the string table, do the following:
1. Expand the String Table folder in the tree.
2. Double-click the String Table entry. This will display a table showing you the strings
of the Process Analyst.
3. Double-click an entry to display the Properties dialog box.
4. Type in the replacement text in the Caption box.
5. Click the Close button in the top-right corner of the dialog box.
Note: When translating strings, if a string contains "%s", "%x", "%d" and so on, do
not remove or replace those symbols as they are important to the Process Analyst.

Persistence
Persistence refers to saving the state (properties, pens, and so on) of the Process Analyst
to disk. CitectSCADA and the Process Analyst provide the following methods of persistence:
l

Saving as part of a CitectSCADA Graphics Builder page (design time)

Save View toolbar button on the Process Analyst (run time)

SaveToFile automation method on the Process Analyst (run time)

Saving between CitectSCADA page transitions (run time)

Saving while using the Citect Graphics Builder


This feature allows you to configure the default look and/or what pens will be displayed
on the Process Analyst at design time while you are designing your graphics pages.
Design time is the appropriate time to configure the appearance properties, toolbar buttons and, most importantly, the security of the Process Analyst since these will become
the default settings of the Process Analyst when your page is displayed at run time.

28

Chapter: 1 Integration with CitectSCADA

When a page containing the Process Analyst is saved in the Graphics Builder the properties you configured on the Process Analyst will be stored within the Graphics Builder
page.
Note: When defining new custom toolbar buttons, any icon you assign will be copied
and also stored within the Graphics Builder page. This allows your custom toolbar buttons to work on any machine.

Using the Save View toolbar button


This feature is valid only at run time and allows operators to save the current state of
the Process Analyst (called a view) to a standalone file. These files can be loaded during
run time, and are an efficient way to store commonly used pen configurations.

Using the SaveToFile automation method


This feature is valid only at run time and allows a user to write Cicode to save the current state of the Process Analyst to a standalone file, referred to as an Analyst view.
These files can be loaded during run time using the LoadFromFile automation method (or
the Load View toolbar button). Views and are an efficient way to store commonly used
pen configurations.

Saving between CitectSCADA page transitions (Run-time)


Using CitectSCADA run time, if you modify the Process Analyst (for example, changing
the timespan of a pen) and move off the page, your changes will be lost. This behavior is
not always what you want, so the Citect Graphics Builder provides an option Persist
ActiveX data between page transitions to save the state of an ActiveX control when you
switch between pages.
Enabling this option causes CitectSCADA to write a temporary file to the CitectSCADA
Data directory in the format of <Event class>.stg whenever you leave a page that contains an ActiveX object (for example, the Process Analyst). When you reenter the page,
CitectSCADA looks for that same file and, if found, will load the settings from it. These
files only exist while CitectSCADA run time is running. When you shut down CitectSCADA, the temporary *.stg files are deleted.
To save between page transitions:
1. Double-click the Process Analyst ActiveX control you want to change. The Properties
dialog box appears.
2. Click the Access tab.
3. Click the Identification tab. The Identification panel appears.

29

Chapter: 1 Integration with CitectSCADA

4. In the Persistence area, select the Persist ActiveX data between page transitions
check box, and then click Apply.

Resetting back to the default state


You can reset the original configuration of the Process Analyst control by calling the
Cicode function ObjectResetState. This function takes the object handle of the Process
Analyst control, which you retrieve by using the Cicode function ObjectByName.

Backing up Projects
When you save views to the Local storage location, the Process Analyst will create a
*.pav file in an Analyst Views subfolder under your project directory. If your project contains Analyst views, verify that the Save sub-directories option is selected in Citect
Explorer before backing up your project.

30

Chapter: 2 Configuring Design Time Properties


Most Process Analyst properties can be defined or modified during run time and design
time. This section describes properties that can be configured only during design time,
usually by a User.
For information about configuring run time properties, see Using the Process Analyst
Properties Dialog Box.
See Also
Adding New Commands | Editing Existing Custom Commands | Creating or Editing
Object View Columns | Process Analyst View Synchronization

Adding New Commands


Users can define new toolbar commands during design time if they have the appropriate
privilege level.
To add a new command:
1. On the Toolbars page of the Properties dialog box, click New. The New Command
dialog box appears.

31

Chapter: 2 Configuring Design Time Properties

2. The dialog shows the unique, system-generated ID for the new command. If necessary, enter a new ID for the command. This ID can be used in Cicode to determine
which command has been triggered or to find a specific command in the CitectSCADA system.
3. Enter the Tooltip text for the new command. You are limited to 64 characters. Tooltip
text appears when the mouse pointer is over the toolbar command.
4. Click Browse and navigate to the icon to represent the new command. The icon
image appears on the toolbar command button.
5. To define how the command behaves, choose a button style from the Button style
menu:
l

Push Button - click the Enabled check box to set the default appearance of the button when the button is enabled or disabled.

Toggle Button - click Enabled or Pressed to specify the "on" appearance.

See Also
Editing Existing Custom Commands

Editing Existing Custom Commands


Users can edit existing toolbar commands if they have the appropriate privilege level.
Commands can only be edited during design time, and only fields for custom commands can be edited.
To edit an existing custom command
1. Open the Properties dialog box and click the Toolbars tab.
2. Select the command you want to edit in the Available toolbar buttons list box, and
then click Edit. The Edit Command dialog box appears.

32

Chapter: 2 Configuring Design Time Properties

3. If necessary. click Browse to navigate to a new icon to use for the command.
4. If necessary, edit the Tooltip text. The maximum length for Tooltip text is 64 characters.
5. If necessary, choose a new button style from the Button style menu.
See Also
Adding New Commands

Creating or Editing Object View Columns


Users can create or delete Object View columns (during design time), as well as edit existing columns (run time or design time). Object View columns display information about
your pens. These configuration tasks are performed by using the Citect Process Analyst
Properties dialog box.
To create an Object View column:
1. Click the Object View tab. The Object View panel appears.
2. Click New. The New Column dialog box appears.

3. Enter a Name ID for the column. The value is used to reference the column in code.
4. Specify a Width.
5. Enter the Text to use for the column in the Object View display.
To delete an Object View column:
l

Select the column you want to delete and click Delete.

To edit an Object View column:


1. Select the column you want to edit, and then click Edit. The Edit Column dialog box
appears.
2. Modify the information as necessary, and then click OK.

33

Chapter: 2 Configuring Design Time Properties

See Also
Configuring the Object View

Process Analyst View Synchronization


The Process Analyst implements a basic level of file synchronization for Process Analyst
views (.pav files). This feature causes the Process Analyst to try and obtain the latest version of a .pav file before displaying it to the operator.
To achieve this, an engineer needs to first configure the Process Analyst to support Primary and Standby server locations for Analyst Views; for details, see Configuring server
paths.
With these file servers in place, the Process Analyst now has a central location from
which to obtain Process Analyst views. If one of the locations is unavailable, the operator can try the alternate location. When a client saves or loads a Process Analyst view,
only that view on the Primary and Standby server locations will be synchronized to verify they are the same.
The table below outlines the rules of synchronization and privilege for the storage locations and client modes when loading and saving Process Analyst views.

34

Action

Mode

Privilege

Available Storage Locations*

Load

Normal
client

Both**

The Primary and Standby options appear as configured as well as My Documents. If either are
invalid or unavailable paths, they do not
appear. If both are invalid or unavailable, the
Local option appears. Default order is Primary,
Standby, My Documents, and Local, My Documents respectively. Synchronization occurs
when loading from a Primary or Standby location.

Load

Web client

Both**

The Local and My Documents options are the


only ones available. Local maps to the project
directory\Analyst Views. The default order is
Local, My Documents.

Save

Normal
client

Privileged

The Local and My Documents options are the


only ones available. Local however will attempt
to save to every server location as well as the
project directory. The .pav file will be saved to
available locations from primary, standby and
project directories. Default order: Local, My
Documents.

Chapter: 2 Configuring Design Time Properties

Save

Normal
client

Unprivileged

The My Documents option is the only one available.

Save

Normal
client

Both**

The My Documents option is the only one available.

* Refers to the Look in menu on SaveView and Load View dialog boxes.
** Means both privileged and un-privileged.
When setting up file-servers to store Process Analyst views, verify that each client
machine has privileges enabling it the desired read/write access to those locations.
See Also
Configuring server paths | Working with Views | Write privilege

35

Chapter: 2 Configuring Design Time Properties

36

Chapter: 3 Using the Process Analyst Command


System
This section describes how to use the Process Analyst command system.
See Also
Command System Overview | Custom Commands | Icons

Command System Overview


The Process Analyst provides an extensive command system allowing manipulation of
common Process Analyst features, as well as providing the framework for creating custom user-defined commands.
The command system is configurable via the Toolbar property page and the automation
model.
To access the command system via the automation model, call the property GetCommandSystem() from the IProcessAnalyst interface. For details, see IProcessAnalyst Interface.

Custom Commands
Custom commands are defined in the Process Analyst, but needs to be implemented in
Cicode. You define commands by using the ICommandSystem- > Create method, or by
using the New button on the Toolbar property page.
To implement the command, you need to respond to the event CommandExecuted (and
optionally UpdateCommand). Both of these events notify you of the ID of the command
which needs to be handled.

CommandExecuted
When an operator presses the toolbar button representing your command, it will trigger
this event. This is your opportunity to execute the desired functionality of the command.
This will not be triggered if the logged-in user does not meet the necessary privilege
level. Be aware that this is an asynchronous operation.

37

Chapter: 3 Using the Process Analyst Command System

UpdateCommand
When the Process Analyst requires the Enable state or pressed states of its toolbar buttons to be refreshed, this event will be triggered. This will not be triggered if the loggedin user does not meet the necessary privilege level. This is asynchronous operation.
The state of commands (custom and pre-defined) will be saved to disk whenever the
Process Analyst configuration is saved.
See Also
Persistence

Icons
For custom commands, the user can specify their own custom icons by pointing to a file
on their hard drive. As these files may be deleted or moved over time, the Process
Analyst makes an instant copy of the icon into memory when the command is added.
This removes any dependence on the original icon file. When the Process Analyst configuration is saved, the icon data is also saved.

38

Chapter: 4 Automation Model


The automation model allows applications or solutions to programmatically configure
the Process Analyst control's appearance, performance, and behavior. The automation
model also allows code, via automation events, to be attached to events fired from the
Process Analyst Control and perform custom behavior.
The automation model allows almost every visual aspect of the control to be configured,
as well as performance. It is simple and follows a traditional object-oriented approach
(see below).
To view information for an interface, click the name of the interface in the illustration
below. For example, to view information for the IPens interface, click IPens.

Execution Results
Each property and method listed in the automation model will return one of the following results upon execution. The exact meaning is described in the Execution Result
section for each property or method.
Execution Result

Cicode

VBA

C++

InvalidArgument

274

E_INVALIARG

GeneralFailure

356

2147500037

E_FAIL

39

Chapter: 4 Automation Model

PathNotFound

356

76

STG_E_PATHNOTFOUND

Success

S_OK

Errors are captured differently in Cicode and VBA. The following code examples show
how to trap and handle errors in VBA and Cicode.
[VBA]
Sub VBATest(myObject As Object)
On Error Goto errHandler
myObject.<function>
Exit Sub
errHandler:
Print Err.Number, Err.Description
Resume Next
End Sub

[Cicode]
FUNCTION Test1(OBJECT hObject)
ErrSet(1); // Enable User error checking (disabled HW alarm)
IF ObjectIsValid(hObject) THEN
_ObjectCallMethod(hObject, "<function>");
error = IsError();
errorMessage = IntToStr(error)
IF (error <> 0) THEN
Message("An error occured", errorMessage, 0);
END
END
ErrSet(0); // Enable hardware alarm reporting of errors
END

Enumerations
AlarmType [Enumeration]
AxisLabelType [Enumeration]
ErrorNotifyCode [Enumeration]
FileLocation [Enumeration]
HatchStyle [Enumeration]
LineStyle [Enumeration]
LineType [Enumeration]
PenNameMode [Enumeration]
PenType [Enumeration]

40

Chapter: 4 Automation Model

PointType [Enumeration]
QualityCompactionType [Enumeration]
QualityType [Enumeration]
RequestMode [Enumeration]
ToolbarButtonType [Enumeration]

AlarmType [Enumeration]
Specifies the visual representation for an alarm pen.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] AlarmType

Members
Member Name

Description

Value

AlarmType_Digital

The tag is digital alarm

AlarmType_Analog

The tag is an analog alarm

AlarmType_Advanced

The tag is an advanced alarm

AlarmType_TimeStamped

The tag is a time-stamped alarm

AlarmType_MultiDigital

The tag is a multi-digital alarm

AlarmType_ArgyleAnalog

The tag is a legacy Argyle analog alarm

AlarmType_TimeStampedDigital

The tag is a digital time-stamped alarm

AlarmType_TimeStampedAnalog

The tag is a analog time-stamped alarm

See Also
IAlarmPen.AlarmType [Property][Get/Set]

AxisLabelType [Enumeration]
Specifies how the labels are drawn on the vertical axis.
Defined As

41

Chapter: 4 Automation Model

[VBA] Integer

[Cicode] INT

[C++] AxisLabelType

Members

42

Member Name

Description

Value

AxisLabelType_NONE

No labels will be visible on axis

AxisLabelType_DOUBLE

Displays in decimal format

AxisLabelType_INTEGER

Displays in integer format

AxisLabelType_PERCENT

Displays as "%"

AxisLabelType_AMPS

Displays as "A"

AxisLabelType_DEGREES

Displays as "deg"

AxisLabelType_FEET

Displays as "ft"

AxisLabelType_FEETPERMIN

Displays as "ft/min"

AxisLabelType_FEETPERSEC

Displays as "ft/s"

AxisLabelType_GALLONS

Displays as "gal"

AxisLabelType_GALLONSPERHR

Displays as "gal/h"

10

AxisLabelType_GALLONSPERMIN

Displays as "gal/min"

11

AxisLabelType_GALLONSPERSEC

Displays as "gal/s"

12

AxisLabelType_HERTZ

Displays as "Hz"

13

AxisLabelType_KILOGRAMS

Displays as "kg"

14

AxisLabelType_KILOGRAMSPERHR

Displays as "kg/h"

15

AxisLabelType_KILOGRAMSPERMIN

Displays as "kg/min"

16

AxisLabelType_KILOGRAMSPERSEC

Displays as "kg/s"

17

Chapter: 4 Automation Model

AxisLabelType_KILOMETRESPERHR

Displays as "kg/h"

18

AxisLabelType_KILOPASCALS

Displays as "kPa"

19

AxisLabelType_KILOWATTS

Displays as "kW"

20

AxisLabelType_LITRES

Displays as "l"

21

AxisLabelType_LITRESPERHR

Displays as "l/h"

22

AxisLabelType_LITRESPERMIN

Displays as "l/min"

23

AxisLabelType_LITRESPERSEC

Displays as "l/s"

24

AxisLabelType_METRES

Displays as "m"

25

AxisLabelType_METRESPERMIN

Displays as "m/min"

26

AxisLabelType_METRESPERSEC

Displays as "m/s"

27

AxisLabelType_REVS

Displays as "Rev"

28

AxisLabelType_REVSPERHR

Displays as "Rev/h"

29

AxisLabelType_REVSPERMIN

Displays as "RPM"

30

AxisLabelType_TONNES

Displays as "t"

31

AxisLabelType_TONNESPERHR

Displays as "t/h"

32

AxisLabelType_VOLTS

Displays as "V"

33

AxisLabelType_WATTS

Displays as "W"

34

AxisLabelType_LOOKUP

Displays user-defined text for label

35

ErrorNotifyCode [Enumeration]
Defines known errors that can occur during operation.
Defined As
l

[VBA] Integer

[Cicode] INT

43

Chapter: 4 Automation Model

[C++] ErrorNotifyCode

Members
Member Name

Description

Value

ErrorNotifyCode_None

No error.

ErrorNotifyCode_InvalidTag

Occurs when the tag specified for the pen does not
exist.

ErrorNotifyCode_CtapiConnectionOffline

Occurs when connections cannot be made to the


Trends and/or Alarm Servers.

ErrorNotifyCode_
Unknown

Occurs when an unknown CitectSCADA or Windows


error occurs.

ErrorNotifyCode_
NoServer

Occurs when CitectSCADA cannot find a server to get


the data from.

ErrorNotifyCode_InvalidArgument

Occurs when an invalid argument is specified.

ErrorNotifyCode_OutOfMemory

Occurs when a memory error is detected.

ErrorNotifyCode_BadVersion

Occurs when the Trends and/or Alarm Servers do not


match the client version.

ErrorNotifyCode_NoPrivilege

Occurs when the current user does not have the necessary privileges to view the data.

See Also
Error [Event]

FileLocation [Enumeration]
Specifies the location to save and write Process Analyst views to.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] FileLocation

Members

44

Chapter: 4 Automation Model

Member Name

Description

Value

FileLocation_Local

Refers to the project folder

FileLocation_Server

Refers to the both the primary/standby server paths

FileLocation_User

Refers to the My Documents folder

See Also
IProcessAnalyst.LoadFromFile [Method], IProcessAnalyst.SaveToFile [Method]

HatchStyle [Enumeration]
Defines the filling style for Alarm pens.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] HatchStyle

Members
Member Name

Description

Value

HatchStyle_None

No pattern

HatchStyle_Horizontal

Horizontal line pattern

HatchStyle_Vertical

Vertical line pattern

HatchStyle_ForwardDiagonal

Forward diagonal line pattern

HatchStyle_BackwardDiagonal

Backward diagonal line pattern

HatchStyle_Cross

Cross pattern

HatchStyle_DiagonalCross

Diagonal cross pattern

See Also
IAlarmPen.SetHatchStyle [Method], IAlarmPen.GetHatchStyle [Method]

45

Chapter: 4 Automation Model

LineStyle [Enumeration]
Defines the drawing style for a line.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] LineStyle

Values
Member Name

Description

Value

LineStyle_SOLID

Draws a solid line (all line widths)

LineStyle_DASH

Draws a dashed line (line width 1 only)

LineStyle_DOT

Draws a dot line (line width 1 only)

LineStyle_DASHDOT

Draws a dash dot (line width 1 only)

LineStyle_DASHDOTDOT

Draws a dash dot dot (line width 1 only)

LineStyle_NONE

Draws no line

LineType [Enumeration]
Defines the visual representation of the lines between samples of an analog pen.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] LineType

Members

46

Member
Name

Description

Value

LineType_

A single line is drawn from point A to point B.

Chapter: 4 Automation Model

STRAIGHT
LineType_
STEPPED

The line drawn will maintain the value of the previous sample. When
the samples differ, a vertical line will be drawn to the new sample
value.

See Also
IAnalogPen.LineInterpolation [Property][Get/Set]

PenNameMode [Enumeration]
Defines how the pen name will be generated. It is used in conjunction with the
IPens.Create method.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] PenNameMode

Members
Member
Name

Description

Value

PenNameMode_
Comment

The comment field obtained from the CitectSCADA trend/alarm


tag will be used as the pen name.

PenNameMode_
Tag

The value of the IPen.DataPoint property will be used as the


pen name.

PenNameMode_
Custom

Indicates that you will be setting the name using the


IPen.Name property.

See Also
IPens.Create [Method], IPen.DataPoint [Property][Get/Set], IPen.Name [Property][Get/Set]

PenType [Enumeration]
Defines the plotting style of a Process Analyst pen.

47

Chapter: 4 Automation Model

Defined As
l

[VBA] Integer

[Cicode] INT

[C++] PenType

Members
Member Name

Description

Value

PenType_ANALOG

A pen with an analog range

4097

PenType_DIGITAL

A pen with a range of 0 and 1

4098

PenType_ALARM

A pen represented as states

4099

See Also
IPens.Create [Method]

PointType [Enumeration]
Defines the visual cue applied to samples of a pen.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] PointType

Members

48

Member Name

Description

Value

PointType_NONE

No marker

PointType_RECT

A rectangular marker

PointType_CIRCLE

A circular marker

PointType_PLUS

A plus marker

PointType_CROSS

A cross marker

PointType_TRIANGLE

A triangular marker

Chapter: 4 Automation Model

PointType_ELLIPSE

A elliptical marker

See Also
IPen.SetQualityCompactionPointType [Method]

QualityCompactionType [Enumeration]
Specifies the different types of presentation used for a sample.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] QualityCompactionType

Members
Member Name

Description

Value

QualityCompactionType_
Single

Representation when the marker represents a single


sample

QualityCompactionType_
Multiple

Representation when the marker represents a calculation of two or more samples

QualityCompactionType_
Interpolated

Representation when the marker represents interpolated samples

See Also
IPen.SetQualityCompactionPointType [Method]

QualityType [Enumeration]
Defines the known quality states of data.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] QualityType

Members

49

Chapter: 4 Automation Model

Member Name

Description

Value

QualityType_Good

The sample is good

QualityType_NA

Indicates a loss of connection

QualityType_Gated

Indicates the data was marked as unwanted

Remarks
An alarm pens "disabled" state is treated as QualityType_Gated.
See Also
IPen.SetQualityLineStyle [Method]

RequestMode [Enumeration]
Defines the data acquisition method for a pen.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] RequestMode

Members

50

Member
Name

Description

Value

RequestMode_
Average

The value will be an average of the individual samples within the


multiple sample, as will the timestamp

RequestMode_
Minimum

The value will be the minimum value out of the individual samples
within the multiple sample. The timestamp will be the average of
the individual samples.

RequestMode_
Maximum

The value will be the maximum value out of the individual samples
within the multiple sample. The timestamp will be the average of
the individual samples.

RequestMode_
Newest

The value will the latest arrived value out of the individual samples within the multiple sample. The timestamp will be the average of the individual samples.

Chapter: 4 Automation Model

See Also
IPen.RequestMode [Property][Get/Set]

ToolbarButtonType [Enumeration]
Defines the type of a toolbar button.
Defined As
l

[VBA] Integer

[Cicode] INT

[C++] ToolbarButtonType

Members
Member Name

Description

Value

ToolbarButtonType_Push

Standard push button behavior.

ToolbarButtonType_Toggle

The button has two states: On and Off.

ToolbarButtonType_Separator

A visual marker used to group buttons.

See Also
ICommandSystem.Create [Method], ICommand.ButtonType [Property][Get]

51

Chapter: 4 Automation Model

Events
CommandExecuted [Event]
CursorMoved [Event]
Error [Event]
HorizontalAxisChanged [Event]
MouseClick [Event]
MouseDoubleClick [Event]
OVColumnAdded [Event]
OVColumnRemoved [Event]
OVItemAdded [Event]
OVItemChecked [Event]
OVItemRemoved[Event]
OVItemSelected [Event]
PenCreated [Event]
PenDeleted [Event]
PenRenamed [Event]
PenSelectionChanged [Event]
PropertyChanged [Event]
UpdateCommand [Event]
VerticalAxisChanged [Event]

CommandExecuted [Event]
This event is raised when a command is executed.
Defined As
l

[VBA] CommandExecuted(commandId As String)

[Cicode] CommandExecuted (OBJECT processAnalyst, STRING commandId)

[C++] CommandExecuted (BSTR commandId)

Parameters
commandId
[in]

Contains the unique identifier of the command that was executed.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Remarks

52

Chapter: 4 Automation Model

Each toolbar button is associated with a command so when they are pressed this event
will be raised with the unique identifier of that command. You can then use that identifier to determine which command was executed.
By using this event you can implement your own custom commands.
See Also
UpdateCommand [Event], ICommandSystem.Execute [Method]
Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_CommandExecuted(commandId As String)
End Sub

[Cicode]
FUNCTION myPage_AN35_CommandExecuted(OBJECT processAnalyst, STRING commandId)
END

CursorMoved [Event]
This event is raised whenever the cursor position changes.
Defined As
l

[VBA] CursorMoved(cursor As Object, position As Integer)

[Cicode] CursorMoved (OBJECT processAnalyst, OBJECT cursor, INT position)

[C++] CursorMoved (IPen* pen, int position)

Parameters
cursor
[in]

Refers to the cursor that has moved.

position
[in]

Indicates the new position of the cursor.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only).

Calling Syntax

53

Chapter: 4 Automation Model

Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_CursorMoved(pen As Object, position As Integer)
End Sub

[Cicode]
FUNCTION myPage_AN35_CursorMoved(OBJECT processAnalyst, OBJECT cursor, INT position)
END

Error [Event]
This event is raised whenever an error is generated from the Process Analyst.
Defined As
l

[VBA] Error(errorCode As Integer, errorMessage As String)

[Cicode] Error(OBJECT processAnalyst, INT errorCode, STRING errorMessage)

[C++] Error(ErrorNotifyCode errorCode, BSTR errorMessage)

Parameters
errorCode
[in]

Indicates the error that occurred. See the ErrorNotifyCode enumeration.

errorMessage
[in]

Contains the message associated with the error code.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

See Also
ErrorNotifyCode [Enumeration]
Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_Error(errorCode As Integer, errorMessage As String)
End Sub

54

Chapter: 4 Automation Model

[Cicode]
FUNCTION myPage_AN35_Error(OBJECT processAnalyst, INT errorCode, STRING errorMessage)
END

HorizontalAxisChanged [Event]
This event is raised when the date/time axis position or scale of a pen is changed.
Defined As
l

[VBA] HorizontalAxisChanged(pen As Object)

[Cicode] HorizontalAxisChanged(OBJECT processAnalyst, OBJECT pen)

[C++] HorizontalAxisChanged(IPen* pen)

Parameters
pen
[in]

Refers to the pen that has changed. This will be invalid if pens are locked.

processAnalyst
[in]

Indicates the Process Analyst object that raised the event (Cicode only).

Remarks
When the LockedPens property is True, this event is fired only once with the pen parameter marked as invalid.
See Also
IProcessAnalyst.LockedPens [Property][Get/Set], VerticalAxisChanged [Event]
Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as AN35_E.

[VBA]
Sub AN35_E_HorizontalAxisChanged (pen As Object)
End Sub

55

Chapter: 4 Automation Model

[Cicode]
FUNCTION AN35_E_HorizontalAxisChanged (OBJECT processAnalyst, OBJECT pen)
END

MouseClick [Event]
This event is raised whenever a single mouse click occurs on the graphical chart area of
the Process Analyst.
Defined As
l

[VBA] MouseClick(pen As Object, button As Integer)

[Cicode] MouseClick(OBJECT processAnalyst, OBJECT pen, INT button)

[C++] MouseClick(IPen* pen, int button)

Parameters
pen

Indicates which pen the click occurred on. This object will be invalid if no pen was
clicked.
[in]

button
[in]

Indicates which button was clicked: 0 = Left, 1 = Right.

processAnalyst
[in]

Indicates the Process Analyst object that raised the event (Cicode only).

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_MouseClick(pen As Object, button As Integer)
End Sub

[Cicode]
FUNCTION myPage_AN35_MouseClick(OBJECT processAnalyst, OBJECT pen, INT button)
END

56

Chapter: 4 Automation Model

MouseDoubleClick [Event]
This event is raised whenever a mouse double-click occurs on the graphical chart area of
the Process Analyst.
Defined As
l

[VBA] MouseDoubleClick(pen As Object, button As Integer)

[Cicode] MouseDoubleClick(OBJECT processAnalyst, OBJECT pen, INT button)

[C++] MouseDoubleClick(IPen pen, int button)

Parameters
pen

Indicates which pen the double-click occurred on. This object will be invalid if no
pen was double-clicked.
[in]

button
[in]

Indicates which button was double-clicked: 0 = Left, 1 = Right.

processAnalyst
[in]

Indicates the Process Analyst object that raised the event (Cicode only).

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_MouseDoubleClick(pen As Object, button As Integer)
End Sub

[Cicode]
FUNCTION myPage_AN35_MouseDoubleClick(OBJECT processAnalyst, OBJECT pen, INT button)
END

OVColumnAdded [Event]
This event is raised whenever a column is added to the ObjectView.
Defined As
l

[VBA] OVColumnAdded(name As String)

[Cicode] OVColumnAdded(OBJECT processAnalyst, STRING name)

57

Chapter: 4 Automation Model

[C++] OVColumnAdded(BSTR name)

Parameters
item
[in]

The name of the column that has been added

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_OVColumnAdded(name As String)
End Sub

[Cicode]
FUNCTION myPage_AN35_OVColumnAdded(OBJECT processAnalyst, STRING name)
END

OVColumnRemoved [Event]
This event is raised whenever a column is removed to the ObjectView.
Defined As
l

[VBA] OVColumnRemoved(name As String)

[Cicode] OVColumnRemoved(OBJECT processAnalyst, STRING name)

[C++] OVColumnRemoved(BSTR name)

Parameters
item
[in]

The name of the column that has been removed.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.

58

Chapter: 4 Automation Model

[VBA]
Sub myPage_AN35_OVColumnRemoved(name As String)
End Sub

[Cicode]
FUNCTION myPage_AN35_OVColumnRemoved(OBJECT processAnalyst, STRING name)
END

OVItemAdded [Event]
This event is raised whenever an item is added to the ObjectView.
Defined As
l

[VBA] OVItemAdded(item As Object)

[Cicode] OVItemAdded (OBJECT processAnalyst, OBJECT item)

[C++] OVItemAdded (IObjectViewItem* item)

Parameters
item
[in]

A reference to the item that was added to the ObjectView.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_OVItemAdded(item As Object)
End Sub

[Cicode]
FUNCTION myPage_AN35_OVItemAdded(OBJECT processAnalyst, OBJECT item)
END

59

Chapter: 4 Automation Model

OVItemChecked [Event]
This event is raised whenever an item is checked in the ObjectView.
Defined As
l

[VBA] OVItemChecked(item As Object)

[Cicode] OVItemChecked(OBJECT processAnalyst, OBJECT item)

[C++] OVItemChecked(IObjectViewItem* item)

Parameters
item
[in]

A reference to the item that was checked in the ObjectView.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_OVItemChecked(item As Object)
End Sub

[Cicode]
FUNCTION myPage_AN35_OVItemChecked(OBJECT processAnalyst, OBJECT item)
END

OVItemRemoved [Event]
This event is raised whenever an item is added to the ObjectView.
Defined As
l

[VBA] OVItemRemoved(item As Object)

[Cicode] OVItemRemoved(OBJECT processAnalyst, OBJECT item)

[C++] OVItemRemoved(IObjectViewItem* item)

Parameters
item

60

Chapter: 4 Automation Model

[in]

A reference to the item that was removed from the ObjectView.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_OVItemRemoved(item As Object)
End Sub

[Cicode]
FUNCTION myPage_AN35_OVItemRemoved(OBJECT processAnalyst, OBJECT item)
END

OVItemSelected [Event]
This event is raised whenever an item is selected in the ObjectView.
Defined As
l

[VBA] OVItemSelected(item As Object)

[Cicode] OVItemSelected(OBJECT processAnalyst, OBJECT item)

[C++] OVItemSelected(IObjectViewItem* item)

Parameters
item
[in]

A reference to the item that was selected in the ObjectView.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_OVItemSelected(item As Object)

61

Chapter: 4 Automation Model

End Sub

[Cicode]
FUNCTION myPage_AN35_OVItemSelected(OBJECT processAnalyst, OBJECT item)
END

PenCreated [Event]
This event is raised whenever a pen is either created via the automation model, or
added through the Add Pen dialog at run time.
Defined As
l

[VBA] PenCreated(pen As Object)

[Cicode] PenCreated(OBJECT processAnalyst, OBJECT pen)

[C++] PenCreated(IPen* pen)

Parameters
pen
[in]

Refers to the pen that was created.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only).

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_PenCreated(pen As Object)
End Sub

[Cicode]
FUNCTION myPage_AN35_PenCreated(OBJECT processAnalyst, OBJECT pen)
END

PenDeleted [Event]
This event is raised whenever a pen is deleted either by automation or via the interface.
62

Chapter: 4 Automation Model

Defined As
l

[VBA] PenDeleted(penName As String)

[Cicode] PenDeleted(OBJECT processAnalyst, STRING penName)

[C++] PenDeleted(BSTR penName)

Parameters
penName
[in]

Contains the name of the pen that was deleted.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35
[VBA]
Sub myPage_AN35_PenDeleted(penName As String)
End Sub

[Cicode]
FUNCTION myPage_AN35_PenDeleted(OBJECT processAnalyst, STRING penName)
END

PenRenamed [Event]
This event is raised whenever a pen is renamed via automation or through the user
interface.
Defined As
l

[VBA] PenRenamed(pen As Object)

[Cicode] PenRenamed(OBJECT processAnalyst, OBJECT pen)

[C++] PenRenamed(IPen* pen)

Parameters
pen
[in]

Refers to the pen that was renamed.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only).

63

Chapter: 4 Automation Model

Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_PenRenamed(pen As Object)
End Sub

[Cicode]
FUNCTION myPage_AN35_PenRenamed(OBJECT processAnalyst, OBJECT pen)
END

PenSelectionChanged [Event]
This event is raised whenever the selection changes in the Process Analyst.
Defined As
l

[VBA] PenSelectionChanged (pen As Object)

[Cicode] PenSelectionChanged (OBJECT processAnalyst, OBJECT pen)

[C++] PenSelectionChanged (IPen* pen)

Parameters
pen

Refers to the pen that now has primary selection. This maybe invalid if the last pen
was deleted from the view.
[in]

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Remarks
Selection can change via user interaction (such as clicking on pens, deleting/adding
pens) and automation.
Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.

64

Chapter: 4 Automation Model

[VBA]
Sub myPage_AN35_PenSelectionChanged(pen As Object)
End Sub

[Cicode]
FUNCTION myPage_AN35_PenSelectionChanged(OBJECT processAnalyst, OBJECT pen)
END

PropertyChanged [Event]
This event is raised whenever a property that has been subscribed to has changed.
Defined As
l

[VBA] PropertyChanged(interfaceName As String, propertyName As String)

[Cicode] PropertyChanged (OBJECT processAnalyst, STRING interfaceName, STRING


propertyName)

[C++] PropertyChanged (BSTR interfaceName, BSTR propertyName)

Parameters
interfaceName
[in]

Indicates which interface the property which has changed belongs to.

propertyName
[in]

Indicates which property has changed.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Remarks
For this event to be raised you need to subscribe to one or more properties.
See Also
IProcessAnalyst.SubscribeForPropertyChange [Method], IProcessAnalyst.UnsubscribePropertyChange [Method]
Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.

65

Chapter: 4 Automation Model

[VBA]
Sub myPage_AN35_PropertyChanged(interfaceName As String, propertyName As String)
End Sub

[Cicode]
FUNCTION myPage_AN35_PropertyChanged(OBJECT processAnalyst, STRING interfaceName,
STRING propertyName)
END

UpdateCommand [Event]
This event is raised whenever the Process Analyst needs to refresh the state of its toolbars.
Defined As
l

[VBA] UpdateCommand(commandId As String)

[Cicode] UpdateCommand(OBJECT processAnalyst, STRING commandId)

[C++] UpdateCommand(BSTR commandId)

Parameters
commandId
[in]

Contains the unique identifier of the command that needs to be refreshed.

processAnalyst
[in]

Indicates the Process Analyst object which raised the event. (Cicode only)

Remarks
This event is only raised for custom commands. use this event as an opportunity to
update the enable and/or the pressed state of the toolbar button associated with the command.
This event will be raised frequently so limit the amount of code executed in response to
this event.
An Update will be triggered in at least the following scenarios:
l

Selection changes

Command execution

Calling Syntax

66

Chapter: 4 Automation Model

Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_UpdateCommand(commandId As Integer)
End Sub

[Cicode]
FUNCTION myPage_AN35_UpdateCommand(OBJECT processAnalyst, INT commandId)
END

VerticalAxisChanged [Event]
This event is raised whenever the vertical axis position or scale of a pen is changed.
Defined As
l

[VBA] VerticalAxisChanged(pen As Object)

[Cicode] VerticalAxisChanged(OBJECT processAnalyst, OBJECT pen)

[C++] VerticalAxisChanged(IPen* pen)

Parameters
pen
[in]

Refers to the pen that has changed.

processAnalyst

[in] Indicates the Process Analyst object which raised the event. (Cicode only)
See Also
HorizontalAxisChanged [Event]
Calling Syntax
Assumes you have a Process Analyst on a page with an event class defined as myPage_
AN35.
[VBA]
Sub myPage_AN35_VerticalAxisChanged (pen As Object)
End Sub

67

Chapter: 4 Automation Model

[Cicode]
FUNCTION myPage_AN35_VerticalAxisChanged (OBJECT processAnalyst, OBJECT pen)
END

Interfaces
IAlarmPen Interface
IAnalogPen Interface
ICommand Interface
ICommandSystem Interface
ICursors Interface
IDigitalPen Interface
IObjectView Interface
IObjectViewColumn Interface
IObjectViewColumns Interface
IObjectViewItem Interface
IObjectViewItems Interface
IObjectViewPenItem Interface
IPane Interface
IPanes Interface
IPen Interface
IPens Interface
IProcessAnalyst Interface
IToolbar Interface
IToolbars Interface
IToolbarButton Interface
IToolbarButtons Interface
ITrendCursor Interface

IAlarmPen Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IAlarmPen

Methods (6)

68

Chapter: 4 Automation Model

IAlarmPen.GetFillColor [Method]
IAlarmPen.SetFillColor [Method]
IAlarmPen.GetHatchColor [Method]
IAlarmPen.SetHatchColor [Method]
IAlarmPen.GetHatchStyle [Method]
IAlarmPen.SetHatchStyle [Method]
Properties (3)
IAlarmPen.LineColor [Property][Get/Set]
IAlarmPen.LineWidth [Property][Get/Set]
IAlarmPen.AlarmType [Property][Get/Set]

IAlarmPen.AlarmType [Property][Get/Set]
Gets or Sets the display type of this alarm pen.
Defined As
l

[VBA] Long AlarmType

[Cicode] INT AlarmType

[C++] AlarmType AlarmType

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Remarks
This AlarmType also dictates the number of alarm states, and their descriptions.
See Also
IAlarmPen.AlarmType [Property][Get/Set]
Calling Syntax
This example assumes there is a valid alarm pen object to be passed into the example
methods.
[VBA]
Sub Example(alarmPen As Object)
Dim alarmType As Long
`Getting Property value
alarmType = alarmPen.AlarmType
`Setting Property value to Analog
alarmPen.AlarmType = 1

69

Chapter: 4 Automation Model

End Sub

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
// Getting property value
INT eAlarmType = _ObjectGetProperty(hAlarmPen, "AlarmType");
// Setting property to Analog
_ObjectSetProperty(hAlarmPen, "AlarmType", 1);
END

IAlarmPen.GetFillColor [Method]
Gets the color used to fill the pen for the specified state.
Defined As
l

[VBA] GetFillColor(state as Long) as Long

[Cicode] INT GetFillColor(INT state)

[C++] HRESULT GetFillColor(int state, OLE_COLOR* color)

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Parameters
state
[in]

The state for which fill color to retrieve (0 to 8).

Remarks
The color value can be calculated using the following formula: color = (65536 * Blue) +
(256 * Green) + (Red). Where red, green and blue are 0-255.
Calling Syntax
This example assumes there is a valid AlarmPen object to be passed into the example
methods.
[VBA]
Sub Example(alarmPen As Object)
Dim fillColor As Long
fillColor = alarmPen.GetFillColor(0)

70

Chapter: 4 Automation Model

End Sub

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
INT nFillColor = _ObjectCallMethod(hAlarmPen, "GetFillColor" , 0);
END

IAlarmPen.GetHatchColor [Method]
Gets the color used to draw the outline and hatching for the specified state.
Defined As
l

[VBA] GetHatchColor(state as Long) as Long

[Cicode] INT GetHatchColor(INT state)

[C++] HRESULT GetHatchColor(int state, OLE_COLOR* color)

Execution Result
If the function succeeds, the return value will be Success. If the state is out of range, the
return value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
Parameters
state
[in]

The state for which hatch color to retrieve (0 to 8).

Remarks
The color value can be calculated using the following formula:
color = (65536 * Blue) + (256 * Green) + (Red)
where red, green, and blue are 0-255.
Calling Syntax
This example assumes there is a valid AlarmPen object to be passed into the example
methods.
[VBA]
Sub Example(alarmPen As Object)
Dim hatchColor As Long
hatchColor = alarmPen.GetHatchColor(0)
End Sub

71

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
INT nHatchColor = _ObjectCallMethod(hAlarmPen, "GetHatchColor" , 0);
END

IAlarmPen.GetHatchStyle [Method]
Gets the hatch style used when drawing the boxes for the specified state.
Defined As
l

[VBA] GetHatchStyle(state as Long) as Long

[Cicode] INT GetHatchStyle(INT state)

[C++] HRESULT GetHatchStyle(int state, HatchStyle* color)

Parameters
state
[in]

The state for which you would like to retrieve a hatch style (0 to 8).

Execution Result
If the function succeeds the return value will be Success. If the state is out of range then
the return value will be InvalidArgument. If the pen is deleted the return value will be
GeneralFailure.
Remarks
The color value can be calculated using the following formula: color = (65536 * Blue) +
(256 * Green) + (Red). Where red, green and blue are 0-255.
See Also
IAlarmPen.GetHatchStyle [Method]
Calling Syntax
This example assumes there is a valid AlarmPen object to be passed into the example
methods.
[VBA]
Sub Example(alarmPen As Object)
Dim hatchStyle As Long
hatchStyle = alarmPen.GetHatchStyle(0)

72

Chapter: 4 Automation Model

End Sub

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
INT nHatchStyle = _ObjectCallMethod(hAlarmPen, "GetHatchStyle", 0);
END

IAlarmPen.LineColor [Property][Get/Set]
Gets or Sets the color that will be used to draw the pen line.
Defined As
l

[VBA] Long LineColor

[Cicode] INT LineColor

[C++] OLE_COLOR LineColor

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted the return value
will be GeneralFailure.
Remarks
The color value can be calculated using the following formula:
color = (65536 * Blue) + (256 * Green) + (Red)
where red, green, and blue are 0-255.
Calling Syntax
This example assumes there is a valid alarm pen object to be passed into the example
methods.
[VBA]
Sub Example(alarmPen As Object)
Dim lineColor As Long
`Getting Property value
lineColor = alarmPen.LineColor
`Setting Property to red
alarmPen.LineColor = 255
End Sub

73

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
// Getting property value
INT nLineColor = _ObjectGetProperty(hAlarmPen, "LineColor");
// Setting property to red
_ObjectSetProperty(hAlarmPen, "LineColor", 255);
END

IAlarmPen.LineWidth [Property][Get/Set]
Gets or sets the width in pixels of the pen line when it is drawn.
Defined As
l

[VBA] Long LineWidth

[Cicode] INT LineWidth

[C++] int LineWidth

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted the return value
will be GeneralFailure.
Limits
l

Minimum = 0

Maximum = 8

Calling Syntax
This example assumes there is a valid alarm pen object to be passed into the example
methods.
[VBA]
Sub Example(alarmPen As Object)
Dim lineWidth As Long
`Getting Property value
lineWidth = alarmPen.LineWidth
`Setting Property value
alarmPen.LineWidth = 5
End Sub

74

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
// Getting property value
INT nLineWidth = _ObjectGetProperty(hAlarmPen, "LineWidth");
// Setting property value
_ObjectSetProperty(hAlarmPen, "LineWidth", 5);
END

IAlarmPen.SetFillColor [Method]
Sets the color used to fill the pen for the specified state.
Defined As
l

[VBA] SetFillColor(state as Long, color as Long)

[Cicode] INT SetFillColor(INT state, INT color)

[C++] HRESULT SetFillColor(int state, OLE_COLOR color)

Parameters
state
[in]

The state for which you would like to assign a fill color (0 to 8).

color
[in]

The fill color that you would like used to for this specific state.

Execution Result
If the function succeeds, the return value will be Success. If the state is out of range, the
return value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
Remarks
The color value can be calculated using the following formula:
color = (65536 * Blue) + (256 * Green) + (Red)
where red, green, and blue are 0-255.
Calling Syntax
This example assumes there is a valid AlarmPen object to be passed into the example
methods.
[VBA]
Sub Example(alarmPen As Object)

75

Chapter: 4 Automation Model

Dim fillColor As Long


`Setting FillColor to Red
alarmPen.SetFillColor(0, 255)
End Sub

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
// Setting FillColor to Red
_ObjectCallMethod(hAlarmPen, "SetFillColor" ,0, 255);
END

IAlarmPen.SetHatchColor [Method]
Sets the color used to draw the outline and hatching for the specified state.
Defined As
l

[VBA] SetHatchColor(state as Long, color as Long)

[Cicode] INT SetHatchColor (INT state, INT color)

[C++] HRESULT SetHatchColor (int state, OLE_COLOR color)

Parameters
state
[in]

The state for which you would like to assign a hatch color (0 to 8).

color
[in]

The color that you would like to be used for a specified states hatch.

Execution Result
If the function succeeds the return value will be Success. If the state is out of range then
the return value will be InvalidArgument. If the pen is deleted the return value will be
GeneralFailure.
Remarks
The color value can be calculated using the following formula:
color = (65536 * Blue) + (256 * Green) + (Red)
where red, green, and blue are 0-255.
Calling Syntax
This example assumes there is a valid AlarmPen object to be passed into the example
methods.

76

Chapter: 4 Automation Model

[VBA]
Sub Example(alarmPen As Object)
Dim hatchColor As Long
`Setting HatchColor to Red
alarmPen.SetHatchColor(0, 255)
End Sub

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
// Setting HatchColor to Red
_ObjectCallMethod(hAlarmPen, "SetHatchColor",0, 255);
END

IAlarmPen.SetHatchStyle [Method]
Sets the hatch style used for drawing the specified state.
Defined As
l

[VBA] SetHatchStyle(state as Long, HatchStyle as Long)

[Cicode] INT SetHatchStyle (INT state, INT hatchStyle)

[C++] HRESULT SetHatchStyle (int state, HatchStyle hatchStyle)

Parameters
state
[in]

The state for which you would like to assign a hatch style.

hatchStyle
[in]

The hatch style that will be used for the specified state.

Execution Result
If the function succeeds the return value will be Success. If the state is out of range then
the return value will be InvalidArgument. If the pen is deleted the return value will be
GeneralFailure.
Remarks
The color value can be calculated using the following formula: color = (65536 * Blue) +
(256 * Green) + (Red). Where red, green and blue are 0-255.
See Also
IAlarmPen.GetHatchStyle [Method]
Calling Syntax

77

Chapter: 4 Automation Model

This example assumes there is a valid AlarmPen object to be passed into the example
methods.
[VBA]
Sub Example(alarmPen As Object)
`Setting HatchStyle
alarmPen.SetHatchStyle(0, 1)
End Sub

[Cicode]
FUNCTION Example(OBJECT hAlarmPen)
// Setting HatchStyle
_ObjectCallMethod(hAlarmPen, "SetHatchStyle" ,0, 1);
END

IAnalogPen Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IAnalogPen

Methods (0)
Properties (3)
See Also
IAnalogPen.LineColor [Property][Get/Set]
IAnalogPen.LineInterpolation [Property][Get/Set]
IAnalogPen.LineWidth [Property][Get/Set]

IAnalogPen.LineColor [Property][Get/Set]
Gets or Sets the color that will be used to draw the pen line.
Defined As
l

[VBA] Long LineColor

[Cicode] INT LineColor

[C++] OLE_COLOR LineColor

Execution Result

78

Chapter: 4 Automation Model

If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Remarks
The color value can be calculated using the following formula:
color = (65536 * blue) + (256 * green) + (red)
where red, green, and blue are 0-255.
Calling Syntax
This example assumes there is a valid AnalogPen object to be passed into the example
methods.
[VBA]
Sub Example(analogPen As Object)
Dim lineColor As Long
`Getting Property value
lineColor = analogPen.LineColor
`Setting Property to red
analogPen.LineColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hAnalogPen)
// Getting property value
INT nLineColor = _ObjectGetProperty(hAnalogPen, "LineColor");
// Setting property to red
_ObjectSetProperty(hAnalogPen, "LineColor", 255);
END

IAnalogPen.LineInterpolation [Property][Get/Set]
Gets or sets the drawing style used for drawing the connecting lines between points for
this analog pen.
Defined As
l

[VBA] Long LineInterpolation

[Cicode] INT LineInterpolation

[C++] LineType LineInterpolation

Execution Result

79

Chapter: 4 Automation Model

If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted the return value
will be GeneralFailure.
Remarks
The LineInterpolation mode dictates how the two points of a line are joined when
drawn. If Stepped, there will be two lines joining each point, one horizontal and one vertical. If Straight, only one line is used to directly connect the two points.
See Also
LineType [Enumeration]
Calling Syntax
This example assumes there is a valid Analog Pen object to be passed into the example
methods.
[VBA]
Sub Example(analogPen As Object)
Dim lineInterpolation As Long
`Getting Property value
lineInterpolation = analogPen.LineInterpolation
`Setting Property value
analogPen.LineInterpolation = 1
End Sub

[Cicode]
FUNCTION Example(OBJECT hAnalogPen)
// Getting property value
INT nInterpolation = _ObjectGetProperty(hAnalogPen, "LineInterpolation");
// Setting property value
_ObjectSetProperty(hAnalogPen, "LineInterpolation", 1);
END

IAnalogPen.LineWidth [Property][Get/Set]
Gets or sets the width in pixels of the pen line when it is drawn.
Defined As
l

[VBA] Long LineWidth

[Cicode] INT LineWidth

[C++] int LineWidth

Execution Result

80

Chapter: 4 Automation Model

If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
l

Minimum = 0

Maximum = 8

Calling Syntax
This example assumes there is a valid Analog Pen object to be passed into the example
methods.
[VBA]
Sub Example(analogPen As Object)
Dim lineWidth As Long
`Getting Property value
lineWidth = analogPen.LineWidth
`Setting Property value
analogPen.LineWidth = 5
End Sub

[Cicode]
FUNCTION Example(OBJECT hAnalogPen)
// Getting property value
INT nLineWidth = _ObjectGetProperty(hAnalogPen, "LineWidth");
// Setting property value
_ObjectSetProperty(hAnalogPen, "LineWidth", 5);
END

ICommand Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] ICommand

Methods (0)
Properties (6)

81

Chapter: 4 Automation Model

ICommand.CommandId [Property][Get]
ICommand.ButtonType [Property][Get]
ICommand.Enabled [Property][Get/Set]
ICommand.Pressed [Property][Get/Set]
ICommand.Tooltip [Property][Get]
ICommand.Privilege [Property][Get]

ICommand.Tooltip [Property][Get]
Gets this commands Tooltip text.
Defined As
l

[VBA] String Tooltip

[Cicode] STRING Tooltip

[C++] VARIANT_BOOL Tooltip

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is
invalid, the return value will be InvalidArgument. If the command has been deleted, the
return value will be GeneralFailure.
Remarks
This returns the text that is displayed in a tooltip window when the mouse pointer hovers over the command's button.
Calling Syntax
This example assumes there is a valid Command object as retrieved from a Process
Analyst's CommandSystem. (for example, VBA: ProcessAnalyst.CommandSystem.Item(1))
[VBA]
Sub Example(Command As Object)
Dim tooltip As String
`Getting Property value
tooltip = Command.Tooltip
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommand)
// Getting property value
STRING sTooltip = _ObjectGetProperty(hCommand, "Tooltip");

82

Chapter: 4 Automation Model

END

ICommand.ButtonType [Property][Get]
Gets this commands button type.
Defined As
l

[VBA] Long ButtonType

[Cicode] INT ButtonType

[C++] ToolbarButtonType ButtonType

Execution Results
If the property get succeeds, the return value will be Success. If the return value is
invalid, the return value will be InvalidArgument. If the command has been deleted, the
return value will be GeneralFailure.
Remarks
The return value meaning is as follows:
l

ToolbarButtonType_Push = 0

ToolbarButtonType_Toggle = 1

ToolbarButtonType_Separator = 2

Calling Syntax
This example assumes there is a valid Command object as retrieved from a Process
Analyst's CommandSystem. (for example, VBA: ProcessAnalyst.CommandSystem.Item(1))
[VBA]
Sub Example(Command As Object)
Dim buttonType As Long
`Getting Property value
buttonType = Command.ButtonType
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommand)
// Getting property value
INT nButtonType = _ObjectGetProperty(hCommand, "ButtonType");
END

83

Chapter: 4 Automation Model

ICommand.CommandId [Property][Get]
Gets the CommandId of this command.
Defined As
l

[VBA] String CommandId

[Cicode] STRING hCommandId

[C++] BSTR CommandId

Calling Syntax
This example assumes there is a valid Command object as retrieved from a Process
Analyst's CommandSystem (for example, VBA: ProcessAnalyst.CommandSystem.Item(1)).
[VBA]
Sub Example(Command As Object)
Dim commandId As String
`Getting Property value
commandId = Command.CommandId
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommand)
// Getting property value
STRING nCommandId = _ObjectGetProperty(hCommand,"CommandID");
END

ICommand.Enabled [Property][Get/Set]
Gets this commands enabled state.
Defined As
l

[VBA] Boolean Enabled

[Cicode] INT Enabled

[C++] VARIANT_BOOL Enabled

Execution Result
If the property get succeeds, the return value will be Success. If the return value is
invalid, the return value will be InvalidArgument.
Limits

84

Chapter: 4 Automation Model

True (-1): Enabled

False (0): Disabled

Remarks
The setting of this property is only valid for custom commands.
Calling Syntax
This example assumes there is a valid Command object as retrieved from a Process
Analyst's CommandSystem. (for example, VBA: ProcessAnalyst.CommandSystem.Item(1))
[VBA]
Sub Example(Command As Object)
Dim enabled As Boolean
`Getting Property value
enabled = Command.Enabled
`Setting Property value
Command.Enabled = True
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommand)
// Getting property value
INT nEnabled = _ObjectGetProperty(hCommand, "Enabled");
// Setting property value
_ObjectSetProperty(hCommand, "Enabled", -1);
END

ICommand.Pressed [Property][Get/Set]
Gets and Sets this command's Pressed state.
Defined As
l

[VBA] Boolean Pressed

[Cicode] INT Pressed

[C++] VARIANT_BOOL Pressed

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Limits

85

Chapter: 4 Automation Model

True (-1): Pressed

False (0): Impressed

Remarks
This is only useful for toggle buttons, indicating whether or not the button is in a
pressed down state. The setting of this property is only valid for custom commands.
Calling Syntax
This example assumes there is a valid Command object as retrieved from a Process
Analyst's CommandSystem. (for example, VBA: ProcessAnalyst.CommandSystem.Item(1))
[VBA]
Sub Example(Command As Object)
Dim pressed As Boolean
`Getting Property value
pressed = Command.Pressed
`Setting Property value
Command.Pressed = True
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommand)
// Getting property value
INT Pressed = _ObjectGetProperty(hCommand, "Pressed");
// Setting property value
_ObjectSetProperty(hCommand, "Pressed", -1);
END

ICommand.Privilege [Property][Get]
Gets the privilege necessary to gain access to this command.
Defined As
l

[VBA] Integer Privilege

[Cicode] INT Privilege

[C++] int Privilege

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is
invalid, the return value will be InvalidArgument. If the command has been deleted, the
return value will be GeneralFailure.

86

Chapter: 4 Automation Model

Remarks
This is the necessary privilege level of the currently logged in CitectSCADA user to enable the state of this command, and hence allow access through the user interface. If the
currently logged in CitectSCADA user doesn't have this privilege, any buttons tied to
this command will be disabled.
Calling Syntax
This example assumes there is a valid Command object as retrieved from a Process
Analyst's CommandSystem. (for example, VBA: ProcessAnalyst.CommandSystem.Item(1))
[VBA]
Sub Example(Command As Object)
Dim privilege As Integer
`Getting Property value
privilege = Command.Privilege
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommand)
// Getting property value
INT Privilege = _ObjectGetProperty(hCommand, "Privilege");
END

ICommandSystem Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] ICommandSystem

Methods (3)
ICommandSystem.Create [Method]
ICommandSystem.Execute [Method]
ICommandSystem.Remove [Method]
Properties (4)

87

Chapter: 4 Automation Model

ICommandSystem.Count [Property][Get]
ICommandSystem.Item [Property][Get]
ICommandSystem._NewEnum [Property][Get]
ICommandSystem.ItemById [Property][Get]

ICommandSystem._NewEnum [Property][Get]
This allows "For... Each... Next" integration in VB.
Calling Syntax
This example assumes there is a valid CommandSystem object as retrieved from a Process Analyst. (for example, VBA: ProcessAnalyst.CommandSystem). This property is not
applicable to Cicode.
[VBA]
Sub Example(CommandSystem As Object)
Dim command As Object
Dim count Object
`Using Property
For Each command In CommandSystem
count = count + 1
Next command
End Sub

ICommandSystem.Count [Property][Get]
Gets the number of commands in the command system.
Defined As
l

[VBA] Long Count

[Cicode] INT Count

[C++] int Count

Execution Result
If the property get succeeds, the return value will be Success.
Calling Syntax
This example assumes there is a valid CommandSystem object as retrieved from a Process Analyst. (for example, VBA: ProcessAnalyst.CommandSystem).

88

Chapter: 4 Automation Model

[VBA]
Function Example(CommandSystem As Object)
Dim count As Long
`Getting Property value
count = CommandSystem.Count
End Function

[Cicode]
FUNCTION Example(OBJECT hCommandSystem)
// Getting property value
INT nCount = _ObjectGetProperty(hCommandSystem, "Count");
END

ICommandSystem.Create [Method]
Creates a new Command object that is added to the CommandSystem.
Defined As
l

[VBA] object Create (commandID As String, buttonType As Integer, tooltip As String,


iconPath As String, privilege As Integer)

[Cicode] OBJECT Create (STRING commandID, INT buttonType, STRING tooltip,


STRING iconPath, INT Privilege)

[C++] HRESULT Create (BSTR commandID, ToolbarButtonType ButtonType, BSTR


tooltip, BSTR iconPath, int privilege, ICommand** Val)

Parameters
commandID
[in]

A unique identifier for this command (1-64 characters).

buttonType
[in]

A value representing a button type.

ToolbarButtonType_Push = 0

ToolbarButtonType_Toggle = 1

ToolbarButtonType_Separator = 2

tooltip
[in]

The text to be displayed as a tooltip for this command (1-64 characters).

iconPath
[in]

The path to an icon file that will be used as this command's picture.

privilege

89

Chapter: 4 Automation Model

A privilege value necessary by the CitectSCADA user to gain access to this command (0-8).
[in]

Execution Result
If the method succeeds, the return value is Success. If an argument is invalid or out of
range, the return value is InvalidArgument. If the command was not created, the return
value is GeneralFailure.
Remarks
The commandID cannot begin with the prefix "Citect_".
Calling Syntax
This example assumes there is a valid CommandSystem object as retrieved from a Process Analyst. (for example, VBA: ProcessAnalyst.CommandSystem).
[VBA]
Sub Example(CommandSystem As Object)
Dim command As Object
Set command = CommandSystem.Create(CommandIO,
"Some tooltip text", "c:\someicon.ico", 5)
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommandSystem)
OBJECT hCommand = _ObjectCallMethod(hCommandSystem,
"Create", CommandIO, "Some tooltip text", "c:\someicon.ico", 5);
END

ICommandSystem.Execute [Method]
Executes the specified command's action.
Defined As
l

[VBA] Execute (commandId As String)

[Cicode] Execute (STRING commandId)

[C++] HRESULT Execute(BSTR commandId)

Parameters
commandId
[in]

The unique ID of the command whose action is to be executed.

Execution Result

90

Chapter: 4 Automation Model

If this method succeeds, the return value will be Success. If the command is invalid, the
return value will be InvalidArgument.
Remarks
If the current Operator does not have the correct privilege, the command will not
execute.
Calling Syntax
This example assumes there is a valid CommandSystem object as retrieved from a Process Analyst. (for example, VBA: ProcessAnalyst.CommandSystem).
[VBA]
Sub Example(CommandSystem As Object)
CommandSystem.Execute(Citect_Command_AddPen)
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommandSystem)
_ObjectCallMethod(hCommandSystem, "Execute", Citect_Command_AddPen);
END

ICommandSystem.Item [Property][Get]
Gets the Command at a supplied index location in this collection.
Defined As
l

[VBA] Item(index As Long) as Object

[Cicode] OBJECT Item(INT index)

[C++] Item(int index, ICommand* Item)

Parameters
index

Indicates the index location of the command to return from this collection. (One
based)
[in]

Execution Result
If the property get succeeds, the return value will be Success. If the index is out of range,
the return value will be InvalidArgument.
Calling Syntax

91

Chapter: 4 Automation Model

This example assumes there is a valid CommandSystem object as retrieved from a Process Analyst. (for example, VBA: ProcessAnalyst.CommandSystem).
[VBA]
Sub Example(CommandSystem As Object)
Dim command As Object
`Getting Property value
Set command = CommandSystem.Item(1)
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommandSystem)
// Getting property value
OBJECT hCommand = _ObjectCallMethod(hCommandSystem, "get_Item", 1);
END

ICommandSystem.ItemById [Property][Get]
Gets the Command at a supplied index location in this collection.
Defined As
l

[VBA] Object Command

[Cicode] OBJECT hCommand

[C++] ICommand* Command

Parameters
commandId
[in]

Indicates command ID of the command to return from this collection.

Calling Syntax
This example assumes there is a valid CommandSystem object as retrieved from a Process Analyst. (for example, VBA: ProcessAnalyst.CommandSystem).
[VBA]
Sub Example(CommandSystem As Object)
Dim command As Object
`Getting Property value
Set command = CommandSystem.ItemById(Citect_Command_AddPen)
End Sub

92

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hCommandSystem)
// Getting property value
OBJECT hCommand = _ObjectCallMethod
(hCommandSystem," get_ItemById", Citect_Command_AddPen);
END

ICommandSystem.Remove [Method]
Removes the specified command.
Defined As
l

[VBA] Remove (commandId As String)

[Cicode] Remove (STRING CommandId)

[C++] HRESULT Remove(BSTR CommandId)

Parameters
commandId
[in]

The ID of the command to be removed.

Calling Syntax
This example assumes there is a valid CommandSystem object as retrieved from a Process Analyst. (for example, VBA: ProcessAnalyst.CommandSystem).
[VBA]
Sub Example(CommandSystem As Object)
CommandSystem.Remove("MyCommand1")
End Sub

[Cicode]
FUNCTION Example(OBJECT hCommandSystem)
_ObjectCallMethod(hCommandSystem, "Remove", "MyCommand1");
END

ICursors Interface
Defined As

93

Chapter: 4 Automation Model

[VBA] Object

[Cicode] OBJECT

[C++] ICursors

Methods
ICursors.Create [Method]
ICursors.RemoveAll [Method]
Properties
ICursors.Item [Property][Get]
ICursors._NewEnum [Property][Get]
ICursors.Count [Property][Get]
ICursors.ItemByName [Property][Get]

ICursors._NewEnum [Property][Get]
Retrieves an enumerator for the cursors collection.
Defined As
l

[VBA] Object _NewEnum()

[C++] HRESULT get__NewEnum(LPUNKNOWN *pVal)

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the collection is deleted, the return value
will be GeneralFailure.
Remarks
Provided for the implementation of For Each...Next loops in Citect VBA (See Calling Syntax, below). This property cannot be used in Cicode.
Calling Syntax
This example assumes you have a valid reference to the cursors collection and that there
are cursors in the collection.
[VBA]
Sub Example(cursors As Object)
Dim cursor As Object
Dim count As Integer = 0
For Each cursor In cursors
Set count = count + 1
Next
End Sub

94

Chapter: 4 Automation Model

ICursors.Count [Property][Get]
Returns the number of cursors in the collection.
Defined As
l

[VBA] Integer Count()

[Cicode] INT Count()

[C++] HRESULT get_Count (long *pCount)

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad
then the return value will be InvalidArgument. If the collection is deleted the return
value will be GeneralFailure.
Remarks
This property may be used in conjunction with the Item property to iterate through the
collection in Cicode.
Calling Syntax
This example assumes you have a valid reference to the cursors collection.
[VBA]
Sub Example(cursors As Object)
Dim cursorCount As Integer
cursorCount = cursors.Count
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursors)
INT cursorCount;
cursorCount = _ObjectGetProperty(hCursors, "Count");
END

ICursors.Create [Method]
Creates a new TrendCursor at the given location.
Defined As

95

Chapter: 4 Automation Model

[VBA] Object Create(name As String, position As Integer)

[Cicode] OBJECT Create(STRING name, INT position)

[C++] HRESULT Create(BSTR name, int position, ITrendCursor** ppTrendCursor)

Parameters
name

The desired unique name of the new cursor. This needs to be between 1 and 250
characters.
[in]

position

The initial position of the new cursor. This value is given as the number of pixels
from the left of the Process Analyst graph view.
[in]

Execution Result
If the function succeeds, the return value will be Success. If the name is out of range, the
return value will be InvalidArgument. If the name is not unique, the return value will be
InvalidArgument.
If an unexpected error occurs, the return value will be GeneralFailure.
Remarks
The cursor name needs to be unique. Attempting to create a cursor with a name that is
already in use will result in error and the new cursor will not be created.
Calling Syntax
[VBA]
Sub Example(cursors As Object)
Dim newCursor As Object
newCursor = cursors.Create("Cursor1", 100)
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursors)
OBJECT hNewCursor = _ObjectCallMethod(hCursors, "Create", "Cursor1", 100);
END

ICursors.Item [Property][Get]
Retrieves the Cursor from the collection at the specified index.
Defined As

96

Chapter: 4 Automation Model

[VBA] Object Item(index As Integer)

[Cicode] OBJECT get_Item(INT index)

[C++] HRESULT get_Item (long index, ITrendCursor **cursor)

Parameters
index
[in]

The index of the necessary cursor.

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
If the index is out of range, the return value will be InvalidArgument. If the collection is
deleted, the return value will be GeneralFailure.
Remarks
The index for the collection is 1 based. The valid range for this parameter is between 1
and the total number of cursors.
Calling Syntax
This example assumes you have a valid reference to the cursors collection and that there
are two items in the collection.
[VBA]
Sub Example(hCursors As Object)
Dim hSecondCursor As Object
Set hSecondCursor = hCursors.Item(2)
End Sub

[Cicode]
Sub Example(OBJECT hCursors)
OBJECT hSecondCursor = _ObjectCallMethod(hCursors, "get_Item", 2);
END

ICursors.ItemByName [Property][Get]
Retrieves the Cursor at the specified index.
Defined As
l

[VBA] Object ItemByName(name As String)

[Cicode] OBJECT get_ItemByName(STRING name)

97

Chapter: 4 Automation Model

[C++] HRESULT get_ItemByName (BSTR name, ITrendCursor **cursor)

Parameters
name
[in]

The name of the necessary cursor.

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the cursor is not found, the return value
will be InvalidArgument.
If the collection is deleted, the return value will be GeneralFailure.
Calling Syntax
This example assumes you have a valid reference to the cursors collection, and that
there is a cursor in the collection named "MyCursor".
[VBA]
Sub Example(cursors As Object)
Dim cursor As Object
Set cursor = cursors.ItemByName("MyCursor")
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursors)
OBJECT hCursor = _ObjectCallMethod(hCursors, "get_ItemByName", "MyCursor");
END

ICursors.RemoveAll [Method]
Removes every cursor from the collection.
Defined As
l

[VBA] RemoveAll()

[Cicode] RemoveAll()

[C++] HRESULT RemoveAll()

Execution Result
If the function succeeds the return value will be Success. If an unexpected error occurs,
the return value will be GeneralFailure.
Calling Syntax

98

Chapter: 4 Automation Model

This example assumes there is a valid Cursors object to be passed into the example
methods.
[VBA]
Sub Example(cursors As Object)
cursors.RemoveAll
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursors)
_ObjectCallMethod(hCursors, "RemoveAll");
End Sub

IDigitalPen Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IDigitalPen

Methods (0)
Properties (4)
IDigitalPen.FillColor [Property][Get/Set]
IDigitalPen.LineColor [Property][Get/Set]
IDigitalPen.LineWidth [Property][Get/Set]
IDigitalPen.Fill [Property][Get/Set]

IDigitalPen.Fill [Property][Get/Set]
Gets or sets whether the pen fill is displayed.
Defined As
l

[VBA] Boolean Fill

[Cicode] INT Fill

[C++] VARIANT_BOOL Fill

Execution Result

99

Chapter: 4 Automation Model

If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted the return value
will be GeneralFailure.
Remarks
If the pen is filled, the area under the pen line will be filled with the color specified by
the FillColor property.
See Also
IDigitalPen.FillColor [Property][Get/Set]
Limits
l

True (-1): = Fill is displayed

False (0): = Fill is hidden

Calling Syntax
This example assumes there is a valid digital pen object to be passed into the example
methods.
[VBA]
Sub Example(digitalPen As Object)
Dim fill As Boolean
`Getting Property value
fill = digitalPen.Fill
`Setting Property value
digitalPen.Fill = True
End Sub

[Cicode]
FUNCTION Example(OBJECT hDigitalPen)
// Getting property value
INT nFill = _ObjectGetProperty(hDigitalPen, "Fill");
// Setting property value
_ObjectSetProperty(hDigitalPen, "Fill", -1);
END

IDigitalPen.FillColor [Property][Get/Set]
Gets or Sets the color that will be used to fill the area under the line when the value is 1.
Defined As

100

[VBA] Long FillColor

[Cicode] INT FillColor

Chapter: 4 Automation Model

[C++] OLE_COLOR FillColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Remarks
The color value can be calculated using the following formula:
color = (65536 * blue) + (256 * green) + (red)
where red, green, and blue are 0-255. The area under the line is filled with this color if
the value of the Fill property is True (-1).
See Also
IDigitalPen.Fill [Property][Get/Set]
Calling Syntax
This example assumes there is a valid DigitalPen object to be passed into the example
methods.
[VBA]
Sub Example(digitalPen As Object)
Dim fillColor As Long
`Getting Property value
fillColor = digitalPen.FillColor
`Setting Property to red
digitalPen.FillColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hDigitalPen)
// Getting property value
INT nFillColor = _ObjectGetProperty(hDigitalPen, "FillColor");
// Setting property to red
_ObjectSetProperty(hDigitalPen, "FillColor", 255);
END

IDigitalPen.LineColor [Property][Get/Set]
Gets or Sets the color that will be used to draw the pen line.
Defined As

101

Chapter: 4 Automation Model

[VBA] Long LineColor

[Cicode] INT LineColor

[C++] OLE_COLOR LineColor

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted the return value
will be GeneralFailure.
Remarks
The color value can be calculated using the following formula: color = (65536 * Blue) +
(256 * Green) + (Red). Where red, green and blue are 0-255.
Calling Syntax
This example assumes there is a valid DigitalPen object to be passed into the example
methods.
[VBA]
Sub Example(digitalPen As Object)
Dim lineColor As Long
`Getting Property value
lineColor = DigitalPen.LineColor
`Setting Property to red
digitalPen.LineColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hDigitalPen)
// Getting property value
INT nLineColor = _ObjectGetProperty(hDigitalPen, "LineColor");
// Setting property to red
_ObjectSetProperty(hDigitalPen, "LineColor", 255);
END

IDigitalPen.LineWidth [Property][Get/Set]
Gets or sets the width in pixels of the pen line when it is drawn.
Defined As

102

[VBA] Long LineWidth

[Cicode] INT LineWidth

[C++] int LineWidth

Chapter: 4 Automation Model

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted the return value
will be GeneralFailure.
Limits
l

Minimum = 0

Maximum = 8

Calling Syntax
This example assumes there is a valid Digital Pen object to be passed into the example
methods.
[VBA]
Sub Example(digitalPen As Object)
Dim lineWidth As Long
`Getting Property value
lineWidth = digitalPen.LineWidth
`Setting Property value
digitalPen.LineWidth = 5
End Sub

[Cicode]
FUNCTION Example(OBJECT hDigitalPen)
// Getting property value
INT nLineWidth = _ObjectGetProperty(hDigitalPen, "LineWidth");
// Setting property value
_ObjectSetProperty(hDigitalPen, "LineWidth", 5);
END

IObjectView Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IObjectView

Methods (0)
Properties (7)

103

Chapter: 4 Automation Model

IObjectView.Visible [Property][Get/Set]
IObjectView.Height [Property][Get/Set]
IObjectView.BackgroundColor [Property][Get/Set]
IObjectView.ForeColor [Property][Get/Set]
IObjectView.Columns [Property][Get]
IObjectView.Items [Property][Get]
IObjectView.SelectedItem [Property][Get]

IObjectView.BackgroundColor [Property][Get/Set]
Gets or Sets the background color of the ObjectView. This number is treated as an OLE_
COLOR inside the Process Analyst.
Defined As
l

[VBA] Long BackgroundColor

[Cicode] INT BackgroundColor

[C++] OLE_COLOR BackgroundColor

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Remarks
The color value can be calculated using the following formula: color = (65536 * Blue) +
(256 * Green) + (Red). Where red, green and blue are 0-255.
Calling Syntax
This example assumes that there is an IObjectView object being passed in as a parameter.
[VBA]
Sub Example(objectView As Object)
Dim backgroundColor As Long
`Getting Property value
backgroundColor = objectView.BackgroundColor
`Setting Property value to red
objectView.BackgroundColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectView)

104

Chapter: 4 Automation Model

// Getting property value


INT nBackgroundColor =
_ObjectGetProperty(hObjectView,"BackgroundColor");
// Setting Property to Red
_ObjectSetProperty(hObjectView, "BackgroundColor", 255);
END

IObjectView.Columns [Property][Get]
Gets the automation object representing the collection of columns currently visible in the
ObjectView.
Defined As
l

[VBA] Object Columns

[Cicode] OBJECT Columns

[C++] IObjectViewColumns* Columns

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax
This example assumes that there is an IObjectView object being passed in as a parameter.
[VBA]
Sub Example(objectView As Object)
Dim columns As Object
`Getting Property value
Set columns = objectView.Columns
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectView)
// Getting property value
OBJECT hColumns = _ObjectGetProperty(hObjectView, "Columns");
END

105

Chapter: 4 Automation Model

IObjectView.ForeColor [Property][Get/Set]
Gets or Sets the Fore color (text and color box outlines) of the ObjectView. This number is
treated as an OLE_COLOR inside the Process Analyst.
Defined As
l

[VBA] Long ForeColor

[Cicode] INT ForeColor

[C++] OLE_COLOR ForeColor

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Remarks
The color value can be calculated using the following formula: color = (65536 * Blue) +
(256 * Green) + (Red). Where red, green and blue are 0-255.
Calling Syntax
This example assumes that there is an IObjectView object being passed in as a parameter.
[VBA]
Sub Example(objectView As Object)
Dim foreColor As Long
`Getting Property value
foreColor = objectView.ForeColor
`Setting Property value to red
objectView.ForeColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectView)
INT nForeColor = 0;
// Getting property value
nForeColor = _ObjectGetProperty(hObjectView, "ForeColor");
// Setting Property to red
_ObjectSetProperty(hObjectView, "ForeColor", 255);
END

106

Chapter: 4 Automation Model

IObjectView.Height [Property][Get/Set]
Gets or Sets the height in pixels of the Object View window.
Defined As
l

[VBA] Long Height

[Cicode] INT Height

[C++] int Height

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. A height value less than 0 will be InvalidArgument.
Limits
l

Height needs to be 0 or greater.

Remarks
As the ObjectView and chart both share the same window, by enlarging the ObjectView,
you make the Chart smaller and vice versa.
Calling Syntax
This example assumes that there is an IObjectView object being passed in as a parameter.
[VBA]
Sub Example(objectView As Object)
Dim height As Long
`Getting Property value
height = objectView.Height
`Setting Property value
objectView.Height = 25
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectView)
INT nHeight = 0;
// Getting property value
nHeight = _ObjectGetProperty(hObjectView, "Height");
// Setting Property to false
_ObjectSetProperty(hObjectView, "Height", 25);
END

107

Chapter: 4 Automation Model

IObjectView.Items [Property][Get]
Gets the automation object representing the collection of items at the root of the ObjectView tree.
Defined As
l

[VBA] Object Items

[Cicode] OBJECT Items

[C++] IObjectViewItems* Items

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Remarks
The method will provide a list of the pane items in tree. Each pane item has an Items
property which allows access to the pen items listed under it.
Calling Syntax
This example assumes that there is an IObjectView object being passed in as a parameter.
[VBA]
Sub Example(objectView As Object)
Dim items As Object
`Getting Property value
Set items = objectView.Items
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectView)
// Getting property value
OBJECT hItems = _ObjectGetProperty(hObjectView, "Items");
END

108

Chapter: 4 Automation Model

IObjectView.SelectedItem [Property][Get]
Gets the current primary selection in the ObjectView. This is the pen item that was last
selected.
Defined As
l

[VBA] Object SelectedItem

[Cicode] OBJECT SelectedItem

[C++] IObjectViewItem* SelectedItem

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax
This example assumes that there is an IObjectView object being passed in as a parameter.
[VBA]
Sub Example(objectView As Object)
Dim selectedItem As Object
`Getting Property value
Set selectedItem = objectView.SelectedItem
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectView)
// Getting property value
OBJECT hSelectedItem = _ObjectGetProperty(hObjectView, "SelectedItem");
END

IObjectView.Visible [Property][Get/Set]
Gets or Sets the visibility of the Object View window.
Defined As
l

[VBA] Boolean Visible

[Cicode] INT Visible

[C++] VARIANT_BOOL Visible

Execution Result

109

Chapter: 4 Automation Model

If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Limits
l

True (-1): Visible

False (0): Hidden

Remarks
By hiding the ObjectView, the chart gains the real estate previously held by it, and likewise the chart loses real estate when the ObjectView gets shown.
Calling Syntax
Assume that there is an IObjectView object being passed in as a parameter.
[VBA]
Sub Example(objectView As Object)
Dim visible As Boolean
`Getting Property value
visible = objectView.Visible
`Setting Property value
objectView.Visible = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectView)
INT bVisible = 0
// Getting property value
bVisible = _ObjectGetProperty(hObjectView, "Visible");
// Setting Property to false
_ObjectSetProperty(hObjectView, "Visible", 0);
END

IObjectViewColumn Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IObjectViewColumn

Methods (0)
Properties (3)

110

Chapter: 4 Automation Model

IObjectViewColumn.Name [Property][Get]
IObjectViewColumn.Text [Property][Get]
IObjectViewColumn.Width [Property][Get/Set]

IObjectViewColumn.Name [Property][Get]
Retrieves the unique identifier of this column.
Defined As
l

[VBA] String Name

[Cicode] STRING Name

[C++] BSTR Name

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax
This example assumes there is a valid column as retrieved from an ObjectView. (for
example, VBA: objectView.Columns.Item(1)).
[VBA]
Sub Example(objectViewColumn As Object)
Dim name As String
`Getting Property value
name = objectViewColumn.Name
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectViewColumn)
// Getting property value
STRING name = _ObjectGetProperty(hObjectViewColumn, "Name");
END

IObjectViewColumn.Text [Property][Get]
Gets the Text that is being displayed for this columns header.
Defined As
l

[VBA] String Text

[Cicode] STRING Text

111

Chapter: 4 Automation Model

[C++] BSTR Text

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax
This example assumes there is a valid column as retrieved from an ObjectView. (for
example, VBA: objectView.Columns.Item(1)).
[VBA]
Sub Example(objectViewColumn As Object)
Dim text As String
`Getting Property value
text = objectViewColumn.Text
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectViewColumn)
// Getting property value
STRING text = _ObjectGetProperty(hObjectViewColumn, "Text");
END

IObjectViewColumn.Width [Property][Get/Set]
Gets or Sets the width in pixels of this column.
Defined As
l

[VBA] Long Width

[Cicode] INT Width

[C++] int Width

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the width is out of range, the result will be
InvalidArgument.
Limits
A valid width is 0-1000.
Calling Syntax

112

Chapter: 4 Automation Model

This example assumes there is a valid column as retrieved from an ObjectView. (for
example, VBA: objectView.Columns.Item(1)).
[VBA]
Sub Example(objectViewColumn As Object)
Dim width As Long
`Getting Property value
width = objectViewColumn.Width
`Setting Property value
objectViewColumn.Width = 150
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectViewColumn)
// Getting property value
INT width = _ObjectGetProperty(hObjectViewColumn, "Width");
_ObjectSetProperty(hObjectViewColumn, "Width", 150);
END

IObjectViewColumns Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IObjectViewColumns

Methods (4)
IObjectViewColumns.Add [Method]
IObjectViewColumns.Hide [Method]
IObjectViewColumns.Remove [Method]
IObjectViewColumns.Show [Method]
Properties (4)
IObjectViewColumns.Count [Property][Get]
IObjectViewColumns.Item [Property][Get]
IObjectViewColumns.ItemByName [Property][Get]
IObjectViewColumns._NewEnum [Property][Get]

113

Chapter: 4 Automation Model

IObjectViewColumns._NewEnum [Property][Get]
This allows "For... Each... Next" integration in VB.
Calling Syntax
This example assumes there is a valid Columns collection as retrieved from an ObjectView. (for example, VBA: objectView.Columns). This property is not applicable in
Cicode.
[VBA]
Sub Example(Columns As Object)
Dim column As Object
Dim count Object
`Using Property
For Each column In Columns
count = count + 1
Next column
End Sub

IObjectViewColumns.Add [Method]
Adds a visible custom column to the ObjectView.
Defined As
l

[VBA] Add(name As String, DisplayText As String, Width As Long)

[Cicode] Add(STRING name, STRING DisplayText, INT Width)

[C++] HRESULT Add (BSTR name, BSTR text, int width)

Parameters
name
[in]

The string ID uniquely identifying this column (1-64).

text
[in]

The title to be displayed in the column header (0-256).

width
[in]

The width of this column in pixels (0-1000).

Execution Result
If the method succeeds, the return value will be Success. If an argument is out of range,
the return value will be InvalidArgument. If the column cannot be added, the return
value is GeneralFailure.

114

Chapter: 4 Automation Model

See Also
OVColumnAdded [Event]
Calling Syntax
This example assumes there is a valid Columns collection as retrieved from an ObjectView. (for example, VBA: objectView.Columns).
[VBA]
Sub Example(Columns As Object)
Columns.Add "NameID", "New Column", 120;
End Sub

[Cicode]
FUNCTION Example(OBJECT hColumns)
_ObjectCallMethod(hColumns, "Add", "NameID", "New Column", 120);
END

IObjectViewColumns.Count [Property][Get]
Gets the number of Columns in this columns collection.
Defined As
l

[VBA] Long Count

[Cicode] INT Count

[C++] int Count

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax
This example assumes there is a valid Columns collection as retrieved from an ObjectView. (for example, VBA: ObjectView.Columns).
[VBA]
Function Example(Columns As Object)
Dim count As Long
`Getting Property value
count = Columns.Count
End Function

115

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hColumns)
// Getting property value
INT nCount = _ObjectGetProperty(hColumns, "Count");
END

IObjectViewColumns.Hide [Method]
Makes the specified column hidden within the Object View.
Defined As
l

[VBA] Hide(columnName As String)

[Cicode] Hide(STRING columnName)

[C++] HRESULT Hide(BSTR columnName)

Parameters
columnName
[in]

The string ID uniquely identifying the column you want to hide

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the field cannot be set, GeneralFailure is
returned.
See Also
IObjectViewColumns.Show [Method]
Calling Syntax
This example assumes there is a columns Collection from an ObjectView. (for example,
VBA: objectView.Columns).
[VBA]
Sub Example(columns As Object)
columns.Hide "Error"
End Sub

116

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hColumns)
_ObjectCallMethod(hColumns, "Hide", "Error");
END

IObjectViewColumns.Item [Property][Get]
Gets the ObjectViewItem at a supplied index location in this collection.
Defined As
l

[VBA] Item(index As Long) as Object

[Cicode] OBJECT Item(INT index)

[C++] Item(int index, IObjectViewColumn* Item)

Parameters
index
[in]

Indicates the index location of the column to return from this collection. (One based)

Calling Syntax
This example assumes there is a valid Columns collection as retrieved from an ObjectView (for example, VBA: objectView.Columns).
[VBA]
Sub Example(Columns As Object)
Dim column As Object
`Getting Property value
Set column = Columns.Item(1)
End Sub

[Cicode]
FUNCTION Example(OBJECT hColumns)
// Getting property value
OBJECT hColumn = _ObjectCallMethod(hColumns, "get_Item", 1);
END

117

Chapter: 4 Automation Model

IObjectViewColumns.ItemByName [Property][Get]
Returns a reference to the column object with the given name from this column's collection.
Defined As
l

[VBA] ItemByName(columnName As String) as Object

[Cicode] OBJECT ItemByName(STRING columnName)

[C++] ItemByName(STRING columnName, IObjectViewColumn* Item)

Parameters
columnName
[in]

Indicates the unique name of the column item to return from this collection.

Execution Results
If the method succeeds, the return value will be Success. If the column cannot be found,
the return value will be InvalidArgument.
Calling Syntax
This example assumes there is a valid Columns collection object to be passed into the
example methods.
[VBA]
Sub Example(columns As Object)
Dim column As Object
`Getting Property value
Set column = columns.ItemByName("Duration")
End Sub

[Cicode]
FUNCTION Example(OBJECT hColumns)
// Getting property value
OBJECT hColumn = _ObjectCallMethod(hColumns, "get_ItemByName", "Duration");
END

IObjectViewColumns.Remove [Method]
Removes the specified custom column from the Object View columns.
Defined As

118

Chapter: 4 Automation Model

[VBA] Remove(columnName As String)

[Cicode] OBJECT Remove(STRING columnName)

[C++] Remove(STRING columnName)

Parameters
columnName

[in] Indicates the unique name of the column to remove from this collection.
Execution Results
If the method succeeds, the return value will be Success. If the column cannot be found,
the return value will be InvalidArgument.
Remarks
Only user created custom columns can be removed.
Calling Syntax
This example assumes there is a valid Columns collection object to be passed into the
example methods.
[VBA]
Sub Example(columns As Object)
Dim column As Object
`Getting Property value
Set column = columns.Remove("MyCustomColumn")
End Sub

[Cicode]
FUNCTION Example(OBJECT hColumns)
// Getting property value
OBJECT hColumn = _ObjectCallMethod(hColumns, "get_ItemByName",
"MyCustomColumn");
END

IObjectViewColumns.Show [Method]
Makes the specified column visible within the Object View.
Defined As
l

[VBA] Show(columnName As String)

[Cicode] Show(STRING columnName)

[C++] HRESULT Show(BSTR columnName)

119

Chapter: 4 Automation Model

Parameters
columnName
[in]

The string ID uniquely identifying the column you want to make visible

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the field cannot be set, then GeneralFailure
is returned.
See Also
IObjectViewColumns.Hide [Method]
Calling Syntax
This example assumes there is a columns Collection from an ObjectView. (for example,
VBA: objectView.Columns).
[VBA]
Sub Example(columns As Object)
columns.Show "Error"
End Sub

[Cicode]
FUNCTION Example(OBJECT hColumns)
_ObjectCallMethod(hColumns, "Show", "Error");
END

IObjectViewItem Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IObjectViewItem

Methods (2)
IObjectViewItem.GetField [Method]
IObjectViewItem.PutField [Method]
Properties (3)

120

Chapter: 4 Automation Model

IObjectViewItem.Expanded [Property][Get/Set]
IObjectViewItem.Tag [Property][Get/Set]
IObjectViewItem.Items [Property][Get]

IObjectViewItem.Expanded [Property][Get/Set]
Gets or Sets the expanded state of an item in the ObjectView. This change is reflected
immediately in the visualization of the ObjectView.
Defined As
l

[VBA] Boolean Expanded

[Cicode] INT Expanded

[C++] VARIANT_BOOL Expanded

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Limits
l

True (-1): Expanded

False (0): Collapsed

Calling Syntax
This example assumes there is a valid Item as retrieved from an Items Collection from
an ObjectView. (for example, VBA: objectView.Items.Item(1)).
[VBA]
Sub Example(objectViewItem As Object)
Dim expanded As Boolean
`Getting Property value
expanded = objectViewItem.Expanded
`Setting Property value
objectViewItem.Expanded = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectViewItem)
// Getting property value
INT nExpanded = _ObjectGetProperty(hObjectViewItem, "Expanded");
// Setting Property
_ObjectSetProperty(hObjectViewItem, "Expanded", 0);
END

121

Chapter: 4 Automation Model

IObjectViewItem.GetField [Method]
Returns the string value of a displayed field for a specified column on this item.
The IObjectViewItem interface is hierarchical to two levels - pane and then pen. The
result of the GetField method will depend on what type of item it is called on. To access
the fields for a pen, for example, you have to first get the items collection for the pane
item, then get the pen item.
Defined As
l

[VBA] GetField(ColumnName As String) as String

[Cicode] STRING GetField (STRING ColumnName)

[C++] HRESULT GetField (BSTR ColumnName, BSTR *Val)

Parameters
ColumnName
[in]

The string ID uniquely identifying the column whose field value is being queried

for.
Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the ColumnName does not exist, InvalidArgument will be returned.
Calling Syntax
This example gets the Scale property of the first pen in the first pane. It assumes there is
a valid Item as retrieved from an Items Collection from an ObjectView. (for example,
VBA: objectView.Items.Item(1))
[VBA]
Sub Example()
Dim paneItem As Object
Dim penItem As Object
Dim fieldValue As String
Set paneItem = Test_CPA.ObjectView.Items.Item(1) &#39;
Get the first pane of the ObjectView
Set penItem = paneItem.Items.Item(1) &#39;
Get the first pen from the first pane
penItem.GetField "Scale", fieldValue &#39;
Get the value of the scale field
End Sub

122

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hObjectView)
OBJECT hPaneItems = _ObjectGetProperty(hObjectView, "Items");
OBJECT hPaneItem = _ObjectCallMethod(hPaneItems, "get_Item", 1);
// Get the first pane of the ObjectView
OBJECT hPenItems = _ObjectGetProperty(hPaneItem, "Items");
// Get the collection of pens from the first pane
OBJECT hPenItem = _ObjectCallMethod(hPenItems, "get_Item", 1);
// Get the first Pen item
STRING sValue;
_ObjectCallMethod(hPenItem, "GetField", "Scale", sValue);
// Get the value of the scale field
END

IObjectViewItem.Items [Property][Get]
Gets the automation object representing the collection of child items under this item.
Defined As
l

[VBA] Object Items

[Cicode] OBJECT Items

[C++] IObjectViewItems* Items

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Remarks
Pane nodes are currently the only nodes that can have children.
Calling Syntax
This example assumes there is a valid item as retrieved from an ObjectView. (for example, VBA: objectView.Items.Item(1). This will be a pane).
[VBA]
Sub Example(objectViewItem As Object)
Dim items As Object
`Getting Property value
Set items = objectViewItem.Items
End Sub

123

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hObjectViewItem)
// Getting property value
OBJECT hItems = _ObjectGetProperty(hObjectViewItem, "Items");
END

IObjectViewItem.PutField [Method]
Sets the display string in a field's cell for a specified column on this item.
The IObjectViewItem interface is hierarchical to two levels - pane and then pen. The
scope of the PutField method will depend on what type of item it is called on. To set
fields for a pen, for example, you have to first get the items collection for the pane item,
then get the pen item.
Defined As
l

[VBA] PutField(columnName As String, fieldValue as String)

[Cicode] PutField (STRING columnName, STRING fieldValue)

[C++] HRESULT PutField (BSTR columnName, BSTR fieldValue)

Parameters
columnName
[in]

The string ID uniquely identifying the column whose field value is being set.

fieldValue

The string you would like to be displayed in the field for this column/pen intersection.
[in]

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the field cannot be set, then GeneralFailure
is returned.
Calling Syntax
This example writes the value "someValue" to the CustomColumn field of the first pen
in the first pane. It assumes there is a valid Item as retrieved from an Items Collection
from an ObjectView. (for example, VBA: objectView.Items.Item(1)).

124

Chapter: 4 Automation Model

[VBA]
Sub Example()
Dim paneItem As Object
Dim penItem As Object
Set paneItem = Test_CPA.ObjectView.Items.Item(1) &#39;
Get the first pane of the ObjectView
Set penItem = paneItem.Items.Item(1) &#39;
Get the first pen from the first pane
penItem.PutField "CustomColumn", "someValue"
'set the value of the CustomColumn field
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectView)
OBJECT hPaneItems = _ObjectGetProperty(hObjectView, "Items");
OBJECT hPaneItem = _ObjectCallMethod(hPaneItems, "get_Item", 1);
// Get the first pane of the ObjectView
OBJECT hPenItems = _ObjectGetProperty(hPaneItem, "Items");
// Get the collection of pens from the first pane
OBJECT hPenItem = _ObjectCallMethod(hPenItems, "get_Item", 1);
// Get the first Pen item
_ObjectCallMethod(hPenItem, "PutField", "CustomColumn", "someValue");
// Set the value of the CustomColumn field
END

IObjectViewItem.Tag [Property][Get/Set]
Gets or Sets a user specified piece of data to associate with this Item.
Defined As
l

[VBA] <Any Type> Tag

[Cicode] <Any Type> Tag

[C++] VARIANT Tag

Remarks
The user can associate any variant of data with a pen. This is handy for associating
some custom data with a pen item, and then having direct access to it whenever any
events with a pen item target occur.
Calling Syntax
This example assumes there is a valid Item as retrieved from an Items Collection from
an ObjectView. (for example, VBA: objectView.Items.Item(1)).

125

Chapter: 4 Automation Model

[VBA]
Sub Example(objectViewItem As Object)
Dim tag As Variant
`Getting Property value
tag = objectViewItem.Tag
`Setting Property value to red
objectViewItem.Tag = tag
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectViewItem)
// Getting property value
INT nTag = _ObjectGetProperty(hObjectViewItem, "Tag");
// Setting Property to red
_ObjectSetProperty(hObjectView, "Tag", nTag);
END

IObjectViewItems Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IObjectViewItems

Methods (0)
Properties (3)
IObjectViewItems.Count [Property][Get]
IObjectViewItems.Item [Property][Get]
IObjectViewItems._NewEnum [Property][Get]

IObjectViewItems._NewEnum [Property][Get]
This allows For.. Each.. Next integration in VB.
Calling Syntax
This example assumes there is a valid Items collection as retrieved from an ObjectView.
(for example, VBA: objectView.Items). This property is not applicable to Cicode.

126

Chapter: 4 Automation Model

[VBA]
Sub Example(Items As Object)
Dim item As Object
Dim count Object
`Using Property
For Each item In Items
count = count + 1
Next Item
End Sub

IObjectViewItems.Count [Property][Get]
Gets the number of child items under this item.
Defined As
l

[VBA] Long Count

[Cicode] INT Count

[C++] int Count

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax
This example assumes there is a valid Items collection as retrieved from an ObjectView.
(for example, VBA: objectView.Items)
[VBA]
Sub Example(Items As Object)
Dim count As Long
`Getting Property value
count = Items.Count
End Sub

[Cicode]
FUNCTION Example(OBJECT hItems)
// Getting property value
INT nCount = _ObjectGetProperty(hItems, "Count");
END

127

Chapter: 4 Automation Model

IObjectViewItems.Item [Property][Get]
Gets the ObjectViewItem at a supplied index location in this collection.
Defined As
l

[VBA] Item(index As Long) as Object

[Cicode] OBJECT Item(INT index)

[C++] Item(int index, IObjectViewItem* Item)

Parameters
index

Indicates the index location of the child item to return from this collection. (One
based)
[in]

Calling Syntax
This example assumes there is a valid Items collection as retrieved from an ObjectView.
(for example, VBA: objectView.Items).
[VBA]
Sub Example(Items As Object)
Dim item As Object
`Getting Property value
Set item = Items.Item(1)
End Sub

[Cicode]
FUNCTION Example(OBJECT hItems)
// Getting property value
OBJECT hItem = _ObjectCallMethod(hItems, "get_Item", 1);
END

IObjectViewPenItem Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IObjectViewPenItem

Methods (0)

128

Chapter: 4 Automation Model

Properties (3)
IObjectViewPenItem.BlockColor [Property][Get])
IObjectViewPenItem.Checked [Property][Get/Set]
IObjectViewPenItem.Selected [Property][Get]

IObjectViewPenItem.BlockColor [Property][Get]
Gets the color representing this item in the ObjectView.
Defined As
l

[VBA] Long BlockColor

[Cicode] INT BlockColor

[C++] OLE_COLOR BlockColor

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Remarks
The color value can be calculated using the following formula: color = (65536 * Blue) +
(256 * Green) + (Red) where red, green, and blue are 0-255.
Calling Syntax
This example assumes there is a valid pen item as retrieved from an ObjectView. (for
example, VBA: ObjectView.Items.Item(1).Items.Item(1) This will be a pen).
[VBA]
Sub Example(objectViewPenItem As Object)
Dim blockColor As Long
`Getting Property value
blockColor = objectViewPenItem.BlockColor
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectViewPenItem)
// Getting property value
INT blockColor = _ObjectGetProperty(hObjectViewItem, "BlockColor");
END

129

Chapter: 4 Automation Model

IObjectViewPenItem.Checked [Property][Get/Set]
Gets or Sets whether or not this pen item is checked.
Defined As
l

[VBA] Boolean Checked

[Cicode] INT Checked

[C++] VARIANT_BOOL Checked

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Limits
l

True (-1): Checked

False (0): Unchecked

Remarks
This reflects the pens visibility property directly, and any sets to this property will reflect
immediately in the update of the Process Analyst display.
See Also
OVItemChecked [Event]
Calling Syntax
This example assumes there is a valid pen item as retrieved from an ObjectView. (for
example, VBA: objectView.Items.Item(1).Items.Item(1) This will be a pen).
[VBA]
Sub Example(objectViewPenItem As Object)
Dim checked As Boolean
`Getting Property value
checked = objectViewPenItem.Checked
`Setting Property value
objectViewPenItem.Checked = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectViewPenItem)
// Getting property value
INT checked = _ObjectGetProperty(hObjectViewItem, "Checked");
// Setting property value

130

Chapter: 4 Automation Model

_ObjectSetProperty(hObjectViewItem, "Checked", 0);


END

IObjectViewPenItem.Selected [Property][Get]
Gets whether or not this pen is the selected pen in its pane.
Defined As
l

[VBA] Boolean Selected

[Cicode] INT Selected

[C++] VARIANT_BOOL Selected

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Limits
l

True (-1): Selected

False (0): Unselected

Remarks
Each Pane has one selected pen. It is visually emphasized by a vertical gradient fill.
Calling Syntax
This example assumes there is a valid pen item as retrieved from an ObjectView. (for
example, VBA: objectView.Items.Item(1).Items.Item(1) This will be a pen).
[VBA]
Sub Example(objectViewPenItem As Object)
Dim selected As Boolean
`Getting Property value
selected = objectViewPenItem.Selected
End Sub

[Cicode]
FUNCTION Example(OBJECT hObjectViewPenItem)
// Getting property value
INT selected = _ObjectGetProperty(hObjectViewItem, "Selected");
END

131

Chapter: 4 Automation Model

IPane Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IPanes

Methods (1)
IPane.Delete [Method]
Properties (6)
IPane.Height [Property][Get/Set]
IPane.Collection [Property][Get]
IPane.Name [Property][Get/Set]
IPane.BackgroundColor [Property][Get/Set]
IPane.FixedHeight [Property][Get/Set]
IPane.Pens [Property][Get]

IPane.BackgroundColor [Property][Get/Set]
Gets or Sets the color of this Pane.
Defined As
l

[VBA] Long BackgroundColor

[Cicode] INT BackgroundColor

[C++] OLE_COLOR BackgroundColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the pane is deleted,
the return value will be GeneralFailure.
Remarks
The color value can be calculated using the following formula: color = (65536 * Blue) +
(256 * Green) + (Red). Where red, green and blue are 0-255.
Calling Syntax
This example assumes there is a valid Pane object to be passed into the example methods.

132

Chapter: 4 Automation Model

[VBA]
Sub Example(Pane As Object)
Dim backgroundColor As Long
`Getting Property value
backgroundColor = Pane.BackgroundColor
`Setting Property value to red
Pane.BackgroundColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hPane)
// Getting property value
INT nColor = _ObjectGetProperty(hPane, "BackgroundColor");
// Setting property value
_ObjectSetProperty(hPane, "Name", 255);
END

IPane.Collection [Property][Get]
Returns a reference to the Panes collection that this Pane belongs to.
Defined As
l

[VBA] Object Collection

[Cicode] OBJECT Collection

[C++] IPanes* Collection

Execution Result
If the property get succeeds the return value will be Success. If the pane is deleted the
return value will be GeneralFailure.
See Also
IPanes Interface
Calling Syntax
This example assumes there is a valid Pane object to be passed into the example methods.
[VBA]
Sub Example(pane As Object)
Dim panes As Object
`Getting Property value

133

Chapter: 4 Automation Model

Set panes = pane.Collection


End Sub

[Cicode]
FUNCTION Example(OBJECT hPane)
// Getting property value
OBJECT hPanes = _ObjectGetProperty(hPane, "Collection");
END

IPane.Delete [Method]
Removes this Pane from the collection and the display.
Defined As
l

[VBA] Delete()

[Cicode] Delete()

[C++] HRESULT Delete()

Execution Result
If the method succeeds, the return value will be Success. If the pane is already deleted,
the return value will be GeneralFailure.
Remarks
Any pen associated with the pane will also be deleted.
Calling Syntax
This example assumes there is a valid Pane object to be passed into the example methods.
[VBA]
Sub Panes(Pane As Object)
Pane.Delete()
End Sub

[Cicode]
FUNCTION Example(OBJECT hPane)
_ObjectCallMethod(hPane, "Delete");
END

134

Chapter: 4 Automation Model

IPane.FixedHeight [Property][Get/Set]
Gets or Sets whether this pane has a fixed height.
Defined As
l

[VBA] Boolean FixedHeight

[Cicode] INT FixedHeight

[C++] VARIANT_BOOL FixedHeight

Execution Result
If the property get/set succeeds, the return value will be Success. If the pane is deleted,
the return value will be GeneralFailure.
Limits
l

True (-1): Height is fixed

False (0): Height is variable

Remarks
When this property is true, the pane's Height reflects the pixel value size as gotten from
the Pane's Height property. If the FixedHeight property is false, the Height property
value is used as a ratio of the available `Variable&#39; real estate (all the left over room
in the Process Analyst after Fixed Height panes have been added) which is shared out
between the Variable Height panes.
See Also
IPane.Height [Property][Get/Set]
Calling Syntax
This example assumes there is a valid Pane object to be passed into the example methods.
[VBA]
Sub Example(pane As Object)
Dim fixedHeight As Boolean
`Getting Property value
fixedHeight = pane.FixedHeight
`Setting Property value
pane.FixedHeight = True
End Sub

135

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPane)
// Getting property value
INT bFixedHeight = _ObjectGetProperty(hPane, "FixedHeight");
// Setting property value
_ObjectSetProperty(hPane, "FixedHeight", -1);
END

IPane.Height [Property][Get/Set]
Gets or Sets the height of this pane.
Defined As
l

[VBA] Long Height

[Cicode] INT Height

[C++] int Height

Execution Result
If the property get/set succeeds, the return value will be Success. If the height is out of
range (16-1000), the return value will be InvalidArgument. If the pane is deleted, the
return value will be GeneralFailure.
Remarks
This property affects the visible height of the Pane in two different ways based on the
Boolean value of the FixedHeight property. If the FixedHeight property is True, the Pane
takes on a pixel height equivalent to the Height property value. Every pen inside the
Pane is adjusted to fit. If the FixedHeight property is False, the Height property value is
used as a ratio of the available `Variable&#39; real estate (all the left over room in the
Process Analyst after Fixed Height panes have been added) which is shared out between
the Variable Height panes.
See Also
IPane.FixedHeight [Property][Get/Set]
Calling Syntax
This example assumes there is a valid Pane object to be passed into the example methods.
[VBA]
Sub Example(Pane As Object)
Dim height As Long

136

Chapter: 4 Automation Model

`Getting Property value


height = Pane.Height
`Setting Property value
Pane.Height = 250
End Sub

[Cicode]
FUNCTION Example(OBJECT hPane)
// Getting property value
INT nHeight = _ObjectGetProperty(hPane, "Height");
// Setting property value
_ObjectSetProperty(hPane, "Height", 250);
END

IPane.Name [Property][Get/Set]
Gets or Sets the name of this pane.
Defined As
l

[VBA] String Name

[Cicode] STRING Name

[C++] BSTR Name

Execution Result
If the property get/set succeeds, the return value will be Success. If a pane of the same
name exists, the return value will be InvalidArgument. If the panes collection is deleted,
the return value will be GeneralFailure.
Limits
Name needs to be between 1-250 characters.
Remarks
Pane names needs to be unique.
Calling Syntax
This example assumes there is a valid Pane object to be passed into the example methods.
[VBA]
Sub Example(pane As Object)
Dim name As String

137

Chapter: 4 Automation Model

`Getting Property value


name = pane.Name
`Setting Property value
pane.Name = "Alarms"
End Sub

[Cicode]
FUNCTION Example(OBJECT hPane)
// Getting property value
STRING sName = _ObjectGetProperty(hPane, "Name");
// Setting property value
_ObjectSetProperty(hPane, "Name", "Alarms");
END

IPane.Pens [Property][Get]
Gets a reference to the pens collection object containing the pens for this pane.
Defined As
l

[VBA] Object Pens

[Cicode] OBJECT Pens

[C++] IPens* Pens

Execution Result
If the property get succeeds the return value will be Success. If the pane is deleted the
return value will be GeneralFailure.
See Also
IPens Interface
Calling Syntax
This example assumes there is a valid Pane object to be passed into the example methods.
[VBA]
Sub Example(pane
Dim pens
`Getting
Set pens
End Sub

138

As Object)
As Object
Property value
= pane.Pens

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPane)
// Getting property value
OBJECT hPens = _ObjectGetProperty(hPane, "Pens");
END

IPanes Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IPanes

Methods (2)
IPanes.Create [Method]
IPanes.RemoveAll [Method]
Properties (4)
IPanes.Count [Property][Get]
IPanes.Item [Property][Get]
IPanes._NewEnum [Property][Get]
IPanes.ItemByName [Property][Get]

IPanes._NewEnum [Property][Get]
This allows For.. Each.. Next integration in VB.
Calling Syntax
This example assumes there is a valid Panes collection object to be passed into the example methods. This property is not applicable to Cicode.
[VBA]
Sub Example(Panes As Object)
Dim pane As Object
Dim count As Long
`Using Property
For Each pane In Panes
count = count + 1
Next pane
End Sub

139

Chapter: 4 Automation Model

IPanes.Count [Property][Get]
Gets the number of Panes in this collection.
Defined As
l

[VBA] Long Count

[Cicode] INT Count

[C++] int Count

Execution Result
If the property get succeeds, the return value will be Success. If the panes collection is
deleted, the return value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid Panes collection object to be passed into the example methods.
[VBA]
Sub Example(Panes As Object)
Dim count As Long
`Getting Property value
count = Panes.Count
End Sub

[Cicode]
FUNCTION Example(OBJECT hPanes)
// Getting property value
INT nCount = _ObjectGetProperty(hPanes, "Count");
END

IPanes.Create [Method]
Adds a pane to this collection and returns a reference to it.
Defined As
l

[VBA] Create(name as String) as Object

[Cicode] OBJECT Create (STRING name)

[C++] HRESULT Create(BSTR name, IPane** pane)

Parameters
name

140

Chapter: 4 Automation Model

[in]

The name to give to the pane (0-250 characters).

Execution Result
If the method succeeds, the return value will be Success. If a pane of the same name
exists, the return value will be InvalidArgument. If the panes collection is deleted, the
return value will be GeneralFailure.
Remarks
When this method succeeds it will return a reference to the new IPane object.
See Also
IPanes Interface
Calling Syntax
This example assumes there is a valid Panes collection object to be passed into the example methods.
[VBA]
Sub Example(Panes As Object)
Dim pane As Object
Set pane = Panes.Create("Alarm Pane")
End Sub

[Cicode]
FUNCTION Example(OBJECT hPanes)
OBJECT hPane = _ObjectCallMethod(hPanes, "Create", "Alarm Pane");
END

IPanes.Item [Property][Get]
Gets the Pane at the given index in this Pane collection.
Defined As
l

[VBA] Item(index As Long) as Object

[Cicode] OBJECT Item(INT index)

[C++] Item(int index, IPane* Item)

Parameters
index
[in]

Indicates the location of the Pane item to return from this collection. (One based)

Execution Result

141

Chapter: 4 Automation Model

If the property get succeeds the return value will be Success. If the index is out of range
then the return value will be InvalidArgument. If the panes collection is deleted the
return value will be GeneralFailure.
See Also
IPane Interface
Calling Syntax
This example assumes there is a valid Panes collection object to be passed into the example methods.
[VBA]
Sub Example(Panes As Object)
Dim pane As Object
`Getting Property value
Set pane = Panes.Item(1)
End Sub

[Cicode]
FUNCTION Example(OBJECT hPanes)
// Getting property value
OBJECT hPane = _ObjectCallMethod(hPanes, "get_Item", 1);
END

IPanes.ItemByName [Property][Get]
Returns a reference to the pane object with the given name from this Panes collection.
Defined As
l

[VBA] ByName(name As String) as Object

[Cicode] OBJECT ByName(STRING name)

[C++] ByName(STRING name, IPane* Item)

Parameters
name
[in]

Indicates the name of the Pane item to return from this collection.

Execution Result
If the property get succeeds, the return value will be Success. If the pane cannot be
found, the return value will be InvalidArgument. If the panes collection is deleted, the
return value will be GeneralFailure.

142

Chapter: 4 Automation Model

Calling Syntax
This example assumes there is a valid Panes collection object to be passed into the example methods.
[VBA]
Sub Example(Panes As Object)
Dim pane As Object
`Getting Property value
Set pane = Panes.ItemByName("Alarm Pane")
End Sub

[Cicode]
FUNCTION Example(OBJECT hPanes)
// Getting property value
OBJECT hPane = _ObjectCallMethod(hPanes, "get_ItemByName", "Alarm Pane");
END

IPanes.RemoveAll [Method]
Removes every Pane from this Pane collection.
Defined As
l

[VBA] RemoveAll()

[Cicode] RemoveAll()

[C++] HRESULT RemoveAll()

Execution Result
If the method succeeds, the return value will be Success. If the panes collection is
deleted, the return value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid Panes collection object to be passed into the example methods.
[VBA]
Sub Panes(Buttons As Object)
Panes.RemoveAll()
End Sub

143

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPanes)
_ObjectCallMethod(hPanes, "RemoveAll");
END

IPen Interface
Methods
IPen.AddSample
IPen.Clear [Method]
IPen.Delete [Method]
IPen.GetDefaultSpan [Method]
IPen.GetHorizontalAxisTimeSpan [Method]
IPen.GetInformation [Method]
IPen.GetStatistic [Method]
IPen.GetVerticalAxisSpan [Method]
IPen.GoToNow [Method]
IPen.HorizontalScrollBy [Method]
IPen.HorizontalZoom [Method]
IPen.PutHorizontalAxisTimeSpan [Method]
IPen.PutVerticalAxisSpan [Method]
IPen.RefreshData [Method]
IPen.ResetToDefaultSpan [Method]
IPen.Select [Method]
IPen.SetDefaultSpan [Method]
IPen.SetQualityCompactionPointType [Method]
IPen.SetQualityLineStyle [Method]
IPen.SetVerticalAxisLabelValue [Method]
IPen.VerticalScrollBy [Method]
IPen.VerticalZoom [Method]
Properties
IPen.AxisBackgroundColor [Property][Get/Set]
IPen.BlockRepaint [Property][Get/Set]
IPen.Collection [Property][Get]
IPen.DataPoint [Property][Get/Set]
IPen.DataServer [Property][Get/Set]
IPen.Height [Property][Get/Set]
IPen.HorizontalAxisColor [Property][Get/Set]
IPen.HorizontalAxisResize [Property][Get/Set]

144

Chapter: 4 Automation Model

IPen.HorizontalAxisScroll [Property][Get/Set]
IPen.HorizontalAxisWidth [Property][Get/Set]
IPen.HorizontalGridlinesColor [Property][Get/Set]
IPen.HorizontalGridlinesStyle [Property][Get/Set]
IPen.HorizontalGridlinesWidth [Property][Get/Set]
IPen.HorizontalMinorGridlinesColor [Property][Get/Set]
IPen.HorizontalMinorGridlinesStyle [Property][Get/Set]
IPen.InstantTrend [Property][Get/Set]
IPen.IsDeleted [Property][Get]
IPen.IsSelected [Property][Get]
IPen.LocalTime [Property][Get/Set]
IPen.Name [Property][Get/Set]
IPen.PointsVisible [Property][Get/Set]
IPen.RequestMode [Property][Get/Set]
IPen.SamplePeriod [Property][Get/Set]
IPen.Stacked [Property][Get/Set]
IPen.TrendCursorLabelFillColor [Property][Get/Set]
IPen.TrendCursorLabelLineColor [Property][Get/Set]
IPen.TrendCursorLabelTextColor [Property][Get/Set]
IPen.VerticalAxisAutoscale [Property][Get/Set]
IPen.VerticalAxisColor [Property][Get/Set]
IPen.VerticalAxisLabelType [Property][Get/Set]
IPen.VerticalAxisResize [Property][Get/Set]
IPen.VerticalAxisScroll [Property][Get/Set]
IPen.VerticalAxisWidth [Property][Get/Set]
IPen.VerticalGridlinesColor [Property][Get/Set]
IPen.VerticalGridlinesStyle [Property][Get/Set]
IPen.VerticalGridlinesWidth [Property][Get/Set]
IPen.VerticalMinorGridlinesColor [Property][Get/Set]
IPen.VerticalMinorGridlinesStyle [Property][Get/Set]
IPen.Visible [Property][Get/Set]

IPen.AddSample
Adds a temporary sample to a pen.
Defined As
l

[VBA] AddSample(value As Double, timeStamp as Date, milli as Integer, qualityType


as Integer, compactionType as Integer)

[Cicode] AddSample(REAL value, DATE timeStamp, INT milli, INT qualityType, INT
compactionType)

145

Chapter: 4 Automation Model

[C++] HRESULT AddSample(double value, DATE timeStamp, short milli, QualityType qualityType, QualityCompactionType compactionType)

Parameters
value
[in]

Indicates the value of the sample that will be added.

timeStamp
[in]

Indicates at what time the sample will occur in UTC time.

milli
[in]

Indicates the millisecond component of the time stamp (0 to 999).

qualityType
[in]

Indicates the quality of the sample that will be added.

compactionType
[in]

Indicates what display type the sample will be represented as.

Execution Result
If the function succeeds, the return value will be Success. If an argument is bad, the
return value will be InvalidArgument. If an argument is out of range, the return value
will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure. If
any other unexpected error occurs, the return value will be GeneralFailure.
Remarks
This function has limited use as the samples added are stored in a temporary cache;
they can be cleared anytime by time span changes, data refresh calls, or automation.
You can only add samples to analog or digital pens.
See Also
QualityType [Enumeration], QualityCompactionType [Enumeration]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim timeStamp As Date
timestamp = Now
pen.AddSample 75.0, timeStamp, 100, 0, 0
End Sub

146

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPen)
INT iCitectTime;
REAL rOleTime;
iCitectTime = TimeCurrent(); // Returns seconds since 1970
rOleTime = TimeToOleDate(iCitectTime, 1); // Convert to OLE UTC time
_ObjectCallMethod(hPen, "AddSample", 75.0, timeStamp, 100, 0, 0);
END

IPen.AxisBackgroundColor [Property][Get/Set]
Gets or sets the background color of the axis of this pen.
Defined As
l

[VBA] Long BackgroundColor

[Cicode] INT BackgroundColor

[C++] OLE_COLOR BackgroundColor

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Remarks
The background is the area underneath the axis lines and values.
To calculate the integer value necessary for a color apply the following formula (65536 *
Blue) + (256 * Green) + (Red). Where Red, Green and Blue are 0-255
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim backgroundColor As Long
`Getting Property value
backgroundColor = pen.AxisBackgroundColor
`Setting Property value to Red
pen.AxisBackgroundColor = 255
End Sub

147

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPen)
INT backgroundColor;
// Getting current property value
backgroundColor = _ObjectGetProperty(hPen, "AxisBackgroundColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "AxisBackgroundColor", PackedRGB(255, 0, 0));
END

IPen.BlockRepaint [Property][Get/Set]
Use this property to halt or continue any drawing updates to this pen.
Defined As
l

[VBA] Boolean BlockRepaint

[Cicode] INT BlockRepaint

[C++] VARIANT_BOOL BlockRepaint

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Remarks
This property is useful if you are modifying several properties at once as it will help
reduce flicker and the amount of processing necessary. Simply set the property to True (1), change as many properties as you want, and then set the property to False (0).
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim blockRepaint As Boolean
`Getting Property value
blockRepaint = pen.BlockRepaint
`Setting Property value
pen.BlockRepaint = True
End Sub

148

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bBlockRepaint;
// Getting current property value
bBlockRepaint = _ObjectGetProperty(hPen, "BlockRepaint");
// Setting Property
_ObjectSetProperty(hPen, "BlockRepaint", -1);
END

IPen.Clear [Method]
Clears every sample belonging to this pen from the internal cache. (Note: This does not
remove logged samples from the server)
Defined As
l

[VBA] Clear()

[Cicode] Clear()

[C++] HRESULT Clear()

Execution Result
If the function succeeds the return value will be Success. If the pen is deleted then the
return value will be GeneralFailure.
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
pen.Clear
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
_ObjectCallMethod(hPen, "Clear");
END

IPen.Collection [Property][Get]
Returns a reference to the Pens collection object that this pen belongs to.

149

Chapter: 4 Automation Model

Defined As
l

[VBA] Object Collection

[Cicode] OBJECT Collection

[C++] IPen* Collection

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the pen is deleted, the return value will be
GeneralFailure.
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim pens As Object
`Getting Property value
Set pens = pen.Collection
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
OBJECT pens;
// Getting current property value
pens = _ObjectGetProperty(hPen, "Collection");
END

IPen.DataPoint [Property][Get/Set]
Get or Set the trend/alarm tag which this pen is bound to.
Defined As
l

[VBA] String DataPoint

[Cicode] STRING DataPoint

[C++] BSTR DataPoint

Execution Result

150

Chapter: 4 Automation Model

If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the tag is greater than 79 characters,
the return value will be InvalidArgument. If the pen is deleted, the return value will be
GeneralFailure.
Remarks
This property works in conjunction with the DataServer property. This property can be
changed during the lifetime of the pen. Changing the DataPoint property will result in
the data cache being cleared and a new data request issued. A request for the tag's information will also be issued.
See Also
IPen.DataServer [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim tag As String
`Getting Property value
tag = pen.DataPoint
`Setting Property value
pen.DataPoint = "LOOP_1_PV"
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
STRING tag;
// Getting current property value
tag = _ObjectGetProperty(hPen, "DataPoint");
// Setting Property
_ObjectSetProperty(hPen, "DataPoint", "LOOP_1_PV");
END

IPen.DataServer [Property][Get/Set]
Get or Set the server that this pen is bound to.
Defined As
l

[VBA] String DataServer

[Cicode] STRING DataServer

151

Chapter: 4 Automation Model

[C++] BSTR DataServer

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the server connection cannot be found,
the return value will be InvalidArgument. If the pen is deleted, the return value will be
GeneralFailure.
Remarks
This property currently only supports two options, "localhost" and "" (empty string),
which indicates an unbound connection. Local host means the pen will use the local
CitectSCADA client to source data from the CitectSCADA Trends/Alarm Servers.
This property works in conjunction with the DataPoint property. This property can be
changed during the lifetime of the pen.
See Also
IPen.DataPoint [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim server As String
`Getting Property value
server = pen.DataServer
`Setting Property value
pen.DataPoint = "localhost"
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
STRING server;
// Getting current property value
server = _ObjectGetProperty(hPen, "DataServer");
// Setting Property
_ObjectSetProperty(hPen, "DataServer", "localhost");
END

IPen.Delete [Method]
Deletes the pen from the Process Analyst.
Defined As

152

Chapter: 4 Automation Model

[VBA] Delete()

[Cicode] Delete()

[C++] HRESULT Delete()

Execution Result
If the function succeeds, the return value will be Success. If the pen is already deleted,
the return value will be GeneralFailure.
Remarks
Calling this method will mark the pen for deletion, meaning any further calls to methods or properties on the pen will result in a GeneralFailure error. The pen will be
removed from the display immediately after making this call.
See Also
IPen.IsDeleted [Property][Get]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
pen.Delete
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
_ObjectCallMethod(hPen, "Delete");
END

IPen.GetDefaultSpan [Method]
Returns the default time span for this pen as a series of time components.
Defined As
l

[VBA] GetDefaultSpan(weeks As Integer, days As Integer, hours As Integer, minutes


As Integer, seconds As Integer, milliseconds As Integer)

[Cicode] GetDefaultSpan (INT weeks, INT days, DATE hours, INT minutes, INT seconds, INT milliseconds)

[C++] HRESULT GetDefaultSpan (short* weeks, short* days, short* hours, short* minutes, short* seconds, short* milliseconds)

153

Chapter: 4 Automation Model

Parameters
weeks
[out]

Indicates the number of weeks in the span.

days
[out]

Indicates the number of days in the span.

hours
[out]

Indicates the number of hours in the span.

minutes
[out]

Indicates the number of minutes in the span.

seconds
[out]

Indicates the number of seconds in the span.

milliseconds
[out]

Indicates the number of milliseconds in the span.

Execution Result
If the function succeeds, the return value will be Success. If an argument is bad, the
return value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure. If any other unexpected error occurs, the return value will be GeneralFailure.
See Also
IPen.SetDefaultSpan [Method], IPen.ResetToDefaultSpan [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim weeks As Integer
Dim days As Integer
Dim hours As Integer
Dim minutes As Integer
Dim seconds As Integer
Dim milliseconds As Integer
pen.GetDefaultSpan weeks, days, hours, minutes, seconds, milliseconds
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT weeks;
INT days;

154

Chapter: 4 Automation Model

INT hours;
INT minutes;
INT seconds;
INT milliseconds;
_ObjectCallMethod(hPen, "GetDefaultSpan", weeks, days, hours, minutes,
seconds, milliseconds);
END

IPen.GetHorizontalAxisTimeSpan [Method]
Returns the start and end time of this pen in local or UTC time format.
Defined As
l

[VBA] GetHorizontalAxisTimeSpan(startTime As Date, startMs as Integer, endTime


as Date, endMs as Integer, localTime as Boolean)

[Cicode] GetHorizontalAxisTimeSpan (REAL startTime, INT startMs, REAL endTime,


INT endMs, INT localTime)

[C++] HRESULT GetHorizontalAxisTimeSpan (DATE* startTime, short* startMs,


DATE* endTime, short* endMs, VARIANT_BOOL localTime)

Parameters
startTime
[out]

This will contain the beginning date and time without milliseconds of the time

span.
startMs
[out]

This will contain the milliseconds component of the start time.

endTime
[out]

This will contain the end date and time without milliseconds.of the time span.

endMs
[out]

This will contain the milliseconds component of the end time.

localTime

Indicates whether the times returned are in local time or UTC. True = -1, False (0) =
UTC.
[in]

Execution Result
If the function succeeds, the return value will be Success. If an argument is bad, the
return value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure. If any other unexpected error occurs, the return value will be GeneralFailure.
See Also
IPen.PutHorizontalAxisTimeSpan [Method]

155

Chapter: 4 Automation Model

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim startDate As Date
Dim endDate As Date
Dim startMs As Integer
Dim endMs As Integer
pen.GetHorizontalAxisTimeSpan startDate, startMs, endDate, endMs, True
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
REAL startDate;
REAL endDate;
INT startMs;
INT endMs;
_ObjectCallMethod(hPen, "GetHorizontalAxisTimeSpan", startDate, startMs,
endDate, endMs, -1);
END

IPen.GetInformation [Method]
Returns information associated with this pen.
Defined As
l

[VBA] GetInformation(name As String) As String

[Cicode] STRING GetInformation(STRING name)

[C++] HRESULT GetDefaultSpan (BSTR name, BSTR* value)

Parameters
name

Specify the pen information attribute you want to get the value for. See Remarks
below for supported attributes.
[in]

value
[out]

Indicates the value of the specified information attribute.

Execution Result

156

Chapter: 4 Automation Model

If the function succeeds, the return value will be Success. If an argument is bad, the
return value will be InvalidArgument. If the attribute does not exist, the return value will
be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure. If any
other unexpected error occurs, the return value will be GeneralFailure.
Information Attributes
Attribute

Returns

Applies to

Alarm Area

Alarm tag field

Alarm

Alarm Category

Alarm tag field

Alarm

Alarm Desc

Alarm tag field

Alarm

Alarm Name

Alarm tag field

Alarm

Alarm Type

Alarm tag field

Alarm

Comment

Alarm/Trend tag comment field

All

Duration

Process Analyst time span

All

End Time

Process Analyst axis end time

All

Engineering Full Scale

Trend tag field

Analog, Digital

Engineering Units

Trend tag field

Analog, Digital

Engineering Zero Scale

Trend tag field

Analog, Digital

Error

Process Analyst error status

All

Full Scale

Process Analyst vertical axis max scale

Analog,

Name

Process Analyst pen name

All

Raw Full Scale

Trend tag field

Analog, Digital

Raw Zero Scale

Trend tag field

Analog, Digital

157

Chapter: 4 Automation Model

Sample Period

Trend tag field

Analog, Digital

Start Time

Process Analyst axis start time

All

Tag

Process Analyst source binding field

All

Trend Type

Trend tag field

Analog, Digital

Zero Scale

Process Analyst vertical axis min scale

Analog

Scale

Process Analyst vertical axis scale range

Analog, Digital

Engineering Scale

Engineering scale range

Analog, Digita

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim duration As String
duration = pen.GetInformation "Duration"
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
STRING duration;
duration = _ObjectCallMethod(hPen, "GetInformation", "Duration");
END

IPen.GetStatistic [Method]
Returns the result of a specified Process Analyst statistical operation.
Defined As

158

[VBA] GetStatistic(name As String, value As String)

[Cicode] GetStatistic(STRING name, STRING value)

[C++] HRESULT GetStatistic(BSTR name, BSTR* value)

Chapter: 4 Automation Model

Parameters
name

Specify the statistic attribute you want to get the value for. See Remarks below for
supported attributes.
[in]

value
[out]

Indicates the value of the specified statistic attribute.

Execution Result
If the function succeeds, the return value will be Success. If an argument is bad, the
return value will be InvalidArgument. If the attribute does not exist, the return value will
be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure. If any
other unexpected error occurs, the return value will be GeneralFailure.
Information Attributes
Attribute

Returns

Applies to

Average

Process Analyst real-time average

Analog, Digital

Maximum

Process Analyst real-time maximum

Analog

Minimum

Process Analyst real-time minimum

Analog

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim average As String
pen.GetStatistic "Average", average
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
STRING average;
_ObjectCallMethod(hPen, "GetStastic", "Average", average);
END

IPen.GetVerticalAxisSpan [Method]
Returns the current span of the pens&#39; vertical axis.

159

Chapter: 4 Automation Model

Defined As
l

[VBA] GetVerticalAxisSpan(startValue As Double, endValue As Double)

[Cicode] GetVerticalAxisSpan (REAL startValue, REAL endValue)

[C++] HRESULT GetVerticalAxisSpan (double* startValue, double* endValue)

Parameters
startValue
[out]

The current lower bound of the vertical axis.

endValue
[out]

The current upper bound of the vertical axis.

Execution Result
If the function succeeds, the return value will be Success. If an argument is bad, the
return value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure. If any other unexpected error occurs, the return value will be GeneralFailure.
See Also
IPen.PutVerticalAxisSpan [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim startValue As Double
Dim endValue As Double
pen.GetVerticalAxisSpan startValue, endValue
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
REAL startValue;
REAL endValue;
_ObjectCallMethod(hPen, "GetVerticalAxisSpan", startValue, endValue);
END

IPen.GoToNow [Method]
Synchronizes the end time of the pen's span with your computer's current local time.
The start time will also be moved to maintain the pen's current time span.

160

Chapter: 4 Automation Model

Defined As
l

[VBA] GoToNow()

[Cicode] GoToNow()

[C++] HRESULT GoToNow()

Execution Result
If the function succeeds, the return value will be Success. If the pen is deleted, the return
value will be GeneralFailure.
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
pen.GoToNow
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
_ObjectCallMethod(hPen, "GoToNow");
END

IPen.Height [Property][Get/Set]
Get or Set the physical height in pixels that the pen will allocate for itself when displayed in Stacked mode.
Defined As
l

[VBA] Integer Height

[Cicode] INT Height

[C++] double Height

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If height set is out of range (16 - 1000),
the return value will be InvalidArgument. If the pen is deleted, the return value will be
GeneralFailure.
Remarks
This property is ignored when the pen is not in Stacked mode.

161

Chapter: 4 Automation Model

See Also
IPen.Stacked [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim height As Boolean
`Getting Property value
height = pen.Height
`Setting Property value
pen.Height = 75
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT height;
// Getting current property value
height = _ObjectGetProperty(hPen, "Height");
// Setting Property
_ObjectSetProperty(hPen, "Height", 75);
END

IPen.HorizontalAxisColor [Property][Get/Set]
Gets or sets the color used to draw the line, labels, and interval markers of the horizontal
axis of this pen.
Defined As
l

[VBA] Long HorizontalAxisColor

[Cicode] INT HorizontalAxisColor

[C++] OLE_COLOR HorizontalAxisColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Remarks
To calculate the integer value necessary for a color apply the following formula:
(65536 * Blue) + (256 * Green) + (Red)

162

Chapter: 4 Automation Model

where Red, Green, and Blue are 0-255.


See Also
IPen.VerticalAxisColor [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.HorizontalAxisColor
`Setting Property value to Red
pen.HorizontalAxisColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "HorizontalAxisColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "HorizontalAxisColor", PackedRGB(255, 0, 0));
END

IPen.HorizontalAxisResize [Property][Get/Set]
Gets or sets whether this pen allows the operator to interactively scale the horizontal
axis using the mouse.
Defined As
l

[VBA] Boolean HorizontalAxisResize

[Cicode] INT HorizontalAxisResize

[C++] VARIANT_BOOL HorizontalAxisResize

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits

163

Chapter: 4 Automation Model

True (-1): Axis can be resized

False (0): Axis cannot be resized

See Also
IPen.VerticalAxisResize [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim resize As Boolean
`Getting Property value
resize = pen.HorizontalAxisResize
`Setting Property value
pen.HorizontalAxisResize = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bResize;
// Getting current property value
bResize = _ObjectGetProperty(hPen, "HorizontalAxisResize");
// Setting Property
_ObjectSetProperty(hPen, "HorizontalAxisResize",0);
END

IPen.HorizontalAxisScroll [Property][Get/Set]
Gets or sets whether this pen allows the operator to interactively scroll the horizontal
axis using the mouse.
Defined As
l

[VBA] Boolean HorizontalAxisScroll

[Cicode] INT HorizontalAxisScroll

[C++] VARIANT_BOOL HorizontalAxisScroll

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Limits

164

Chapter: 4 Automation Model

True (-1): Axis can be scrolled

False (0): Axis cannot be scrolled

See Also
IPen.VerticalAxisScroll [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim scroll As Boolean
`Getting Property value
scroll = pen.HorizontalAxisScroll
`Setting Property value
pen.HorizontalAxisScroll = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bScroll;
// Getting current property value
bScroll = _ObjectGetProperty(hPen, "HorizontalAxisScroll");
// Setting Property
_ObjectSetProperty(hPen, "HorizontalAxisScroll", 0);
END

IPen.HorizontalAxisWidth [Property][Get/Set]
Gets or sets the width of the horizontal axis line and the associated interval markers.
Defined As
l

[VBA] Integer HorizontalAxisWidth

[Cicode] INT HorizontalAxisWidth

[C++] short HorizontalAxisWidth

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
A valid width is 0-8 pixels.

165

Chapter: 4 Automation Model

See Also
IPen.VerticalAxisWidth [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim width As Integer
`Getting Property value
width = pen.HorizontalAxisWidth
`Setting Property value
pen.HorizontalAxisWidth = 3
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT width;
// Getting current property value
width = _ObjectGetProperty(hPen, "HorizontalAxisWidth");
// Setting Property
_ObjectSetProperty(hPen, "HorizontalAxisWidth", 3);
END

IPen.HorizontalGridlinesColor [Property][Get/Set]
Gets or sets the color used to draw the major horizontal gridlines.
Defined As
l

[VBA] Long HorizontalGridlinesColor

[Cicode] INT HorizontalGridlinesColor

[C++] OLE_COLOR HorizontalGridlinesColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
A valid width is 0-8 pixels.
Remarks

166

Chapter: 4 Automation Model

To calculate the integer value necessary for a color apply the following formula (65536 *
Blue) + (256 * Green) + (Red). Where Red, Green and Blue are 0-255
See Also
IPen.HorizontalMinorGridlinesColor [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.HorizontalGridlinesColor
`Setting Property value to Red
pen.HorizontalGridlinesColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "HorizontalGridlinesColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "HorizontalGridlinesColor", PackedRGB(255, 0, 0));
END

IPen.HorizontalGridlinesStyle [Property][Get/Set]
Gets or sets the line style used to draw the major horizontal gridlines.
Defined As
l

[VBA] Long HorizontalGridlinesStyle

[Cicode] INT HorizontalGridlinesStyle

[C++] LineStyle HorizontalGridlinesStyle

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the style is out of range, the return
value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.

167

Chapter: 4 Automation Model

See Also
IPen.HorizontalMinorGridlinesColor [Property][Get/Set], LineStyle [Enumeration]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim style As Long
`Getting Property value
style = pen.HorizontalGridlinesStyle
`Setting Property value to Dot
pen.HorizontalGridlinesColor = 2
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT style;
// Getting current property value
style = _ObjectGetProperty(hPen, "HorizontalGridlinesStyle");
// Setting Property to Dot
_ObjectSetProperty(hPen, "HorizontalGridlinesStyle", 2);
END

IPen.HorizontalGridlinesWidth [Property][Get/Set]
Gets or sets the line width used when drawing the major horizontal gridlines.
Defined As
l

[VBA] Integer HorizontalGridlinesWidth

[Cicode] INT HorizontalGridlinesWidth

[C++] short HorizontalGridlinesWidth

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the width is out of range, the return
value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
Calling Syntax
Assumes you have passed a valid pen object into the function.

168

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim width As Integer
`Getting Property value
width = pen.HorizontalGridlinesWidth
`Setting Property value
pen.HorizontalGridlinesWidth = 3
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT width;
// Getting current property value
width = _ObjectGetProperty(hPen, "HorizontalGridlinesWidth");
// Setting Property t
_ObjectSetProperty(hPen, "HorizontalGridlinesWidth", 3);
END

IPen.HorizontalMinorGridlinesColor [Property][Get/Set]
Gets or sets the color used to draw the minor horizontal gridlines.
Defined As
l

[VBA] Long HorizontalMinorGridlinesColor

[Cicode] INT HorizontalMinorGridlinesColor

[C++] OLE_COLOR HorizontalMinorGridlinesColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Remarks
To calculate the integer value necessary for a color apply the following formula:
(65536 * Blue) + (256 * Green) + (Red)
where Red, Green, and Blue are 0-255.
See Also
IPen.HorizontalGridlinesColor [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.

169

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.HorizontalMinorGridlinesColor
`Setting Property value to Red
pen.HorizontalMinorGridlinesColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "HorizontalMinorGridlinesColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "HorizontalMinorGridlinesColor",
PackedRGB(255, 0, 0));
END

IPen.HorizontalMinorGridlinesStyle [Property][Get/Set]
Gets or sets the line style used to draw the minor horizontal gridlines.
Defined As
l

[VBA] Long HorizontalMinorGridlinesStyle

[Cicode] INT HorizontalMinorGridlinesStyle

[C++] LineStyle HorizontalMinorGridlinesStyle

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the style is out of range, the return
value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
See Also
IPen.HorizontalGridlinesStyle [Property][Get/Set], LineStyle [Enumeration]
Calling Syntax
Assumes you have passed a valid pen object into the function.

170

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim style As Long
`Getting Property value
style = pen.HorizontalMinorGridlinesStyle
`Setting Property value to Dot
pen.HorizontalMinorGridlinesColor = 2
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT style;
// Getting current property value
style = _ObjectGetProperty(hPen, "HorizontalMinorGridlinesStyle");
// Setting Property to Dot
_ObjectSetProperty(hPen, "HorizontalMinorGridlinesStyle", 2);
END

IPen.HorizontalScrollBy [Method]
Scrolls the horizontal axis by the specified factor.
Defined As
l

[VBA] HorizontalScrollBy(factor As Double)

[Cicode] HorizontalScrollBy(REAL factor)

[C++] HRESULT HorizontalScrollBy(double factor)

Parameters
factor

Controls the direction and amount the axis will be scrolled. A negative value will
move the axis back in time; a positive value will move the axis forward in time. The
value is a percentage representing the current viewable span. So if the pen span is 1
hour, and you specify a factor of 0.5, you will move the time span 30 minutes into the
future.
[in]

Execution Result
If the function succeeds, the return value will be Success. If the argument is bad, the
return value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
See Also
IPen.VerticalScrollBy [Method]

171

Chapter: 4 Automation Model

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
` Move the pen span back one complete span into history
pen.HorizontalScrollBy -1.0
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
// Move the pen span back one complete span into history
_ObjectCallMethod(hPen, "HorizontalScrollby", -1.0);
END

IPen.HorizontalZoom [Method]
Zooms centrally into the time span by the given factor.
Defined As
l

[VBA] HorizontalZoom(factor As Double)

[Cicode] HorizontalZoom(REAL factor)

[C++] HRESULT HorizontalZoom(double factor)

Parameters
factor

Controls the direction and amount the axis will be zoomed. Acceptable zoom
values are 0 to 1 (Zoom out) and > 1 (zoom in).
[in]

Execution Result
If the function succeeds the return value will be Success. If the argument is bad then the
return value will be InvalidArgument. If the argument is out of range then the return
value will be InvalidArgument. If the pen is deleted then the return value will be GeneralFailure.
See Also
IPen.VerticalZoom [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.

172

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
` Zoom out 50%
pen.HorizontalZoom 0.5
` Undo the Zoom
pen.HorizontalZoom 1.5
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
// Zoom out 50%
_ObjectCallMethod(hPen, "HorizontalZoom", 0.5);
// Undo the Zoom
_ObjectCallMethod(hPen, "HorizontalZoom", 2.0);
END

IPen.InstantTrend [Property][Get/Set]
Get or set whether pen data is to be retrieved for an instant trend. If set to True, the pen's
DataPoint property needs to specify the name of a Variable Tag or a Local Variable.
Defined As
l

[VBA] Boolean InstantTrend

[Cicode] INT InstantTrend

[C++] VARIANT_BOOL InstantTrend

Allowable values
True(-1): Data will be retrieved for an instant trend
False(0): Data will be retrieved as for a normal trend or alarm
See Also
IPen.SamplePeriod [Property][Get/Set]

IPen.IsDeleted [Property][Get]
Returns whether this pen has been marked for deletion. That is, whether someone has
called the Delete method on it or deleted it from the display.
Defined As

173

Chapter: 4 Automation Model

[VBA] Boolean IsDeleted

[Cicode] INT IsDeleted

[C++] VARIANT_BOOL IsDeleted

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
See Also
IPen.Delete [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim deleted As Boolean
deleted = pen.IsDeleted
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bDeleted;
bDeleted = _ObjectGetProperty(hPen, "IsDeleted");
END

IPen.IsSelected [Property][Get]
Returns whether this pen has been selected in the Process Analyst.
Defined As
l

[VBA] Boolean IsSelected

[Cicode] INT IsSelected

[C++] VARIANT_BOOL IsSelected

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
See Also
IPen.Select [Method]

174

Chapter: 4 Automation Model

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim selected As Boolean
selected = pen.IsSelected
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bSelected;
bSelected = _ObjectGetProperty(hPen, "IsSelected");
END

IPen.LocalTime [Property][Get/Set]
Get or Set whether the axis will display time in the computers current local format or in
UTC (Universal Time Coordinate).
Defined As
l

[VBA] Boolean LocalTime

[Cicode] INT LocalTime

[C++] VARIANT_BOOL LocalTime

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
l

True (-1): Local format

False (0): UTC format

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)

175

Chapter: 4 Automation Model

Dim localTime As Boolean


`Getting Property value
localTime = pen.LocalTime
`Display time in UTC
pen.LocalTime = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bLocalTime;
// Getting current property value
bLocalTime = _ObjectGetProperty(hPen, "LocalTime");
// Display time in UTC
_ObjectSetProperty(hPen, "LocalTime", 0);
END

IPen.Name [Property][Get/Set]
Get or Set the name of this pen.
Defined As
l

[VBA] String Name

[Cicode] STRING Name

[C++] BSTR Name

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the length of the name is wrong then
the return value will be InvalidArgument. If the pen is deleted then the return value will
be GeneralFailure.
Remarks
The Process Analyst will use this name extensively throughout the user interface to reference this pen.
The name of the pen does not have to be unique, but it needs to be between 1 and 250
character long.
Calling Syntax
Assumes you have passed a valid pen object into the function.

176

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim name As String
`Getting Property value
name = pen.Name
`Setting property value
pen.Name = "NicePen"
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
STRING name;
// Getting current property value
name = _ObjectGetProperty(hPen, "Name");
// Setting property value
_ObjectSetProperty(hPen, "Name", "NicePen");
END

IPen.PointsVisible [Property][Get/Set]
Gets or Sets whether the sample points are displayed or hidden on the pen.
Defined As
l

[VBA] Boolean PointsVisible

[Cicode] INT PointsVisible

[C++] VARIANT_BOOL PointsVisible

Execution Results
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
l

True(-1): Points are visible

False(0): Points are hidden

Remarks
By default this property is False, meaning that any point type you have set using the SetQualityCompactionPointType function will be hidden.
See Also
IPen.SetQualityCompactionPointType [Method]

177

Chapter: 4 Automation Model

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim visible As Boolean
`Getting Property value
visible = pen.PointsVisible
`Setting Property value
pen.PointsVisible = True
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT visible;
// Getting current property value
visible = _ObjectGetProperty(hPen, "PointsVisible");
// Setting Property value
_ObjectSetProperty(hPen, "PointsVisible", -1);
END

IPen.PutHorizontalAxisTimeSpan [Method]
Sets the start and end time of this pen.
Defined As
l

[VBA] PutHorizontalAxisTimeSpan(startTime As Date, startMs as Integer, endTime


as Date, endMs as Integer)

[Cicode] PutHorizontalAxisTimeSpan (REAL startTime, INT startMs, REAL endTime,


INT endMs)

[C++] HRESULT PutHorizontalAxisTimeSpan (DATE* startTime, short* startMs,


DATE* endTime, short* endMs)

Parameters
startTime

Indicates the beginning date and time without milliseconds of the time span in UTC
format.
[in]

startMs
[in]

Indicates the milliseconds component of the start time.

endTime

178

Chapter: 4 Automation Model

[in]

Indicates the end date and time without milliseconds of the time span in UTC for-

mat.
endMs
[in]

This will contain the milliseconds component of the end time.

Execution Result
If the function succeeds the return value will be Success. If an argument is bad then the
return value will be InvalidArgument. If an argument is out of range then the return
value will be InvalidArgument. If the pen is deleted then the return value will be GeneralFailure. If any other unexpected error occurs the return value will be GeneralFailure.
Remarks
The Process Analyst only supports setting its axis in UTC (Universal Co-ordinated Time)
format. This means you need to convert from local to UTC format yourself to make the
axis display correctly in local time. Cicode provides several functions to do these conversions.
Limits
The horizontal axis has an upper limit of 1/1/2100 12:00:00.000 and a lower limit of
1/1/1900 12:00:00.000. The minimum span is 100 milliseconds. The maximum span is
200 years.
See Also
IPen.GetHorizontalAxisTimeSpan [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim startDate As Date
Dim endDate As Date
Dim startMs As Integer
Dim endMs As Integer
startDate = CDate("16/6/2004 11:30:00")
endDate = CDate("16/6/2004 12:29:00")
startMs = 0
endMs = 0
pen.PutHorizontalAxisTimeSpan startDate, startMs, endDate, endMs
End Sub

179

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPen)
REAL startDate;
REAL endDate;
startDate = StrToDate("16/6/04") + StrToTime("9:30:00");
endDate = StrToDate("16/6/04") + StrToTime("10:29:00");
startDate = TimeToOLEDate(startDate, 0); // Convert to UTC
endDate = TimeToOLEDate(endDate, 0); // Convert to UTC
_ObjectcallMethod(hPen, "PutHorizontalAxisTimeSpan", startDate, 0, endDate, 0);
END

IPen.PutVerticalAxisSpan [Method]
Sets the current position and span of the pens&#39; vertical axis.
Defined As
l

[VBA] GetVerticalAxisSpan(startValue As Double, endValue As Double)

[Cicode] GetVerticalAxisSpan (REAL startValue, REAL endValue)

[C++] HRESULT GetVerticalAxisSpan (double* startValue, double* endValue)

Parameters
startValue
[in]

Indicates the new lower bound of the vertical axis.

endValue
[in]

Indicates the new upper bound of the vertical axis.

Execution Result
If the function succeeds, the return value will be Success. If an argument is bad, the
return value will be InvalidArgument. If an argument is out of range, or the span is out
of range, the return value will be InvalidArgument. If the pen is deleted, the return value
will be GeneralFailure.
Limits
The vertical axis has a upper limit of 1+e10 and a lower limit of 1-e10. However, the
maximum span supported is 1+e10. The minimum span is 0.00001.
See Also
IPen.GetVerticalAxisSpan [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.

180

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
pen.PutVerticalAxisSpan 200.5, 300.34
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
_ObjectCallMethod(hPen, "PutVerticalAxisSpan", 200.5, 300.34);
END

IPen.RefreshData [Method]
Clears every sample belonging to this pen from the internal cache and then issues a new
request for data.
Defined As
l

[VBA] RefreshData()

[Cicode] RefreshData ()

[C++] HRESULT RefreshData ()

Execution Result
If the function succeeds the return value will be Success. If the pen is deleted then the
return value will be GeneralFailure.
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
pen.RefreshData
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
_ObjectCallMethod(hPen, "RefreshData");
END

181

Chapter: 4 Automation Model

IPen.RequestMode [Property][Get/Set]
Get or Set how multiple samples will be calculated on the server.
Defined As
l

[VBA] Integer RequestMode

[Cicode] INT RequestMode

[C++] RequestMode RequestMode

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the mode is out of range, the return
value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
Remarks
When the pen makes a request for data and samples need to be compacted, it will use
this mode to determine how the compaction will occur.
Changing this mode will clear the data cache and issue a new request for data.
See Also
RequestMode [Enumeration]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim requestMode As Integer
`Getting Property value
requestMode = pen.RequestMode
`Setting mode to minimum
pen.RequestMode = 1
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT requestMode;
// Getting current property value
requestMode = _ObjectGetProperty(hPen, "RequestMode");
// Setting mode to minimum
_ObjectSetProperty(hPen, "RequestMode", 1);

182

Chapter: 4 Automation Model

END

IPen.ResetToDefaultSpan [Method]
Resets the span of this pen to its default span.
Defined As
l

[VBA] ResetToDefaultSpan()

[Cicode] ResetToDefaultSpan()

[C++] HRESULT ResetToDefaultSpan()

Execution Result
If the function succeeds, the return value will be Success. If the pen is deleted, the return
value will be GeneralFailure.
Remarks
The default span of pens is 10 minutes. This can be modified by using IPen.SetDefaultSpan.
See Also
IPen.GetDefaultSpan [Method], IPen.SetDefaultSpan [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
pen.ResetToDefaultSpan
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
_ObjectCallMethod(hPen, "ResetToDefaultSpan");
END

IPen.SamplePeriod [Property][Get/Set]
Determine how frequently data is collected for an instant trend. If the sample period for
a pen is changed, existing samples for the pen may be discarded.

183

Chapter: 4 Automation Model

Defined As
l

[VBA] Long SamplePeriod

[Cicode] INT SamplePeriod

[C++] int SamplePeriod

Limits
l

Minimum = 50 milliseconds

Maximum = 60000 milliseconds (1 minute)

Default = the scan rate of the page which hosts the Process Analyst control.

See Also
IPen.InstantTrend [Property][Get/Set]

IPen.Select [Method]
Makes this pen the primary selected pen.
Defined As
l

[VBA] Select()

[Cicode] Select()

[C++] HRESULT Select()

Execution Result
If the function succeeds, the return value will be Success. If the pen is deleted, the return
value will be GeneralFailure.
Remarks
Calling this method will also trigger PenSelectionChanged [Event].
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
pen.Select
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
_ObjectCallMethod(hPen, "Select");

184

Chapter: 4 Automation Model

END

IPen.SetDefaultSpan [Method]
Sets the default time span for this pen.
Defined As
l

[VBA] SetDefaultSpan(weeks As Integer, days As Integer, hours As Integer, minutes


As Integer, seconds As Integer, milliseconds As Integer)

[Cicode] SetDefaultSpan (INT weeks, INT days, DATE hours, INT minutes, INT seconds, INT milliseconds)

[C++] HRESULT SetDefaultSpan (short weeks, short days, short hours, short minutes,
short seconds, short milliseconds)

Parameters
weeks
[in]

Indicates the number of weeks in the span.

days
[in]

Indicates the number of days in the span.

hours
[in]

Indicates the number of hours in the span.

minutes
[in]

Indicates the number of minutes in the span.

seconds
[in]

Indicates the number of seconds in the span.

milliseconds
[in]

Indicates the number of milliseconds in the span.

Execution Result
If the function succeeds the return value will be Success. If an argument is bad then the
return value will be InvalidArgument. If the pen is deleted then the return value will be
GeneralFailure.
See Also
IPen.GetDefaultSpan [Method], IPen.ResetToDefaultSpan [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.

185

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
` Set span to 2 hours and 30 minutes
pen.GetDefaultSpan 0, 0, 2, 30, 0, 0
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
// Set span to 2 hours and 30 minutes
_ObjectCallMethod(hPen, "SetDefaultSpan", 0, 0, 2, 30, 0, 0);
END

IPen.SetQualityCompactionPointType [Method]
Use this function to indicate what visual cue to display for single and multiple samples.
Defined As
l

[VBA] SetQualityCompactionPointType(compactionType As Integer, pointType As


Integer)

[Cicode] SetQualityCompactionPointType(INT compactionType, INT pointType)

[C++] HRESULT SetQualityCompactionPointType(QualityCompactionType compactionType, PointType pointType)

Parameters
compactionType
[in]

Indicates which sample compaction type you want to set the visual cue for.

pointType
[in]

Indicates which visual cue to use for the selected compaction type.

Execution Result
If the function succeeds the return value will be Success. If an argument is bad, the
return value will be InvalidArgument. If an argument is out of range, the return value
will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
See Also
QualityCompactionType [Enumeration], PointType [Enumeration]
Calling Syntax
Assumes you have passed a valid pen object into the function.

186

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
` Set single samples to lsook like triangles
pen.SetQualityCompactionPointType 0, 5
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
// Set single samples to look like triangles
_ObjectCallMethod(hPen, "SetQualityCompactionPointType", 0, 5);
END

IPen.SetQualityLineStyle [Method]
This function can be used to change the type of line drawn for each of the quality states
defined by the Process Analyst for this Pen only.
Defined As
l

[VBA] SetQualityLineStyle(qualityType As Integer, lineStyle As Integer)

[Cicode] SetQualityLineStyle(INT qualityType, INT lineStyle)

[C++] HRESULT SetQualityLineStyle(QualityType qualityType, LineStyle lineStyle)

Parameters
qualityType
[in]

Indicates which quality type you want to set the visual cue for.

lineStyle
[in]

Indicates which line style visual cue to use for the selected quality type.

Execution Result
If the function succeeds the return value will be Success. If an argument is bad then the
return value will be InvalidArgument. If an argument is out of range then the return
value will be InvalidArgument. If the pen is deleted then the return value will be GeneralFailure.
Remarks
When a sample is added to the display, its quality value indicates how the line drawn
from that sample to the next one will be displayed.
See Also
QualityType [Enumeration], LineStyle [Enumeration]

187

Chapter: 4 Automation Model

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
` Set lines drawn after NA samples to be drawn as dash_dot
pen.SetQualityLineStyle 1, 3
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
// Set lines drawn after NA samples to be drawn as dash_dot
_ObjectCallMethod(hPen, "SetQualityLineStyle", 1, 3);
END

IPen.SetVerticalAxisLabelValue [Method]
This function can be used to display custom text for a particular value on the Vertical
Axis.
Defined As
l

[VBA] SetVerticalAxisLabelValue(value As Double, label As String)

[Cicode] SetVerticalAxisLabelValue(REAL value, STRING label)

[C++] HRESULT SetVerticalAxisLabelValue(double value, BSTR label)

Parameters
value
[in]

Indicates which value you want to replace with a custom label.

label
[in]

Indicates the text that will be displayed instead of the specified value.

Execution Result
If the function succeeds the return value will be Success. If an argument is bad then the
return value will be InvalidArgument. If the pen is deleted then the return value will be
GeneralFailure.
Calling Syntax
Assumes you have passed a valid pen object into the function.

188

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
` Change the vertical axis to display High High instead of 95
pen.SetVerticalAxisLabelValue 95, "High High"
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
// Change the vertical axis to display High High instead of 95
_ObjectCallMethod(hPen, "SetVerticalAxisLabelValue", 95, "High High");
END

IPen.Stacked [Property][Get/Set]
Get or Set whether the pen is visually displayed stacked or overlaid.
Defined As
l

[VBA] Boolean Stacked

[Cicode] INT Stacked

[C++] VARIANT_BOOL Stacked

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
l

True (-1): Stacked

False (0): Overlaid

Remarks
When stacked, pens will be drawn under each other; when overlaid, the pens will be
drawn over the top of each other.
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)

189

Chapter: 4 Automation Model

Dim stacked As Boolean


`Getting Property value
stacked = pen.Stacked
`Setting Property value
pen.Stacked = True
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bStacked;
// Getting current property value
bStacked = _ObjectGetProperty(hPen, "Stacked");
// Setting property value
_ObjectSetProperty(hPen, "Stacked", -1);
END

IPen.TrendCursorLabelFillColor [Property][Get/Set]
Gets or sets the fill color used for any cursor label associated with this pen.
Defined As
l

[VBA] Long TrendCursorLabelFillColor

[Cicode] INT TrendCursorLabelFillColor

[C++] OLE_COLOR TrendCursorLabelFillColor

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Remarks
To calculate the integer value necessary for a color apply the following formula (65536 *
Blue) + (256 * Green) + (Red). Where Red, Green and Blue are 0-255.
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.TrendCursorLabelFillColor

190

Chapter: 4 Automation Model

`Setting Property value to Red


pen.TrendCursorLabelFillColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "TrendCursorLabelFillColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "TrendCursorLabelFillColor", PackedRGB(255, 0, 0));
END

IPen.TrendCursorLabelLineColor [Property][Get/Set]
Gets or sets the border color used for any cursor label associated with this pen.
Defined As
l

[VBA] Long TrendCursorLabelLineColor

[Cicode] INT TrendCursorLabelLineColor

[C++] OLE_COLOR TrendCursorLabelLineColor

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Remarks
To calculate the integer value necessary for a color apply the following formula (65536 *
Blue) + (256 * Green) + (Red). Where Red, Green and Blue are 0-255.
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.TrendCursorLabelLineColor
`Setting Property value to Red
pen.TrendCursorLabelLineColor = 255
End Sub

191

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "TrendCursorLabelLineColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "TrendCursorLabelLineColor", PackedRGB(255, 0, 0));
END

IPen.TrendCursorLabelTextColor [Property][Get/Set]
Gets or sets the text color used for any cursor label associated with this pen.
Defined As
l

[VBA] Long TrendCursorLabelTextColor

[Cicode] INT TrendCursorLabelTextColor

[C++] OLE_COLOR TrendCursorLabelTextColor

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Remarks
To calculate the integer value necessary for a color apply the following formula (65536 *
Blue) + (256 * Green) + (Red). Where Red, Green and Blue are 0-255.
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.TrendCursorLabelTextColor
`Setting Property value to Red
pen.TrendCursorLabelTextColor = 255
End Sub

192

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "TrendCursorLabelTextColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "TrendCursorLabelTextColor", PackedRGB(255, 0, 0));
END

IPen.VerticalAxisAutoscale [Property][Get/Set]
Gets or sets whether the vertical axis will automatically calculate its physical limits
based on the sample values within its internal cache.
Defined As
l

[VBA] Boolean VerticalAxisAutoscale

[Cicode] INT VerticalAxisAutoscale

[C++] VARIANT_BOOL VerticalAxisAutoscale

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Remarks
Setting this property will turn off interactive Scrolling (IPen.HorizontalAxisScroll) and
Scaling (IPen.HorizontalAxisResize).
Limits
l

True (-1): Autoscale enabled

False (0): Autoscale disabled

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim autoScale As Long
`Getting Property value
autoScale = pen.VerticalAxisAutoscale
`Setting Property value
pen.VerticalAxisAutoscale = True

193

Chapter: 4 Automation Model

End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT autoScale;
// Getting current property value
autoScale = _ObjectGetProperty(hPen, "VerticalAxisAutoscale");
// Setting Property
_ObjectSetProperty(hPen, "VerticalAxisAutoscale", -1);
END

IPen.VerticalAxisColor [Property][Get/Set]
Gets or sets the color used to draw the line, labels and interval markers of the vertical
axis of this pen.
Defined As
l

[VBA] Long VerticalAxisColor

[Cicode] INT VerticalAxisColor

[C++] OLE_COLOR VerticalAxisColor

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Remarks
To calculate the integer value necessary for a color apply the following formula (65536 *
Blue) + (256 * Green) + (Red). Where Red, Green and Blue are 0-255.
See Also
IPen.HorizontalAxisColor [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.VerticalAxisColor

194

Chapter: 4 Automation Model

`Setting Property value to Red


pen.VerticalAxisColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "VerticalAxisColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "VerticalAxisColor", PackedRGB(255, 0, 0));
END

IPen.VerticalAxisLabelType [Property][Get/Set]
Gets or sets a unit type which can be applied to the axis labels. This allows numbers on
the axis to display with their unit. For example, setting the unit to "kg" will display "10
Kg" on the axis.
Defined As
l

[VBA] Integer VerticalAxisLabelType

[Cicode] INT VerticalAxisLabelType

[C++] AxisLabelType VerticalAxisLabelType

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the pen is deleted then the return
value will be GeneralFailure.
Remarks
Label Types are fixed and cannot be added to.
See Also
AxisLabelType [Enumeration]
Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim labelType As Integer

195

Chapter: 4 Automation Model

`Getting Property value


labelType = pen.VerticalAxisLabelType
`Setting Property value to Percent
pen.VerticalAxisLabelType= 3
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT labelType;
// Getting current property value
labelType = _ObjectGetProperty(hPen, "VerticalAxisLabelType");
// Setting Property to Percent
_ObjectSetProperty(hPen, "VerticalAxisLabelType", 3);
END

IPen.VerticalAxisResize [Property][Get/Set]
Gets or sets whether this pen allows the operator to interactively scale the vertical axis
by using the mouse.
Defined As
l

[VBA] Boolean VerticalAxisResize

[Cicode] INT VerticalAxisResize

[C++] VARIANT_BOOL VerticalAxisResize

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
l

True (-1): Enable resize

False (0): Disable resize

Remarks
This only applies to analog pens.
See Also
IPen.HorizontalAxisResize [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.

196

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim resize As Boolean
`Getting Property value
resize = pen.VerticalAxisResize
`Setting Property value
pen.VerticalAxisResize = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bResize;
// Getting current property value
bResize = _ObjectGetProperty(hPen, "VerticalAxisResize");
// Setting Property
_ObjectSetProperty(hPen, "VerticalAxisResize",0);
END

IPen.VerticalAxisScroll [Property][Get/Set]
Gets or sets whether this pen allows the operator to interactively scroll the vertical axis
by using the mouse.
Defined As
l

[VBA] Boolean VerticalAxisScroll

[Cicode] INT VerticalAxisScroll

[C++] VARIANT_BOOL VerticalAxisScroll

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
l

True (-1): Enable scrolling

False (0): Disable scrolling

Remarks
This only applies to analog pens.
See Also
IPen.HorizontalAxisScroll [Property][Get/Set]

197

Chapter: 4 Automation Model

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim scroll As Boolean
`Getting Property value
scroll = pen.VerticalAxisScroll
`Setting Property value
pen.VerticalAxisScroll = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bScroll;
// Getting current property value
bScroll = _ObjectGetProperty(hPen, "VerticalAxisScroll");
// Setting Property
_ObjectSetProperty(hPen, "VerticalAxisScroll", 0);
END

IPen.VerticalAxisWidth [Property][Get/Set]
Gets or sets the width of the vertical axis line and the associated interval markers.
Defined As
l

[VBA] Integer VerticalAxisWidth

[Cicode] INT VerticalAxisWidth

[C++] short VerticalAxisWidth

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Limits
A valid width is 0-8 pixels.
Remarks
This only applies to analog pens.
See Also
IPen.HorizontalAxisWidth [Property][Get/Set]

198

Chapter: 4 Automation Model

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim width As Integer
`Getting Property value
width = pen.VerticalAxisWidth
`Setting Property value
pen.VerticalAxisWidth = 3
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT width;
// Getting current property value
width = _ObjectGetProperty(hPen, "VerticalAxisWidth");
// Setting Property
_ObjectSetProperty(hPen, "VerticalAxisWidth", 3);
END

IPen.VerticalGridlinesColor [Property][Get/Set]
Gets or sets the color used to draw the major vertical gridlines.
Defined As
l

[VBA] Long VerticalGridlinesColor

[Cicode] INT VerticalGridlinesColor

[C++] OLE_COLOR VerticalGridlinesColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Remarks
To calculate the integer value necessary for a color apply the following formula (65536 *
Blue) + (256 * Green) + (Red). Where Red, Green and Blue are 0-255.
See Also
IPen.VerticalMinorGridlinesColor [Property][Get/Set]
Calling Syntax

199

Chapter: 4 Automation Model

Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.VerticalGridlinesColor
`Setting Property value to Red
pen.VerticalGridlinesColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "VerticalGridlinesColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "VerticalGridlinesColor", PackedRGB(255, 0, 0));
END

IPen.VerticalGridlinesStyle [Property][Get/Set]
Gets or sets the line style used to draw the major vertical gridlines.
Defined As
l

[VBA] Long VerticalGridlinesColor

[Cicode] INT VerticalGridlinesColor

[C++] LineStyle VerticalGridlinesColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the style is out of range, the return
value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
See Also
IPen.VerticalMinorGridlinesStyle [Property][Get/Set], LineStyle [Enumeration]
Calling Syntax
Assumes you have passed a valid pen object into the function.

200

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim style As Long
`Getting Property value
style = pen.VerticalGridlinesColor
`Setting Property value to Dot
pen.VerticalGridlinesColor = 2
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT style;
// Getting current property value
style = _ObjectGetProperty(hPen, "VerticalGridlinesStyle");
// Setting Property to Dot
_ObjectSetProperty(hPen, "VerticalGridlinesStyle", 2);
END

IPen.VerticalGridlinesWidth [Property][Get/Set]
Gets or sets the line width used when drawing the major vertical gridlines.
Defined As
l

[VBA] Integer VerticalGridlinesWidth

[Cicode] INT VerticalGridlinesWidth

[C++] short VerticalGridlinesWidth

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the width is out of range, the return
value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
Limits
A valid width is 0-8 pixels.
Calling Syntax
Assumes you have passed a valid pen object into the function.

201

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim width As Integer
`Getting Property value
width = pen.VerticalGridlinesWidth
`Setting Property value
pen.VerticalGridlinesWidth = 3
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT width;
// Getting current property value
width = _ObjectGetProperty(hPen, "VerticalGridlinesWidth");
// Setting Property t
_ObjectSetProperty(hPen, "VerticalGridlinesWidth", 3);
END

IPen.VerticalMinorGridlinesColor [Property][Get/Set]
Gets or sets the color used to draw the minor vertical gridlines.
Defined As
l

[VBA] Long VerticalMinorGridlinesColor

[Cicode] INT VerticalMinorGridlinesColor

[C++] OLE_COLOR VerticalMinorGridlinesColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the pen is deleted, the return value will
be GeneralFailure.
Remarks
To calculate the integer value necessary for a color apply the following formula (65536 *
Blue) + (256 * Green) + (Red). Where Red, Green and Blue are 0-255.
See Also
IPen.VerticalGridlinesColor [Property][Get/Set]
Calling Syntax
Assumes you have passed a valid pen object into the function.

202

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim color As Long
`Getting Property value
color = pen.VerticalMinorGridlinesColor
`Setting Property value to Red
pen.VerticalMinorGridlinesColor = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT color;
// Getting current property value
color = _ObjectGetProperty(hPen, "VerticalMinorGridlinesColor");
// Setting Property to Red
_ObjectSetProperty(hPen, "VerticalMinorGridlinesColor", PackedRGB(255, 0, 0));
END

IPen.VerticalMinorGridlinesStyle [Property][Get/Set]
Gets or sets the line style used to draw the minor vertical gridlines.
Defined As
l

[VBA] Long VerticalMinorGridlinesStyle

[Cicode] INT VerticalMinorGridlinesStyle

[C++] LineStyle VerticalMinorGridlinesStyle

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the style is out of range, the return
value will be InvalidArgument. If the pen is deleted, the return value will be GeneralFailure.
See Also
IPen.VerticalGridlinesStyle [Property][Get/Set], LineStyle [Enumeration]
Calling Syntax
Assumes you have passed a valid pen object into the function.

203

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim style As Long
`Getting Property value
style = pen.VerticalMinorGridlinesStyle
`Setting Property value to Dot
pen.VerticalMinorGridlinesColor = 2
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT style;
// Getting current property value
style = _ObjectGetProperty(hPen, "VerticalMinorGridlinesStyle");
// Setting Property to Dot
_ObjectSetProperty(hPen, "VerticalMinorGridlinesStyle", 2);
END

IPen.VerticalScrollBy [Method]
Scrolls the vertical axis by the specified factor.
Defined As
l

[VBA] VerticalScrollBy(factor As Double)

[Cicode] VerticalScrollBy(REAL factor)

[C++] HRESULT VerticalScrollBy(double factor)

Parameters
factor

Controls the direction and amount the axis will be scrolled. A negative value will
move the axis in the negative direction. A positive value will move the axis forward in
the positive direction. The value is a percentage representing the current viewable span.
So if the pen span is 100 units (10 to 110), and you specify a factor of 0.5 then you will
move the span 50 units (60 to 160).
[in]

Execution Result
If the function succeeds the return value will be Success. If the argument is bad then the
return value will be InvalidArgument. If the pen is deleted then the return value will be
GeneralFailure.
See Also
IPen.HorizontalScrollBy [Method]

204

Chapter: 4 Automation Model

Calling Syntax
Assumes you have passed a valid pen object into the function.
[VBA]
Sub Example(pen As Object)
` Move the pen span forward one complete span
pen.VerticalScrollBy 1.0
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
// Move the pen span forward one complete span
_ObjectCallMethod(hPen, "VerticalScrollby", 1.0);
END

IPen.VerticalZoom [Method]
Zooms centrally into the time span by the given factor on the vertical axis
Defined As
l

[VBA] VerticalZoom(factor As Double)

[Cicode] VerticalZoom (REAL factor)

[C++] HRESULT VerticalZoom (double factor)

Parameters
factor

Controls the direction and amount the axis will be zoomed. Acceptable zoom
values are 0 to 1 (Zoom out) and > 1 (zoom in).
[in]

Execution Result
If the function succeeds the return value will be Success. If the argument is bad then the
return value will be InvalidArgument. If the argument is out of range then the return
value will be InvalidArgument. If the pen is deleted then the return value will be GeneralFailure.
See Also
IPen.HorizontalZoom [Method]
Calling Syntax
Assumes you have passed a valid pen object into the function.

205

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
` Zoom out 50%
pen.VerticalZoom 0.5
` Undo the Zoom
pen.VerticalZoom 1.5
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
// Zoom out 50%
_ObjectCallMethod(hPen, "VerticalZoom", 0.5);
// Undo the Zoom
_ObjectCallMethod(hPen, "VerticalZoom", 2.0);
END

IPen.Visible [Property][Get/Set]
Get or set whether this pen will be visually shown (True) or hidden (False) to the operator.
Defined As
l

[VBA] Boolean Visible

[Cicode] INT Visible

[C++] VARIANT_BOOL Visible

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument. If the pen is deleted, the return value will be
GeneralFailure.
Limits
l

True (-1): Visible

False (0): Hidden

Calling Syntax
Assumes you have passed a valid pen object into the function.

206

Chapter: 4 Automation Model

[VBA]
Sub Example(pen As Object)
Dim visible As Boolean
`Get the property value
visible = pen.Visible
` Set the property value
pen.Visible = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hPen)
INT bVisible;
// Get the property value
bVisible = _ObjectGetProperty(hPen, "Visible", 0.5);
// Set the property value
_ObjectSetProperty(hPen, "Visible", 0);
END

IPens Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IPens

Methods (2)
IPens.Create [Method]
IPens.RemoveAll [Method]
Properties (5)
IPens.Count [Property][Get]
IPens.Item [Property][Get]
IPens._NewEnum [Property][Get]
IPens.ItemByName [Property][Get]
IPens.Pane[Property][Get]

IPens._NewEnum [Property][Get]
This allows For.. Each.. Next integration in VB.
Calling Syntax

207

Chapter: 4 Automation Model

This example assumes there is a valid Pens collection object to be passed into the example methods. This property is not applicable to Cicode.
[VBA]
Sub Example(Pens As Object)
Dim pen As Object
Dim count As Long
`Using Property
For Each pen In Pens
count = count + 1
Next pen
End Sub

IPens.Count [Property][Get]
Gets the number of Pens in this collection.
Defined As
l

[VBA] Long Count

[Cicode] INT Count

[C++] int Count

Execution Result
If the property get succeeds, the return value will be Success. If the pens collection is
deleted, the return value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid Pens collection object to be passed into the example methods.
[VBA]
Sub Example(Pens As Object)
Dim count As Long
`Getting Property value
count = Pens.Count
End Sub

[Cicode]
FUNCTION Example(OBJECT hPens)
// Getting property value
INT nCount = _ObjectGetProperty(hPens, "Count");

208

Chapter: 4 Automation Model

END

IPens.Create [Method]
Creates a new pen and adds it to this collection.
Defined As
l

[VBA] Create(penType As Integer, nameMode As Integer) as Object

[Cicode] OBJECT Create (INT penType, INT nameMode)

[C++] HRESULT Create(PenType penType, PenNameMode penNameMode, IPen**


pen)

Parameters
penType

Indicates the type of pen that will be created. See PenType Enumeration for the
types of pen that can be created.
[in]

penNameMode

Indicates how the name will be obtained for this pen. The Process Analyst provides
options of PenNameMode_Comment, PenNameMode_Tag, and PenNameMode_Custom. Specifying PenNameMode_Comment will mean that the Process Analyst names the
pen from the Comment field of the trend/alarm tag associated with the IPen.DataPoint
property. Specifying PenNameMode_Tag will mean that the Process Analyst will name
the pen as the value of the IPen.DataPoint property. Specifying PenNameMode_Custom
causes the Process Analyst to provide a default name and leave setting the name to you
via the IPen.Name property.
[in]

Execution Results
If the method succeeds the return value will be Success. If the pens collection is deleted,
the return value will be GeneralFailure.
Remarks
If this method succeeds, a new Pen of the specified type is created and appended to the
pens collection.
See Also
IPen Interface, PenType [Enumeration], PenNameMode [Enumeration]
Calling Syntax
This example assumes there is a valid Pens collection object to be passed in to the example methods.

209

Chapter: 4 Automation Model

[VBA]
Sub Example(pens As Object)
Dim pen As Object
Set pen = pens.Create(4097, 1)
End Sub

[Cicode]
FUNCTION Example(OBJECT hPens)
OBJECT hPen = _ObjectCallMethod(hPens, "Create" , 4097, 1);
END

IPens.Item [Property][Get]
Gets the Pen at the given index from this pen's collection.
Defined As
l

[VBA] Item(index As Long) as Object

[Cicode] OBJECT Item(INT index)

[C++] Item(int index, IPen* Item)

Parameters
index
[in]

Indicates the index of the pen item to return from this collection. (One based)

Execution Result
If the property get succeeds, the return value will be Success. If the index is out of range,
the return value will be InvalidArgument. If the pen's collection is deleted, the return
value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid Pens collection object to be passed into the example methods.
[VBA]
Sub Example(pens As Object)
Dim pen As Object
`Getting Property value
Set pen = pens.Item(1)
End Sub

210

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hPens)
// Getting property value
OBJECT hPen = _ObjectCallMethod(hPens, "get_Item", 1);
END

IPens.ItemByName [Property][Get]
Gets the Pen of the given name from this Pens collection.
Defined As
l

[VBA] ItemByName(name As String) as Object

[Cicode] OBJECT ItemByName(STRING name)

[C++] ItemByName(STRING name, IPen* Item)

Parameters
name
[in]

Indicates the name of the Pen item to return from this collection.

Execution Result
If the property get succeeds, the return value will be Success. If the pen does not exist,
the return value will be InvalidArgument. If the pens collection is deleted, the return
value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid Pens collection object to be passed into the example methods.
[VBA]
Sub Example(Pens As Object)
Dim pen As Object
`Getting Property value
Set pen = Pens.ItemByName("CPU Usage")
End Sub

[Cicode]
FUNCTION Example(OBJECT hPens)
// Getting property value
OBJECT hPen = _ObjectCallMethod(hPens, "get_ItemByName", "CPU Usage");

211

Chapter: 4 Automation Model

END

IPens.Pane[Property][Get]
Gets the Pane that this Pens collection belongs to.
Defined As
l

[VBA] Object Pane

[Cicode] OBJECT Pane

[C++] HRESULT Pane(IPane** Pane)

Execution Result
If the property get succeeds the return value will be Success. If the pens collection is
deleted the return value will be GeneralFailure.
Remarks
Each Pens collection belongs to a Pane.
Calling Syntax
This example assumes there is a valid Pens collection object to be passed into the example methods.
[VBA]
Sub Example(pens
Dim pane
`Getting
Set pane
End Sub

As Object)
As Object
Property value
= pens.Pane

[Cicode]
FUNCTION Example(OBJECT hPens)
// Getting property value
OBJECT hPane = _ObjectGetProperty(hPens, "Pane");
END

IPens.RemoveAll [Method]
Removes every Pen from the Pens collection.
Defined As

212

Chapter: 4 Automation Model

[VBA] RemoveAll()

[Cicode] RemoveAll()

[C++] HRESULT RemoveAll()

Execution Result
If the property get/set succeeds the return value will be Success. If the pens collection is
deleted the return value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid Pens collection object to be passed into the example methods.
[VBA]
Sub Panes(pens As Object)
pens.RemoveAll()
End Sub

[Cicode]
FUNCTION Example(OBJECT hPens)
_ObjectCallMethod(hPens, "RemoveAll");
END

IProcessAnalyst Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IProcessAnalyst

Methods
IProcessAnalyst.BlockUpdates [Method]
IProcessAnalyst.UnBlockUpdates [Method]
IProcessAnalyst.CopyToClipboard [Method]
IProcessAnalyst.CopyToFile [Method]
IProcessAnalyst.FreezeEvent [Method]
IProcessAnalyst.LoadFromFile [Method]
IProcessAnalyst.PrintAll [Method]
IProcessAnalyst.SaveToFile [Method]
IProcessAnalyst.ShowProperties [Method]

213

Chapter: 4 Automation Model

IProcessAnalyst.SubscribeForPropertyChange [Method]
IProcessAnalyst.SynchroniseToNow [Method]
IProcessAnalyst.UnsubscribePropertyChange [Method]
Properties
IProcessAnalyst.AdminPrivilegeLevel [Property] [Get]
IProcessAnalyst.AutoScroll [Property][Get/Set]
IProcessAnalyst.BackgroundColor [Property][Get/Set]
IProcessAnalyst.CommandSystem [Property][Get]
IProcessAnalyst.ContextMenu [Property][Get/Set]
IProcessAnalyst.Cursors [Property][Get]
IProcessAnalyst.DataRequestRate [Property][Get/Set]
IProcessAnalyst.DisplayRefreshRate [Property][Get/Set]
IProcessAnalyst.Language [Property] [Get/Set]
IProcessAnalyst.LastSelectedPen [Property][Get]
IProcessAnalyst.LockedPens [Property][Get/Set]
IProcessAnalyst.NumberofSamples[Property][Get/Set]
IProcessAnalyst.ObjectView [Property][Get]
IProcessAnalyst.Panes [Property][Get]
IProcessAnalyst.PrimaryPath [Property][Get/Set]
IProcessAnalyst.SecondaryPath [Property][Get/Set]
IProcessAnalyst.Toolbars [Property][Get]
IProcessAnalyst.WritePrivilegeLevel [Property][Get]
IProcessAnalyst.ZoomMode [Property][Get/Set]

IProcessAnalyst.BlockUpdates [Method]
Blocks certain aspects of the Process Analyst's redrawing and data updating.
Defined As
l

[VBA] BlockUpdates()

[Cicode] BlockUpdates()

[C++] HRESULT BlockUpdates()

Remarks

214

This method blocks three redraw systems: redraw for the chart, the Object View, and
the toolbars.

Data updates are also blocked.

The current data requests are cancelled.

Chapter: 4 Automation Model

The Process Analyst has a built-in counter to store how many times the block and
unblock have been called, so that only the final UnBlockUpdates call actually
unblocks the above mentioned data updates and redraw systems.

See Also
IProcessAnalyst.UnBlockUpdates [Method]
Execution Result
If the function succeeds, the return value will be Success. If the function does not succeed, the return value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid Process Analyst object to be passed into the example methods.
[VBA]
Sub Example(ProcessAnalyst As Object)
ProcessAnalyst.BlockUpdates()
End Sub

[Cicode]
FUNCTION Example(OBJECT hProcessAnalyst)
_ObjectCallMethod(hProcessAnalyst, "BlockUpdates");
END

IProcessAnalyst.UnBlockUpdates [Method]
Unblocks certain aspects of the Process Analyst's redrawing and data updating.
Defined As
l

[VBA] UnblockUpdates()

[Cicode] UnblockUpdates()

[C++] HRESULT UnblockUpdates()

Remarks
l

This method unblocks three redraw systems: redraw for the chart, the Object View,
and the toolbars.

Data updates are also unblocked.

215

Chapter: 4 Automation Model

The Process Analyst has a built-in counter to store how many times the block and
unblock have been called, so that only the final UnBlockUpdates call actually
unblocks the above mentioned data updates and redraw systems.

See Also
IProcessAnalyst.BlockUpdates [Method]
Execution Result
If the function succeeds, the return value will be Success. If the function does not succeed, the return value will be GeneralFailure. If other BlockUpdates are in effect, a Success will be returned also (for those C++ users, S_FALSE will be returned in this case).
Calling Syntax
This example assumes there is a valid Process Analyst object to be passed into the example methods.
[VBA]
Sub Example(ProcessAnalyst As Object)
ProcessAnalyst.UnblockUpdates()
End Sub

[Cicode]
FUNCTION Example(OBJECT hProcessAnalyst)
_ObjectCallMethod(hProcessAnalyst, "UnblockUpdates");
END

IProcessAnalyst.CopyToClipboard [Method]
Copies the data in the current viewable range for visible pens to the clipboard.
Defined As
l

[VBA] CopyToClipboard()

[Cicode] CopyToClipboard()

[C++] HRESULT CopyToClipboard()

Remarks
The timestamp of each sample will be in local time defined by your computer. The start
and end sample maybe generated for each pen to indicate the exported range of the data.
Execution Result

216

Chapter: 4 Automation Model

If the function succeeds the return value will be Success. If the function does not succeed
the return value will be GeneralFailure.
See Also
IProcessAnalyst.CopyToFile [Method]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
myPage_AN35.CopyToClipboard
End Sub

[Cicode]
Sub Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
_ObjectCallMethod(hProcessAnalyst, "CopyToClipboard");
End Sub

IProcessAnalyst.CopyToFile [Method]
Saves the data in the current viewable range for visible pens to the specified file.
Defined As
l

[VBA] CopyToFile(filename As String)

[Cicode] CopyToFile(STRING filename)

[C++] HRESULT CopyToClipBoard(BSTR filename)

Parameters
filename
[in]

Indicates the name and path of the file that the data will be exported to.

Execution Result
If the function succeeds the return value will be Success. If the function does not succeed
the return value will be GeneralFailure.
Remarks

217

Chapter: 4 Automation Model

The timestamp of each sample will be in local time defined by your computer. The start
and end sample maybe generated for each pen to indicate the exported range of the data.
See Also
IProcessAnalyst.CopyToClipboard [Method]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
myPage_AN35.CopyToFile "test.xls"
End Sub

[Cicode]
Sub Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
_ObjectCallMethod(hProcessAnalyst, "CopyToFile", "test.xls");
End Sub

IProcessAnalyst.FreezeEvent [Method]
Enables or disables a specified event from triggering.
Defined As
l

[VBA] FreezeEvent(eventName As String, freeze As Boolean)

[Cicode] FreezeEvent(STRING eventName, INT freeze)

[C++] HRESULT FreezeEvent(BSTR columnName, VARIANT_BOOL freeze)

Parameters
eventName
[in]

Specifies the event that you want to cease receiving notifications for.

freeze

Indicates whether to enable or disable the event. True(-1) disable the event. False(0)
enable the event.
[in]

Execution Result

218

Chapter: 4 Automation Model

If the method succeeds, the return value will be Success. If the method does not succeed,
the return value will be GeneralFailure. If eventName is bad or does not exist, the return
value will be InvalidArgument.
Remarks
All events exposed by the Process Analyst can be enabled or disabled. This method is
particularly useful to minimize the likelihood of recursive behavior of functions that generate the same event that you are trying to handle.
Calling Syntax
This example assumes there is a valid Process Analyst object to be passed into the example methods.
[VBA]
Sub Example(analyst As Object)
analyst.FreezeEvent "HorizontalAxisChanged" True
End Sub

[Cicode]
FUNCTION Example(OBJECT hAnalyst)
_ObjectCallMethod(hAnalyst, "FreezeEvent","HorizontalAxisChanged", -1);
END

IProcessAnalyst.LoadFromFile [Method]
Loads a specified view into the Process Analyst.
Defined As
l

[VBA] LoadFromFile(filename As String, fileLocation As Integer)

[Cicode] LoadFromFile(STRING filename, INT fileLocation)

[C++] HRESULT LoadFromFile(BSTR filename, FileLocation fileLocation)

Parameters
filename

Indicates a relative path and filename of the view to load into the Process Analyst.
See Remarks, below.
[in]

fileLocation
[in]

Indicates which known location to load the file from.

Execution Result

219

Chapter: 4 Automation Model

If the function succeeds the return value will be Success. If the filename is invalid the
return value will be InvalidArgument. If the path indicated by fileLocation is invalid or
offline then the return value will be PathNotFound. If any other problem occurs then the
return value will be GeneralFailure.
Remarks
This method will replace the current view with the one in the specified file.
Absolute paths are not necessary for the filename as the method has been designed to
load the specified file from [Run]:\Analyst Views (FileLocation_Local), my documents
folder (FileLocation_User) or from the primary/secondary paths (FileLocation_Server).
When a file is loaded it will be synchronized with the other locations to verify each location has the file which is the latest. If the file you are loading is older then one which
exists in another location it will be replaced. Synchronization will not occur when
loaded from a Web-client.
See Also
FileLocation [Enumeration], IProcessAnalyst.PrimaryPath [Property][Get/Set], IProcessAnalyst.SecondaryPath [Property][Get/Set]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
` Load the view from the server
myPage_AN35.LoadFromFile "Test1.pav", 0
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
_ObjectCallMethod(hProcessAnalyst, "LoadFromFile","Test1.pav", 0);
END

IProcessAnalyst.PrintAll [Method]
Displays the Print configuration dialog.
Defined As

220

Chapter: 4 Automation Model

[VBA] PrintAll

[Cicode] PrintAll()

[C++] HRESULT PrintAll()

Execution Result
If the function succeeds the return value will be Success. If an unexpected error occurs
then return value will be GeneralFailure.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
myPage_AN35.PrintAll
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
_ObjectCallMethod(hProcessAnalyst, "PrintAll");
END

IProcessAnalyst.SaveToFile [Method]
Saves the current view using the specified name to the specified location.
Defined As
l

[VBA] SaveToFile(filename As String, fileLocation As Integer)

[Cicode] SaveToFile(STRING filename, INT fileLocation)

[C++] HRESULT SaveToFile(BSTR filename, FileLocation fileLocation)

Parameters
filename

Indicates a relative path and filename which will be used during the saving of the
view. See Remarks.
[in]

fileLocation
[in]

Indicates which known location to save the file to.

Execution Result

221

Chapter: 4 Automation Model

If the function succeeds the return value will be Success. If the filename is invalid the
return value will be InvalidArgument. If the path indicated by fileLocation is invalid or
offline then the return value will be PathNotFound. If any other problem occurs, the
return value will be GeneralFailure.
Remarks
On a client where the current user matches the WritePrivilegeLevel only the FileLocation_Server and FileLocation_User options will succeed. Saving using the FileLocation_Server option will save to the locations indicated by PrimaryPath and
SecondaryPath properties and into the Project directory.
On a client where the current user does not match the WritePrivilegeLevel only the FileLocation_User will succeed.
On a Web Client the FileLocation_User is the only option which will succeed.
See Also
FileLocation [Enumeration], IProcessAnalyst.PrimaryPath [Property][Get/Set], IProcessAnalyst.SecondaryPath [Property][Get/Set], IProcessAnalyst.WritePrivilegeLevel [Property][Get]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
` Save the view to the server and project
myPage_AN35.SaveToFile "Analyst Views\Test1.pav", 1
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
` Save the view to the server and project
_ObjectCallMethod(hProcessAnalyst, "SaveToFile", "Analyst Views\Test1.pav", 1);
END

IProcessAnalyst.ShowProperties [Method]
Displays the Process Analyst's property configuration dialog.
Define As

222

Chapter: 4 Automation Model

[VBA] ShowProperties

[Cicode] ShowProperties()

[C++] HRESULT ShowProperties ()

Execution Result
If the function succeeds the return value will be Success. If an unexpected error occurs
then the return value will be GeneralFailure.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
myPage_AN35.ShowProperties
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
_ObjectCallMethod(hProcessAnalyst, "ShowProperties");
END

IProcessAnalyst.SubscribeForPropertyChange [Method]
Use this method to receive notifications of when a particular property changes. Notifications will be sent via the PropertyChanged event.
Defined As
l

[VBA] SubscribeForPropertyChange(interfaceName As String, propertyName As


String)

[Cicode] SubscribeForPropertyChange(STRING interfaceName, STRING propertyName)

[C++] HRESULT SubscribeForPropertyChange(BSTR interfaceName, BSTR propertyName)

Parameters
interfaceName

Specify the name of the interface that the property you want notifications for is
defined on.
[in]

223

Chapter: 4 Automation Model

propertyName
[in]

This is the name of the property you want to receive notifications for.

Execution Result
If the function succeeds, the return value will be Success. If the interfaceName or propertyName is a bad string, the return value will be InvalidArgument. If any other problem
occurs, the return value will be GeneralFailure.
Remarks
The following set of properties are supported:
Interface name

Property Name

IProcessAnalyst

AutoScroll

IProcessAnalyst

BackgroundColor

IProcessAnalyst

ContextMenu

IProcessAnalyst

LockedPens

IProcessAnalyst

DisplayRefreshRate

IProcessAnalyst

DataRequestRate

IProcessAnalyst

ZoomMode

See Also
IProcessAnalyst.UnsubscribePropertyChange [Method], PropertyChanged [Event]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
myPage_AN35.SubscribeForPropertyChange "IProcessAnalyst", "ZoomMode"
End Sub

[Cicode]
Sub Example()

224

Chapter: 4 Automation Model

OBJECT hProcessAnalyst = ObjectByName("AN35");


_ObjectCallMethod(hProcessAnalyst,"SubscribeForPropertyChange",
"IProcessAnalyst", "ZoomMode");
End Sub

IProcessAnalyst.SynchroniseToNow [Method]
Synchronizes pens such that the date/time reflects "Now."
Defined As
l

[VBA] SynchroniseToNow

[Cicode] SynchroniseToNow()

[C++] HRESULT SynchroniseToNow()

Execution Result
If the function succeeds, the return value will be Success. If any other problem occurs,
the return value will be GeneralFailure.
Remarks
The current span for each pen will be maintained. `Now&#39; is defined as the current
time on the client machine.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
myPage_AN35.SynchroniseToNow
End Sub

[Cicode]
Sub Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
_ObjectCallMethod(hProcessAnalyst, "SynchroniseToNow");
End Sub

225

Chapter: 4 Automation Model

IProcessAnalyst.UnsubscribePropertyChange [Method]
Use this method to cancel notifications of when the specified property changes. Notifications will cease to be sent via the PropertyChanged event.
Defined As
l

[VBA] UnsubscribePropertyChange(interfaceName As String, propertyName As


String)

[Cicode] UnsubscribePropertyChange(STRING interfaceName, STRING propertyName)

[C++] HRESULT UnsubscribePropertyChange(BSTR interfaceName, BSTR propertyName)

Parameters
interfaceName

Name of the interface that the property you want to remove notifications for is
defined on.
[in]

propertyName
[in]

Name of the property you want to remove notifications for.

Execution Result
If the function succeeds, the return value will be Success. If the interfaceName or propertyName is a bad string, the return value will be InvalidArgument. If any other problem
occurs, the return value will be GeneralFailure.
See Also
IProcessAnalyst.SubscribeForPropertyChange [Method], PropertyChanged [Event]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
myPage_AN35.UnsubscribePropertyChange "IProcessAnalyst","ZoomMode"
End Sub

[Cicode]
Sub Example()

226

Chapter: 4 Automation Model

OBJECT hProcessAnalyst = ObjectByName("AN35");


_ObjectCallMethod(hProcessAnalyst, "UnsubscribePropertyChange",
"IProcessAnalyst", "ZoomMode");
End Sub

IProcessAnalyst.AdminPrivilegeLevel [Property] [Get]


Retrieves the privilege level currently set for controlling administration features of the
Process Analyst at Run-time.
Defined As
l

[VBA] Integer AdminPrivilegeLevel

[Cicode] INT AdminPrivilegeLevel

[C++] short AdminPrivilegeLevel

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad
then the return value will be InvalidArgument.
Remarks
By default the level is 0 (Zero), which allows access to every feature at run time. Setting
this to any other level will require the operator viewing the Process Analyst to have a
privilege equal to that level.
This property can only be set at design time (in the Graphics Builder property pages)
and is recommended to prevent Operators from changing performance properties such
as DataRequestRate and DisplayRefreshRate.
Limits
Privilege level defined in CitectSCADA 1 - 8. 0 = no security.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim privilege As Boolean
`Getting Property value
privilege = myPage_AN35.AdminPrivilegeLevel
End Sub

227

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INT privilege;
// Getting current property value
privilege = _ObjectGetProperty(hProcessAnalyst,"AdminPrivilegeLevel");
END

IProcessAnalyst.AutoScroll [Property][Get/Set]
Gets or Sets the automatic scrolling of pens as time passes.
Defined As
l

[VBA] Boolean AutoScroll

[Cicode] INT AutoScroll

[C++] VARIANT_BOOL AutoScroll

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument.
Remarks
This function does not synchronize the pens to now. The display will be updated according to the value of the DisplayRefreshRate property.
Limits
l

True (-1): Autoscroll is On

False (0): Autoscroll is Off

Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim autoScroll As Boolean
`Getting Property value
autoScroll = myPage_AN35.AutoScroll
`Setting Property value
myPage_AN35.AutoScroll = True
End Sub

228

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INT autoScroll;
// Getting current property value
autoScroll = _ObjectGetProperty(hProcessAnalyst, "AutoScroll");
// Setting Property to true
_ObjectSetProperty(hProcessAnalyst, "AutoScroll", -1);
END

IProcessAnalyst.BackgroundColor [Property][Get/Set]
Gets or sets the background color for the Process Analyst.
Defined As
l

[VBA] Long BackgroundColor

[Cicode] INT BackgroundColor

[C++] OLECOLOR BackgroundColor

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument.
Remarks
The background is the area under the panes. To calculate the integer value necessary for
a color, apply the following formula:
(65536 * Blue) + (256 * Green) + (Red)
where Red, Green, and Blue are 0-255.
Limits
l

True (-1): Context menu is enabled

False (0): Context menu is disabled

Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim backgroundColor As Long

229

Chapter: 4 Automation Model

`Getting Property value


backgroundColor = myPage_AN35.BackgroundColor
`Setting Property value to Red
myPage_AN35.BackgroundColor = 255
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INT backgroundColor;
// Getting current property value
backgroundColor = _ObjectGetProperty(hProcessAnalyst,"BackgroundColor");
// Setting Property to Red
_ObjectSetProperty(hProcessAnalyst, "BackgroundColor", 255);
END

IProcessAnalyst.CommandSystem [Property][Get]
Gets a reference to the Process Analyst's Command System object. With this object you
can execute commands, query command information, and create your own custom commands.
Defined As
l

[VBA] Object CommandSystem

[Cicode] OBJECT CommandSystem

[C++] ICommandSystem* CommandSystem

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad
then the return value will be InvalidArgument.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim commandSystem As Object
`Retrieve command system
Set commandSystem = myPage_AN35.CommandSystem
End Sub

230

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
OBJECT hCommandSystem;
// Retrieve command system
hCommandSystem = _ObjectGetProperty(hProcessAnalyst, "CommandSystem");
END

IProcessAnalyst.ContextMenu [Property][Get/Set]
Enables or disables the context menu which is displayed at Run-time when an operator
clicks the right mouse button on the graphical display.
Defines As
l

[VBA] Boolean ContextMenu

[Cicode] INT ContextMenu

[C++] VARIANT_BOOL ContextMenu

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim contextMenu As Boolean
`Getting Property value
contextMenu = myPage_AN35.ContextMenu
`Disable the context menu
myPage_AN35.ContextMenu = False
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INT contextMenu;
// Getting current property value
contextMenu =_ObjectGetProperty(hProcessAnalyst,"ContextMenu");

231

Chapter: 4 Automation Model

// Disable the context menu


_ObjectSetProperty(hProcessAnalyst, "ContextMenu", 0);
END

IProcessAnalyst.Cursors [Property][Get]
Gets a reference to the Process Analyst's cursors collection. With this object you can
create new, and browse existing cursors.
Defined As
l

[VBA] Object Cursors

[Cicode] OBJECT Cursors

[C++] ICursors* Cursors

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad
then the return value will be InvalidArgument.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim cursors As Object
`Retrieve cursors collection
Set cursors = myPage_AN35.Cursors
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
OBJECT hCursors;
// Retrieve cursor collection
hCursors = _ObjectGetProperty(hProcessAnalyst, "Cursors");
END

232

Chapter: 4 Automation Model

IProcessAnalyst.DataRequestRate [Property][Get/Set]
Indicates how often (in milliseconds) the Process Analyst Control will request data from
the Trends Server(s). Internally the Process Analyst will choose the most optimum
request rate for data, but this property can be used to slow the request down further.
Defined As
l

[VBA] Integer DataRequestRate

[Cicode] INT DataReqestRate

[C++] short DataRequestRate

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument.
Remarks
This property is useful for controlling the load on a Trends Server. The higher the figure
the less load will be put on the Trends Server(s).
Limits
l

Minimum = 10 milliseconds

Maximum = 60000 milliseconds (1 minute)

Default = 1000 milliseconds (1 second)

Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim requestRate As Integer
`Retrieve request rate
requestRate = myPage_AN35.DataRequestRate
`Set request rate
myPage_AN35.DataRequestRate = 2000
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INT requestRate;

233

Chapter: 4 Automation Model

// Retrieve property value


requestRate = _ObjectGetProperty(hProcessAnalyst, "DataRequestRate");
// Set property value to 2 seconds
_ObjectSetProperty(hProcessAnalyst, "DataRequestRate", 2000);
END

IProcessAnalyst.DisplayRefreshRate [Property][Get/Set]
Indicates how fast the Process Analyst Control display is updated in milliseconds. The
default is an update of 1 second, which provides optimum client performance and visual feedback.
Defined As
l

[VBA] Integer DisplayRefreshRate

[Cicode] INT DisplayRefreshRate

[C++] short DisplayRefreshRate

UNACCEPTABLY SLOW PROGRAM EXECUTION


Do not specify a Display refresh rate less than 500 ms.
Do not specify a Number of Samples greater than 500.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument.
Remarks
This property is useful for controlling the performance of a client (CPU usage).
Limits
l

Minimum = 10 milliseconds (most machines will not be fast enough to keep up).

Maximum = 60000 milliseconds (1 minute).

Default = 1000 milliseconds (1 second).

Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".

234

Chapter: 4 Automation Model

[VBA]
Sub Example()
Dim requestRate As Integer
`Retrieve request rate
requestRate = myPage_AN35.DisplayRefreshRate
`Set request rate
myPage_AN35.DisplayRefreshRate = 2000
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INT requestRate;
// Retrieve request rate
requestRate = _ObjectGetProperty(hProcessAnalyst, "DisplayRefreshRate");
// Set request rate
_ObjectSetProperty(hProcessAnalyst, "DisplayRefreshRate", 2000);
END

IProcessAnalyst.Language [Property] [Get/Set]


This function allows dynamic changing of the user interface to the language specified.
Defined As
l

[VBA] String Language

[Cicode] STRING Language

[C++] BSTR Language

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument.
Remarks
To change languages you need to have additional localized resource .dll files alongside
the main resources.dll file. Additional language .dll files are named (and have to be
named) using the format "Resources_<languagecode>.dll". The Process Analyst expects
this format or the language will not be loaded.
For example, if you have a Chinese resource dll named "Resources_zh-CN.dll", set the
Language property to "zh-CN". The .dll files are named according to the RFC 1766 standard for specifying culture names.
Specifying "." resets the language back to the default.

235

Chapter: 4 Automation Model

Note: This method is not necessary to be called if you are using CitectSCADA's multilanguage feature to make the Process Analyst switch languages. For details, see
Multi-language Support.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim language As String
`Retrieve current language
language = myPage_AN35.Language
`Set language to Japanese
myPage_AN35.Language = "ja-JP"
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
STRING language;
// Retrieve current language
language = _ObjectGetProperty(hProcessAnalyst, "Language");
// Set language to Japanese
_ObjectSetProperty(hProcessAnalyst, "Language", "ja-JP");
END

IProcessAnalyst.LastSelectedPen [Property][Get]
Retrieves the last selected pen on the Process Analyst.
Defined As
l

[VBA] Object LastSelectedPen

[Cicode] OBJECT LastSelectedPen

[C++] IPen* LastSelectedPen

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad
then the return value will be InvalidArgument.
Remarks

236

Chapter: 4 Automation Model

The last selected pen is also referred to as the "primary" selection. If there are no pens in
the view, an invalid object will be returned.
Limits
l

A reference to the primary selected pen.

Invalid object when there are no pens on the display.

Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim selectedPen As Object
`Retrieve primary selection
Set selectedPen = myPage_AN35.LastSelectedPen
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
OBJECT selectedPen;
// Retrieve primary selection
selectedPen = _ObjectGetProperty(hProcessAnalyst, "LastSelectedPen");
END

IProcessAnalyst.LockedPens [Property][Get/Set]
Determines whether every the pen across every pane in the Process Analyst control are
locked together.
Defined As
l

[VBA] Boolean LockedPens

[Cicode] INT LockedPens

[C++] VARIANT_BOOL LockedPens

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument.
Remarks

237

Chapter: 4 Automation Model

While this property is enabled, any operation applied to the selected pen is applied to
every pen. When the property is disabled, the pens will lose the lock logic, and any interaction technique will apply to the individual pen with selection focus.
If this property is disabled and then enabled, every pen assumes the same scale, timespan, and end time position as the selected pen.
Limits
l

True (-1): Pens are locked.

False (0): Pens are unlocked.

Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim locked As Boolean
`Get current locked status
locked = myPage_AN35.LockedPens
`Turn off locked Pens
myPage_AN35.LockedPens = False
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
OBJECT lockedPens;
// Get current locked status
lockedPens = _ObjectGetProperty(hProcessAnalyst, "LockedPens");
// Turn off locked Pens
_ObjectSetProperty(hProcessAnalyst, "LockedPens", 0);
END

IProcessAnalyst.NumberofSamples[Property][Get/Set]
Specifies the date/time axis span of each pen in number of samples. More or less detail
for each pen can be displayed by increasing or decreasing the value of this property
respectively.

238

Chapter: 4 Automation Model

UNACCEPTABLY SLOW PROGRAM EXECUTION


Do not specify a Display refresh rate less than 500 ms.
Do not specify a Number of Samples greater than 500.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

Note: The value entered into the Number of Samples box in the Process Analyst
Properties dialog box is closely tied to the display resolution. The default setting is
ideal for screen resolutions from 1024x768 to 1280x1024. The association between
Number of Samples and the display resolution occurs because for each sample
shown on screen the Process Analyst attempts to leave a small gap to allow for sample markers. Because the Process Analyst shows samples when they occur, it
requires less data than a traditional trend client. Retrieving data is expensive and the
more data you retrieve the more time the request takes. It is recommended that this
parameter not exceed 500.
Defined As
l

[VBA] Integer NumberofSamples

[Cicode] INT NumberofSamples

[C++] short NumberofSamples

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument.
Remarks
This property is useful for controlling the performance of a client. (CPU usage).
By dividing a pen's time span by the value of this property, you can calculate the current display period of the pen. The Process Analyst will only display a maximum of one
sample per display period. See Data Compaction for details.
Limits
l

Minimum = 10

Maximum = 5000

Default = 300

See Also
Exporting Pen Data

239

Chapter: 4 Automation Model

Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim numOfSamples As Integer
`Retrieve number of samples
numOfSamples = myPage_AN35.NumberOfSamples
`Set request rate
myPage_AN35.NumberOfSamples = numOfSamples
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INT numOfSamples;
// Retrieve number of samples
numOfSamples = _ObjectGetProperty(hProcessAnalyst, "NumberOfSamples");
// Set request rate
_ObjectSetProperty(hProcessAnalyst, "NumberOfSamples", 500);
END

IProcessAnalyst.ObjectView [Property][Get]
Gets a reference to the ObjectView object. With this object you can manipulate the look of
the ObjectView.
Defined As
l

[VBA] Object ObjectView

[Cicode] OBJECT ObjectView

[C++] IObjectView* ObjectView

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad
then the return value will be InvalidArgument.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".

240

Chapter: 4 Automation Model

[VBA]
Sub Example()
Dim objectView As Object
`Retrieve the objectview
Set objectView = myPage_AN35.ObjectView
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
OBJECT objectView;
// Retrieve the objectview
objectView = _ObjectGetProperty(hProcessAnalyst, "ObjectView");
END

IProcessAnalyst.Panes [Property][Get]
Gets a reference to the Panes collection. With this object you can create new, and browse
existing panes.
Defined As
l

[VBA] Object Panes

[Cicode] OBJECT Panes

[C++] IPanes* Panes

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad
then the return value will be InvalidArgument.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim panes As Object
`Retrieve the panes collection
Set panes = myPage_AN35.Panes
End Sub

241

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
OBJECT panes;
// Retrieve the panes collection
panes = _ObjectGetProperty(hProcessAnalyst, "Panes");
END

IProcessAnalyst.PrimaryPath [Property][Get/Set]
Specifies the primary location for saving and loading Process Analyst views.
Defined As
l

[VBA] String PrimaryPath

[Cicode] STRING PrimaryPath

[C++] BSTR PrimaryPath

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument.
Remarks
The primary and secondary path properties together provide a file redundancy option
for large systems that need to store Process Analyst Views in a shared location. Whenever a load operation occurs from either of these locations, the loaded file will be synchronized with each location, such that the latest version of the file appears in both
locations.
See Also
IProcessAnalyst.SecondaryPath [Property][Get/Set], IProcessAnalyst.LoadFromFile
[Method], IProcessAnalyst.SaveToFile [Method]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim path As String
`Retrieve the path
path = myPage_AN35.PrimaryPath

242

Chapter: 4 Automation Model

`Set the path


myPage_AN35.PrimaryPath = "\\computer1\PA Views"
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
STRING path;
// Retrieve the path
path = _ObjectGetProperty(hProcessAnalyst, "PrimaryPath");
// Set the path
_ObjectSetProperty(hProcessAnalyst, "PrimaryPath", "\\computer1\PA Views");
END

IProcessAnalyst.SecondaryPath [Property][Get/Set]
Specifies the secondary location for saving and loading Process Analyst views.
Defined As
l

[VBA] String SecondaryPath

[Cicode] STRING SecondaryPath

[C++] BSTR SecondaryPath

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument.
Remarks
The secondary and primary path properties together provide a file redundancy option
for large systems that need to store Process Analyst Views in a shared location. Whenever a load operation occurs from either of these locations, the loaded file will be synchronized with each location, such that the latest version of the file appears in both
locations.
See Also
IProcessAnalyst.LoadFromFile [Method], IProcessAnalyst.PrimaryPath
[Property][Get/Set], IProcessAnalyst.SaveToFile [Method]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".

243

Chapter: 4 Automation Model

[VBA]
Sub Example()
Dim path As String
`Retrieve the path
path = myPage_AN35.PrimaryPath
`Set the path
myPage_AN35.SecondaryPath = "\\computer1\PA Views"
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
STRING path;
// Retrieve the path
path = _ObjectGetProperty(hProcessAnalyst, "SecondaryPath");
// Set the path
_ObjectSetProperty(hProcessAnalyst, "SecondaryPath", "\\computer1\PA Views");
END

IProcessAnalyst.Toolbars [Property][Get]
Gets a reference to the Toolbars collection. With this object you can browse and modify
existing toolbars.
Defined As
l

[VBA] Object Toolbars

[Cicode] OBJECT Toolbars

[C++] IToolbars* Toolbars

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim toolbars As Object
`Retrieve the toolbars collection

244

Chapter: 4 Automation Model

Set toolbars = myPage_AN35.Toolbars


End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
OBJECT toolbars;
// Retrieve the toolbars collection
toolbars = _ObjectGetProperty(hProcessAnalyst, "Toolbars");
END

IProcessAnalyst.WritePrivilegeLevel [Property][Get]
Returns the privilege level necessary to save Process Analyst views to the Primary and
Secondary paths.
Defined As
l

[VBA] Integer WritePrivilegeLevel

[Cicode] INT WritePrivilegeLevel

[C++] short WritePrivilegeLevel

Execution Result
If the property get succeeds the return value will be Success. If the return variable is bad
then the return value will be InvalidArgument.
Remarks
The privilege cannot be set via automation. It needs to be set in the property pages at
design time (for example, in Graphics Builder).
See Also
IProcessAnalyst.SaveToFile [Method], IProcessAnalyst.PrimaryPath [Property][Get/Set],
IProcessAnalyst.SecondaryPath [Property][Get/Set]
Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim privilege As Integer
`Retrieve the privilege

245

Chapter: 4 Automation Model

privilege = myPage_AN35.WritePrivilegeLevel
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INTEGER privilege;
// Retrieve the privilege
privilege = _ObjectGetProperty(hProcessAnalyst, "WritePrivilegeLevel");
END

IProcessAnalyst.ZoomMode [Property][Get/Set]
Enables or disables the box zooming mode for the Process Analyst.
Defined As
l

[VBA] Boolean ZoomMode

[Cicode] INT ZoomMode

[C++] VARIANT_BOOL ZoomMode

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument.
Remarks
Setting this mode will verify only box zooming operations can occur; other operations
such as interactive scrolling and scaling will cease.
Limits
l

True (-1): Enable zoom mode.

False (0): Disable zoom mode.

Calling Syntax
Assumes you have a page called "myPage" and the Process Analyst has been named
"AN35".
[VBA]
Sub Example()
Dim zoomMode As Boolean
`Retrieve the mode
zoomMode = myPage_AN35.ZoomMode

246

Chapter: 4 Automation Model

`Set the path


myPage_AN35.ZoomMode = True
End Sub

[Cicode]
FUNCTION Example()
OBJECT hProcessAnalyst = ObjectByName("AN35");
INT zoomMode;
// Retrieve the zoomMode
zoomMode = _ObjectGetProperty(hProcessAnalyst, "ZoomMode");
// Set the zoomMode
_ObjectSetProperty(hProcessAnalyst, "ZoomMode", -1);
END

IToolbar Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IToolbar

Methods (0)
Properties (2)
IToolbar.Visible [Property][Get/Set]
IToolbar.Buttons [Property][Get]

IToolbar.Buttons [Property][Get]
Gets this Toolbars collection of Buttons.
Defined As
l

[VBA] Object Buttons

[Cicode] OBJECT Buttons

[C++] IToolbarButtons* Buttons

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax

247

Chapter: 4 Automation Model

This example assumes there is a valid Toolbar object as retrieved from a Process
Analyst's Toolbars collection. (for example, VBA: ProcessAnalyst.Toolbars.Item(1))
[VBA]
Sub Example(Toolbar As Object)
Dim buttons As Object
`Getting Property value
Set buttons = Command.Buttons
End Sub

[Cicode]
FUNCTION Example(OBJECT hToolbar)
// Getting property value
OBJECT hButtons = _ObjectGetProperty(hToolbar, "Buttons");
END

IToolbar.Visible [Property][Get/Set]
Gets and Sets this Toolbars Visible state.
Defined As
l

[VBA] Boolean Visible

[Cicode] INT Visible

[C++] VARIANT_BOOL Visible

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Limits
l

True (-1): Visible

False (0): Invisible

Remarks
If the toolbar is not visible, buttons tied to it will not appear. Only the main toolbar can
be hidden. Setting the new toolbar to invisible will result in a GeneralFailure.
Calling Syntax
This example assumes there is a valid Toolbar object as retrieved from a Process
Analyst's Toolbars collection. (for example, VBA: ProcessAnalyst.Toolbars.Item(1))

248

Chapter: 4 Automation Model

[VBA]
Sub Example(Toolbar As Object)
Dim visible As Boolean
`Getting Property value
visible = Command.Visible
`Setting Property value
Command.Visible = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hToolbar)
// Getting property value
INT nVisible = _ObjectGetProperty(hToolbar, "Visible");
// Setting property value
_ObjectSetProperty(hToolbar, "Visible", 0);
END

IToolbars Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IToolbar

Methods (0)
Properties (3)
IToolbars.Count [Property][Get]
IToolbars.Item [Property][Get]
IToolbars._NewEnum [Property][Get]

IToolbars.Item [Property][Get]
Gets the Toolbar at a supplied index location in this collection.
Defined As
l

[VBA] Item(index As Long) as Object

[Cicode] OBJECT Item(INT index)

[C++] Item(int index, IToolbar* Item)

Parameters

249

Chapter: 4 Automation Model

index

Indicates the index location of the child item to return from this collection. (One
based) 1 = Main toolbar; 2 = Navigation toolbar.
[in]

Execution Result
If the property get succeeds, the return value will be Success. If the index is out of range,
the return value will be InvalidArgument.
Calling Syntax
This example assumes there is a valid Toolbars collection as retrieved from an ObjectView. (for example, VBA: objectView.Toolbars)
[VBA]
Sub Example(Toolbars As Object)
Dim toolbar As Object
`Getting Property value
Set toolbar = Toolbars.Item(1)
End Sub

[Cicode]
FUNCTION Example(OBJECT hToolbars)
// Getting property value
OBJECT hToolbar = _ObjectCallMethod(hToolbars, "get_Item", 1);
END

IToolbars._NewEnum [Property][Get]
This allows For.. Each.. Next integration in VB.
Calling Syntax
This example assumes there is a valid Toolbars collection as retrieved from an ObjectView (for example, VBA: objectView.Toolbars). This property is not applicable to Cicode.
[VBA]
Sub Example(Toolbars As Object)
Dim toolbar As Object
Dim count Object
`Using Property
For Each toolbar In Toolbars
count = count + 1
Next toolbar

250

Chapter: 4 Automation Model

End Sub

IToolbars.Count [Property][Get]
Gets the number of Toolbars in this collection.
Defined As
l

[VBA] Long Count

[Cicode] INT Count

[C++] int Count

Execution Result
If the property get succeeds, the return value will be Success. If the return variable is bad,
the return value will be InvalidArgument.
Calling Syntax
This example assumes there is a valid Toolbars collection as retrieved from an ObjectView. (for example, VBA: objectView.Toolbars).
[VBA]
Sub Example(Toolbars As Object)
Dim count As Long
`Getting Property value
count = Toolbars.Count
End Sub

[Cicode]
FUNCTION Example(OBJECT hToolbars)
// Getting property value
INT nCount
= _ObjectGetProperty(hToolbars, "Count");
END

IToolbarButton Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IToolbar

251

Chapter: 4 Automation Model

Methods (0)
Properties (1)
IToolbarButton.CommandId [Property][Get]

IToolbarButton.CommandId [Property][Get]
Gets the ID of the associated command for this button.
Defined As
l

[VBA] String CommandId

[Cicode] STRING CommandId

[C++] BSTR CommandId

Calling Syntax
This example assumes there is a valid ToolbarButtons collection as retrieved from an
ObjectView (for example, VBA: objectView.Toolbars.Item(1).Buttons).
[VBA]
Sub Example(Buttons As Object)
Dim commandId As String
`Getting Property value
commandId = Buttons.CommandId
End Sub

[Cicode]
FUNCTION Example(OBJECT hButtons)
// Getting property value
STRING nCommandId = _ObjectGetProperty(hButtons, "CommandId");
END

IToolbarButtons Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] IToolbar

Methods (3)

252

Chapter: 4 Automation Model

IToolbarButtons.Add [Method]
IToolbarButtons.Remove [Method]
IToolbarButtons.RemoveAll [Method]
Properties (3)
IToolbarButtons.Count [Property][Get]
IToolbarButtons.Item [Property][Get]
IToolbarButtons._NewEnum [Property][Get]

IToolbarButtons._NewEnum [Property][Get]
This allows For.. Each.. Next integration in VB.
Calling Syntax
This example assumes there is a valid ToolbarButtons collection as retrieved from an
ObjectView (for example, VBA: objectView.Toolbars.Item(1).Buttons). This property is not
applicable to Cicode.
[VBA]
Sub Example(Buttons As Object)
Dim button As Object
Dim count Object
`Using Property
For Each button In Buttons
count = count + 1
Next button
End Sub

IToolbarButtons.Add [Method]
Adds a toolbar button linked to the command identified by the supplied Command Id to
this Toolbar.
Defined As
l

[VBA] Add(CommandId as String)

[Cicode] Add (STRING CommandId)

[C++] HRESULT Add (BSTR CommandId)

Parameters
CommandId
[in]

The Command ID of a command to link to the new button that is being added.

Execution Result

253

Chapter: 4 Automation Model

If this method succeeds, the return value will be Success. If the command ID is invalid,
the return value will be InvalidArgument.
Remarks
If this method succeeds, the ID supplied will be linked to the new button that is added.
The Commands properties will be applied to that button. (its icon, tooltip, security) If
this button is pressed, the CommandExecuted event will raise with this Command ID.
See Also
CommandExecuted [Event]
Calling Syntax
This example assumes there is a valid ToolbarButtons collection as retrieved from an
ObjectView (for example, VBA: objectView.Toolbars.Item(1).Buttons).
[VBA]
Sub Example(Buttons As Object)
Buttons.Add("Citect_Command_Help")
End Sub

[Cicode]
FUNCTION Example(OBJECT hButtons)
_ObjectCallMethod(hButtons, "Add", "Citect_Command_Help");
END

IToolbarButtons.Count [Property][Get]
Gets the number of Buttons in this collection.
Defined As
l

[VBA] Long Count

[Cicode] INT Count

[C++] int Count

Calling Syntax
This example assumes there is a valid ToolbarButtons collection as retrieved from an
ObjectView. (for example, VBA: objectView.Toolbars.Item(1).Buttons).

254

Chapter: 4 Automation Model

[VBA]
Sub Example(Buttons As Object)
Dim count As Long
`Getting Property value
count = Buttons.Count
End Sub

[Cicode]
FUNCTION Example(OBJECT hButtons)
// Getting property value
INT nCount = _ObjectGetProperty(hButtons, "Count");
END

IToolbarButtons.Item [Property][Get]
Gets the button at a supplied index location in this collection.
Defined As
l

[VBA] Item(index As Long) as Object

[Cicode] OBJECT Item(INT index)

[C++] Item(int index, IToolbarButton* Item)

Parameters
index
[in]

Indicates the index location of the button to return from this collection. (One based)

Execution Results
If the property get succeeds, the return value will be success. If the index is out of range,
the return value will be InvalidArgument. If the method does not succeed, the return
value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid ToolbarButtons collection as retrieved from an
ObjectView (for example, VBA: objectView.Toolbars.Item(1).Buttons).
[VBA]
Sub Example(Buttons As Object)
Dim toolbar As Object
`Getting Property value
Set toolbar = Buttons.Item(1)

255

Chapter: 4 Automation Model

End Sub

[Cicode]
FUNCTION Example(OBJECT hButtons)
// Getting property value
OBJECT hToolbar = _ObjectCallMethod(hButtons, "get_Item", 1);
END

IToolbarButtons.Remove [Method]
Removes a button from this toolbar at the supplied index.
Defined As
l

[VBA] Remove(Index as Integer)

[Cicode] Remove (INT Index)

[C++] HRESULT Remove (int Index)

Parameters
Index
[in]

The index of the button to remove from this toolbar. (1 Based)

Execution Results
If the method succeeds, the return value will be Success. If the index is out of range, the
return value will be InvalidRange. If the method does not succeed, the return value will
be GeneralFailure.
Calling Syntax
This example assumes there is a valid ToolbarButtons collection as retrieved from an
ObjectView. (for example, VBA: objectView.Toolbars.Item(1).Buttons).
[VBA]
Sub Example(Buttons As Object)
Buttons.Remove(1)
End Sub

[Cicode]
FUNCTION Example(OBJECT hButtons)
_ObjectCallMethod(hButtons, "Remove", 1);

256

Chapter: 4 Automation Model

END

IToolbarButtons.RemoveAll [Method]
Removes every button from this Toolbar.
Defined As
l

[VBA] RemoveAll()

[Cicode] RemoveAll()

[C++] HRESULT RemoveAll()

Execution Results
If this method succeeds, the return value will be Success. If this method does not succeed, the return value will be GeneralFailure.
Calling Syntax
This example assumes there is a valid ToolbarButtons collection as retrieved from an
ObjectView. (for example, VBA: objectView.Toolbars.Item(1).Buttons)
[VBA]
Sub Example(Buttons As Object)
Buttons.RemoveAll()
End Sub

[Cicode]
FUNCTION Example(OBJECT hButtons)
_ObjectCallMethod(hButtons, "RemoveAll");
END

ITrendCursor Interface
Defined As
l

[VBA] Object

[Cicode] OBJECT

[C++] ITrendCursor

Methods

257

Chapter: 4 Automation Model

ITrendCursor.GetValue [Method]
ITrendCursor.Delete [Method]
Properties
ITrendCursor.Color [Property][Get/Set]
ITrendCursor.Width [Property][Get/Set]
ITrendCursor.Position [Property][Get/Set]
ITrendCursor.Visible [Property][Get/Set]
ITrendCursor.Collection [Property][Get]
ITrendCursor.Name [Property][Get/Set]
ITrendCursor.PenLabelVisible [Property][Get/Set]
ITrendCursor.PenLabelWidth [Property][Get/Set]
ITrendCursor.PenLabelHeight [Property][Get/Set]
ITrendCursor.PenLabelX [Property][Get/Set]
ITrendCursor.PenLabelY [Property][Get/Set]
ITrendCursor.LabelsLocked [Property][Get/Set]

ITrendCursor.Collection [Property][Get]
Obtain a reference to the ICursors collection that contains the cursor.
Defined As
l

[VBA] Object Collection

[Cicode] OBJECT Collection

[C++] HRESULT Collection(ICursors **cursor)

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the cursor is deleted, the return value
will be GeneralFailure.
Calling Syntax
This example assumes you have a valid reference to a cursor.
[VBA]
Sub Example(cursor As Object)
Dim cursors As Object
`Getting Property collection
Set cursors = cursor.Collection
End Sub

258

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hCursor)
OBJECT hCursors;
// Getting collection
hCursors = _ObjectGetProperty(hCursor, "Collection");
END

ITrendCursor.Color [Property][Get/Set]
Gets or Sets the line color of the cursor.
Defined As
l

[VBA] Long Color

[Cicode] INT Color

[C++] OLE_COLOR Color

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the cursor is deleted the return
value will be GeneralFailure.
Remarks
The Cicode function PackedRGB can be used to convert an RGB color specification to the
OLE_COLOR type used by the Process Analyst.
Calling Syntax
This example assumes you have a valid reference to a cursor.
[VBA]
Sub Example(cursor As Object)
Dim trendCursorColor As Long
`Getting Property value
trendCursorColor = cursor.Color
`Setting Property value (to red)
cursor.Color = 255
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor)
INT trendCursorColor;

259

Chapter: 4 Automation Model

// Getting current property value


trendCursorColor = _ObjectGetProperty(hCursor, "Color");
// Setting Property to blue
_ObjectSetProperty(hCursor, "Color", PackedRGB(0, 0, 255));
END

ITrendCursor.Delete [Method]
Deletes the cursor.
Defined As
l

[VBA] Delete()

[Cicode] Delete()

[C++] HRESULT Delete()

Execution Result
If the function succeeds, the return value will be Success. If the cursor is deleted, the
return value will be GeneralFailure.
Remarks
This method will remove the cursor from the Process Analyst. Any current references to
the cursor will continue to be valid; however, operations on them will result in errors.
Calling Syntax
This example assumes you have a valid reference to a cursor.
[VBA]
Sub Example(cursor As Object)
cursor.Delete
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor)
_ObjectCallMethod(hCursor, "Delete");
END

ITrendCursor.GetValue [Method]
Gets the value at the cursor for the given pen.
Defined As

260

Chapter: 4 Automation Model

[VBA] GetValue(pen As Object, asLocal As Boolean, time As Date, milli As Integer,


value As String)

[Cicode] GetValue(OBJECT pen, INT asLocal, REAL time, INT milli, STRING value)

[C++] HRESULT Create GetValue(IPen* pen, VARIANT_BOOL asLocal, DATE *time,


short *milli, BSTR *value)

Parameters
pen
[in]

The pen for which the value is necessary.

asLocal
[in]

Set to True (-1) if returned time is necessary in Local form (False (0) for UTC).

time

The time represented by the cursor position. This is accurate to one second and
needs to be combined with milli to give millisecond accuracy.
[out]

milli
[out]

Added to time (see above) to give cursor time in millisecond accuracy.

value

[out] The value of the trend for the given pen at the returned time.
Execution Result
If the function succeeds, the return value will be Success. If one of the return variables
are bad, then the return value will be InvalidArgument. If the cursor is deleted, the
return value will be GeneralFailure.
Calling Syntax
This example assumes you have a valid reference to a cursor and a pen.
[VBA]
Sub Example(cursor As Object, pen As Object)
Dim asLocal As Boolean
Dim cursorTime As Date
Dim milli As Integer
Dim cursorValue As String
asLocal = 0
cursor.GetValue pen, asLocal, cursorTime, milli, cursorValue
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor, OBJECT hPen)

261

Chapter: 4 Automation Model

INT asLocal = 0;
REAL time;
INT milli;
STRING value;
_ObjectCallMethod(hCursor , "GetValue", hPen, asLocal, time, milli, value);
END

ITrendCursor.LabelsLocked [Property][Get/Set]
Get or Set whether the cursor label positions are locked.
Defined As
l

[VBA] Boolean LabelsLocked

[Cicode] INT LabelsLocked

[C++] VARIANT_BOOL LabelsLocked

Limits
l

True (-1): Labels are locked

False (0): Labels are unlocked

Remarks
If labels are locked, they will not move when the cursor position is changed.
Calling Syntax
This example assumes you have a valid reference to a cursor.
[VBA]
Sub Example(cursor As Object)
Dim labelsLocked As Boolean
`Getting Property value
labelsLocked = cursor.LabelsLocked
`Setting Property value (False)
cursor.LabelsLocked = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor)
INT labelsLocked;
// Getting current property value
labelsLocked = _ObjectGetProperty(hCursor, "LabelsLocked");
// Setting Property to False (0)
_ObjectSetProperty(hCursor, "LabelsLocked", 0);
END

262

Chapter: 4 Automation Model

ITrendCursor.Name [Property][Get/Set]
Get or Set the Name of the cursor.
Defined As
l

[VBA] String Name

[Cicode] STRING Name

[C++] BSTR Name

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the name is 0 characters or greater
than 250, the return value will be InvalidArgument.
If the cursor is deleted, the return value will be GeneralFailure.
Remarks
When setting the name property, remember that cursor names needs to be unique. Setting the Name property will not succeed if a cursor with that name already exists.
Calling Syntax
This example assumes you have a valid reference to a cursor.
[VBA]
Sub Example(cursor As Object)
Dim name As String
`Getting Property value
name = cursor.Name
`Setting Property value
cursor.Name = "NewCursor"
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor)
STRING name;
// Getting current property value
name = _ObjectGetProperty(hCursor, "Name");
// Setting Property
_ObjectSetProperty(hCursor, "Name", "NewCursor");
END

263

Chapter: 4 Automation Model

ITrendCursor.PenLabelHeight [Property][Get/Set]
Get or Set the label height of the specified pen on this cursor.
Defined As
l

[VBA] Double PenLabelHeight(pen As Object)

[Cicode] REAL PenLabelHeight (OBJECT pen)

[C++] HRESULT PenLabelHeight (IPen* pen, double labelHeight)

Parameters
pen
[in]

The pen for which cursor label is to be referenced.

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the cursor is deleted the return
value will be GeneralFailure.
Remarks
The value of height is represented in pixels.
See Also
ITrendCursor.PenLabelWidth [Property][Get/Set], ITrendCursor.PenLabelX [Property][Get/Set], ITrendCursor.PenLabelY [Property][Get/Set]
Calling Syntax
This example assumes you have a valid reference to a cursor and a pen.
[VBA]
Sub Example(cursor As Object, pen As Object)
Dim labelHeight As Double
`Getting Property value
labelHeight = cursor.PenLabelHeight(pen)
`Setting Property value (100)
cursor.PenLabelHeight (pen) = 100
End Sub

264

Chapter: 4 Automation Model

[Cicode]
FUNCTION Example(OBJECT hCursor, OBJECT hPen)
REAL labelHeight;
// Getting current property value
labelHeight = _ObjectCallMethod(hCursor , "get_PenLabelHeight", hPen);
// Setting Property to 100
_ObjectCallMethod(hCursor , "put_PenLabelHeight", hPen, 100);
END

ITrendCursor.PenLabelVisible [Property][Get/Set]
Get or Set the label visibility of the specified pen on this cursor.
Defined As
l

[VBA] Boolean PenLabelVisible(pen As Object)

[Cicode] INT PenLabelVisible(OBJECT pen)

[C++] HRESULT PenLabelVisible(IPen* pen, VARIANT_BOOL labelVisible)

Parameters
pen
[in]

The pen for which cursor label is to be referenced.

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the cursor is deleted, the return value
will be GeneralFailure.
Limits
l

True (-1): Label is visible.

False (0): Label is hidden.

Remarks
Setting the visibility of the cursor using the Visible property will override the pen label
visibility. For example, if a particular label is hidden using PenLabelVisible, this label
will be shown again if Visible is set to True (-1).
See Also
ITrendCursor.Visible [Property][Get/Set]
Calling Syntax
This example assumes you have a valid reference to a cursor and a pen.

265

Chapter: 4 Automation Model

[VBA]
Sub Example(cursor As Object, pen As Object)
Dim labelVisible As Boolean
`Getting Property value
labelVisible = cursor.PenLabelVisible(pen)
`Setting Property value (False)
cursor.PenLabelVisible(pen) = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor, OBJECT hPen)
INT labelVisible;
// Getting current property value
labelVisible = _ObjectCallMethod(hCursor, "get_PenLabelVisible", hPen);
// Setting Property to FALSE
_ObjectCallMethod(hCursor , "put_PenLabelVisible", hPen, 0);
END

ITrendCursor.PenLabelWidth [Property][Get/Set]
Get or Set the label width of the specified pen on this cursor.
Defined As
l

[VBA] Double PenLabelWidth(pen As Object)

[Cicode] REAL PenLabelWidth (OBJECT pen)

[C++] HRESULT PenLabelWidth (IPen* pen, double labelWidth)

Parameters
pen
[in]

The pen for which cursor label is to be referenced.

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the cursor is deleted the return
value will be GeneralFailure.
Remarks
The value of width is represented in pixels.
See Also
ITrendCursor.PenLabelHeight [Property][Get/Set], ITrendCursor.PenLabelX [Property][Get/Set], ITrendCursor.PenLabelY [Property][Get/Set]

266

Chapter: 4 Automation Model

Calling Syntax
This example assumes you have a valid reference to a cursor and a pen.
[VBA]
Sub Example(cursor As Object, pen As Object)
Dim labelWidth As Double
`Getting Property value
labelWidth = cursor.PenLabelWidth(pen)
`Setting Property value (100)
cursor.PenLabelWidth(pen) = 100
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor, OBJECT hPen)
REAL labelWidth;
// Getting current property value
labelWidth = _ObjectCallMethod(hCursor , "get_PenLabelWidth", hPen);
// Setting Property to 100
_ObjectCallMethod(hCursor , "put_PenLabelWidth", hPen, 100);
END

ITrendCursor.PenLabelX [Property][Get/Set]
Get or Set the label's X-Axis position of the specified pen on this cursor.
Defined As
l

[VBA] Double PenLabelX(pen As Object)

[Cicode] REAL PenLabelX (OBJECT pen)

[C++] HRESULT PenLabelX (IPen* pen, double labelX)

Parameters
pen
[in]

The pen for which cursor label is to be referenced.

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the cursor is deleted the return
value will be GeneralFailure.
Remarks
The label position is represented in pixels.

267

Chapter: 4 Automation Model

See Also
ITrendCursor.PenLabelWidth [Property][Get/Set], ITrendCursor.PenLabelHeight [Property][Get/Set], ITrendCursor.PenLabelY [Property][Get/Set]
Calling Syntax
This example assumes you have a valid reference to a cursor and a pen.
[VBA]
Sub Example(cursor As Object, pen As Object)
Dim labelX As Double
`Getting Property value
labelX = cursor.PenLabelX(pen)
`Setting Property value (100)
cursor.PenLabelX(pen) = 100
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor, OBJECT hPen)
REAL labelX;
// Getting current property value
labelX = _ObjectCallMethod(hCursor , "get_PenLabelX", hPen);
// Setting Property to 100
_ObjectCallMethod(hCursor , "put_PenLabelX", hPen, 100);
END

ITrendCursor.PenLabelY [Property][Get/Set]
Get or Set the label's Y-Axis position of the specified pen on this cursor.
Defined As
l

[VBA] Double PenLabelY(pen As Object)

[Cicode] REAL PenLabelY (OBJECT pen)

[C++] HRESULT PenLabelY (IPen* pIPen, double labelY)

Remarks
The label position is represented in pixels
Syntax
ITrendCursor.PenLabelWidth [Property][Get/Set], ITrendCursor.PenLabelHeight [Property][Get/Set], ITrendCursor.PenLabelX [Property][Get/Set]
Calling Syntax

268

Chapter: 4 Automation Model

This example assumes you have a valid reference to a cursor and a pen.
[VBA]
Sub Example(cursor As Object, pen As Object)
Dim labelY As Double
`Getting Property value
labelY = cursor.PenLabelY(pen)
`Setting Property value (100)
cursor.PenLabelY(pen) = 100
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor, OBJECT hPen)
REAL labelY;
// Getting current property value
labelY = _ObjectCallMethod(hCursor , "get_PenLabelY", hPen);
// Setting Property to 100
_ObjectCallMethod(hCursor , "put_PenLabelY", hPen, 100);
END

ITrendCursor.Position [Property][Get/Set]
Get or Set the cursor's physical position in the Process Analyst.
Defined As
l

[VBA] Long Position

[Cicode] INT Position

[C++] int Position

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the cursor is deleted, the return value
will be GeneralFailure.
Remarks
The cursor position is measured as the number of pixels from the left of the Process
Analyst graph.
Calling Syntax
This example assumes you have a valid reference to a cursor.

269

Chapter: 4 Automation Model

[VBA]
Sub Example(cursor As Object)
Dim position As Integer
`Getting Property value
position = cursor.Position
`Setting Property value
cursor.Position = 300
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor)
INT position;
// Getting current property value
position = _ObjectGetProperty(hCursor, "Position");
// Setting Property to (300)
_ObjectSetProperty(hCursor, "Position", 300);
END

ITrendCursor.Visible [Property][Get/Set]
Get or Set whether the cursor is visible.
Defined As
l

[VBA] Boolean Visible

[Cicode] INT Visible

[C++] VARIANT_BOOL Visible

Execution Result
If the property get/set succeeds, the return value will be Success. If the return variable is
bad, the return value will be InvalidArgument. If the cursor is deleted, the return value
will be GeneralFailure.
Remarks
This property controls the visibility of the cursor. The visibility is also applied to labels
associated with the cursor.
See Also
ITrendCursor.PenLabelVisible [Property][Get/Set]
Calling Syntax
This example assumes you have a valid reference to a cursor.

270

Chapter: 4 Automation Model

[VBA]
Sub Example(cursor As Object)
Dim visibility As Boolean
`Getting Property value
visibility = cursor.Visible
`Setting Property value (False)
cursor.Visible = False
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor)
INT visibility;
// Getting current property value
visibility = _ObjectGetProperty(hCursor, "Visible");
// Setting Property to False (0)
_ObjectSetProperty(hCursor, "Visible", 0);
END

ITrendCursor.Width [Property][Get/Set]
Gets or Sets the line width of the cursor.
Defined As
l

[VBA] Long Width

[Cicode] INT Width

[C++] int Width

Execution Result
If the property get/set succeeds the return value will be Success. If the return variable is
bad then the return value will be InvalidArgument. If the cursor is deleted the return
value will be GeneralFailure.
Limits
l

Minimum (0)

Maximum (8)

Calling Syntax
This example assumes you have a valid reference to a cursor.

271

Chapter: 4 Automation Model

[VBA]
Sub Example(cursor As Object)
Dim lineWidth As Long
`Getting Property value
lineWidth = cursor.Width
`Setting Property value
cursor.Width = 5
End Sub

[Cicode]
FUNCTION Example(OBJECT hCursor)
INT lineWidth;
// Getting current property value
lineWidth = _ObjectGetProperty(hCursor, "Width");
// Setting Property to 5
_ObjectSetProperty(hCursor, "Width", 5);
END

272

Chapter: 5 Automation Examples


One way of understanding how to use the Process Analyst's automation model is to see
some example code. The following examples cover some concepts of extensibility offered
by the Process Analyst:
l

Event handling

Enumerating collections

Custom commands

Custom columns

The samples assume you are using the Example project and have pasted a new Process
Analyst onto the test page provided by the project.
You will also need to configure the Process Analyst object's Name and Event class by
doing the following:
1. In the Example project open the "test" page in Graphics Builder
2. Click the Process Analyst icon in the toolbox to insert the control.
3. Resize the control to fit the test page.
4. Double-click the Process Analyst.
5. Click the Access/Identification tab.
6. Change the Object Name to CPA.
7. Change the Event class to CPA_E.
8. Click Apply and OK.

Handling an Event
The Process Analyst contains many events that are triggered when certain actions occur.
See Events.
To handle an event you need to provide a handler for the event by prepending your Process Analyst's event class name with the event name you want to handle and an underscore.
The example below shows how to define a handler for the "MouseClick" event with an
event class defined as "CPA_E".

273

Chapter: 5 Automation Examples

[VBA]
Sub CPA_E_MouseClick(pen As Object, button As Integer)
End Sub

[Cicode]
FUNCTION CPA_E_MouseClick(OBJECT hPA, OBJECT hPen, INT button)
END

The following example uses the MouseClick event to cancel the box zoom operation when
the right mouse button is clicked.
Note: When referring to an ActiveX object in VBA, you need to prepend it with the
page name and an underscore. In the example below, the page name is called "test".
The object name is "CPA" and the event class name is "CPA_E".

[VBA]
Sub CPA_MouseClick(pen As Object, button As Integer)
Dim bZoomMode As Boolean
If (button = 1) Then
bZoomMode = test_CPA.ZoomMode
If (bZoomMode = True) Then
test_CPA.ZoomMode = False
End If
End If
End Sub

[Cicode]
FUNCTION CPA_E_MouseClick(OBJECT hPA, OBJECT hPen, INT button)
INT bZoomMode = 0;
IF (button = 1) THEN
bZoomMode = _ObjectGetProperty(hPA, "ZoomMode")
IF (bZoomMode = -1) THEN
_ObjectSetProperty(hPA, "ZoomMode", 0)
END
END
END

274

Chapter: 5 Automation Examples

Enumerating collections
The Process Analyst contains many "collections" such as Panes, Pens, Cursors, Commands, and so on. This example shows you how to enumerate through the buttons on
the navigation toolbar.
[VBA]
Sub EnumerateToolbarButtons()
Dim navBar As Object
Dim iButton As Integer
Dim button As Object
Dim nButtons As Integer
` The Navigation toolbar is the 2nd toolbar in the collection
Set navBar = test_CPA.Toolbars.Item(2)
If IsNull(navBar) = False Then
nButtons = navBar.Buttons.Count
For iButton = 1 To nButtons
Set button = navBar.Buttons(iButton)
Next iButton
End If
End Sub

[Cicode]
FUNCTION EnumerateToolbarButtons()
OBJECT hPA = ObjectByName("CPA");
OBJECT hToolbars = _ObjectGetProperty(hPA, "Toolbars");
// The Navigation toolbar is the 2nd toolbar in the collection
OBJECT hNavBar = _ObjectCallMethod(hToolbars, "get_Item", 2);
OBJECT hButtons;
OBJECT hButton;
INT nButtons;
INT iButton;
IF (ObjectIsValid(hNavBar)) THEN
hButtons = _ObjectGetProperty(hNavBar, "Buttons");
nButtons = _ObjectGetProperty(hButtons, "Count");
FOR iButton = 1 TO nButtons DO
hButton = _ObjectCallMethod(hButtons, "get_Item", iButton);
END
END
END

Note: Many collections have an ItemById property that allows you to get the item you

275

Chapter: 5 Automation Examples

want without having to enumerate through the collection to find the item you want.

Implementing a custom command


Custom commands are easy to implement and involve creating a new command, adding it to a toolbar, and responding to the CommandExecuted event.
To add a new command and add it to the toolbar as a button:
1. Display the properties for your Process Analyst in the Graphics Builder
2. See Adding New Commands.
3. Use the following settings:
l

ID ="SelectedPen"

Tooltip = "Show the name of the selected pen"

Button style = <Push>

Enabled = <Checked>

Once you've done this, you need to write an event handler for the CommandExecuted event.
This event will be called when the command is executed, whether by Cicode or by clicking on the respective toolbar button. The CommandExecuted event when triggered has a commandId parameter identifying the command executed by the operator.
This example implements a command that displays a message box showing the name
of the primary selected pen.
See Also
CommandExecuted [Event]
[VBA]
Sub CPA_E_CommandExecuted(commandId As String)
Select Case commandId
Case "SelectedPen"
Call OnSelectedPen()
End Select
End Sub
Sub OnSelectedPen()
Dim pen As Object
Dim sName As String
Dim sMessage As String
Set pen = test_CPA.LastSelectedPen
If IsNull(pen) = False Then

276

Chapter: 5 Automation Examples

sName = pen.Name
End If
sMessage = "The name of the selected pen is:" + Chr(13) + sName
MsgBox sMessage, 48, "Citect"
End Sub

[Cicode]
FUNCTION CPA_E_CommandExecuted(OBJECT hPA, STRING commandId)
SELECT CASE commandId
CASE "SelectedPen"
OnSelectedPen(hPA);
END SELECT
END
FUNCTION OnSelectedPen(OBJECT hPA)
OBJECT hPen;
STRING sName;
STRING sMessage;
IF ObjectIsValid(hPA) THEN
hPen = _ObjectGetProperty(hPA, "LastSelectedPen");
IF ObjectIsValid(hPen) THEN
sName = _ObjectGetProperty(hPen, "Name");
END
sMessage = "The name of the selected pen is:^n" + sName;
Message("Citect", sMessage, 48);
END
END

Enabling and Disabling a Command


You can also respond to the UpdateCommand event to control the enable/disable state of the
command's toolbar button. The example below disables the button if there are no pens.
[VBA]
Sub CPA_E_UpdateCommand(commandId As String)
Select Case commandId
Case "SelectedPen"
Call OnUpdatedSelectedPen()
End Select
End Sub
Sub OnUpdatedSelectedPen()
Dim pen As Object
Dim command As Object
Dim sName As String

277

Chapter: 5 Automation Examples

On Error Goto errHandler


Set command = test_CPA.CommandSystem.ItemById("SelectedPen")
Set pen = test_CPA.LastSelectedPen
sName = pen.Name
command.Enabled = True
Exit Sub
errHandler:
command.Enabled = False
End Sub

[Cicode]
FUNCTION CPA_E_UpdateCommand(OBJECT hPA, STRING commandId)
SELECT CASE commandId
CASE "PaneLock"
OnUpdatePaneLock(hPA);
CASE "SelectedPen"
OnUpdateSelectedPen(hPA);
END SELECT
END
FUNCTION OnUpdateSelectedPen(OBJECT hPA)
OBJECT hPen = _ObjectGetProperty(hPA, "LastSelectedPen");
OBJECT hCommandSystem = _ObjectGetProperty(hPA,"CommandSystem");
OBJECT hCommand = _ObjectCallMethod(hCommandSystem,"get_ItemById", "SelectedPen");
INT iError = 0;
ErrSet(1);
_ObjectGetProperty(hPen, "Name");
iError = IsError();
IF (iError <> 0) THEN
_ObjectSetProperty(hCommand, "Enabled", 0);
ELSE
_ObjectSetProperty(hCommand, "Enabled", -1);
END
ErrSet(0);
END

See Also
UpdateCommand [Event]

Implementing a custom column


Custom columns are added to the Object View allowing you to display your own information associated with a pen.

278

Chapter: 5 Automation Examples

The sample below implements a column that calculates the "Display Period" for each
pen on the Process Analyst. The sample consists of three functions: an update function
and two event handlers to verify the column is updated when new pens are added and
when the time span is changed.
The Update Function
The update function is complex since it needs to match an Object View pen item with a
real pen object; however, this isn't too difficult because the Object View tree always
reflects how many panes and pens are being displayed.
The code achieves this by iterating through each pane and pen object in the Process
Analyst while simultaneously keeping a running index count of which pane/pen item it
matches up to in the Object View tree.
By using these indexes the code knows which row to update. A row update is achieved
using the PutField method.
Note: Implementing your own column is CPU-intensive. Try to keep the amount of
code necessary to calculate a row value as efficient as possible and be aware how
often the code will be executed. Note also that, for efficiency, the BlockUpdates and
UnblockUpdates functions are used to limit the number of updates made to the Object
View.

Event Handlers
Once you have a function that implements your custom column, you need to know
when to update that column. The most common method of doing this is to implement
event handlers for particular Process Analyst events. The example below uses the PenCreated event and the HorizontalAxisChanged event. These events will verify that the column values will be updated when pens are added to the display and when the time
span changes.
See Also
IObjectViewItem.PutField [Method], IProcessAnalyst.BlockUpdates [Method], IProcessAnalyst.UnBlockUpdates [Method], PenCreated [Event], HorizontalAxisChanged
[Event]

279

Chapter: 5 Automation Examples

[VBA]
Sub UpdateMyColumn()
Dim iPaneItem As Integer
Dim iPane As Integer
Dim nPanes As Integer
Dim nSamples As Integer
Dim penItem As Object
Dim paneItem As Object
nSamples = test_CPA.NumberOfSamples
iPaneItem = 0
nPanes = test_CPA.Panes.Count
For iPane = 1 To nPanes
Dim pane As Object
Set pane = test_CPA.Panes.Item(iPane)
If IsNUll(pane) = False Then
Dim pen As Object
Dim iPen As Integer
Dim iPenItem As Integer
Dim nPens As Integer
iPaneItem = iPaneItem + 1
Set paneItem = test_CPA.ObjectView.Items.Item(iPaneItem)
test_CPA.BlockUpdates
iPenItem = 0
nPens = pane.Pens.Count
For iPen = 1 To nPens
Set pen = pane.pens.Item(iPen)
If IsNUll(pen) = False Then
Dim dDiff As Double
Dim sText As string
Dim
Dim
Dim
Dim

dtStart As Date
dtEnd As Date
dtStartMs As Integer
dtEndMs As Integer

iPenItem = iPenItem + 1
pen.GetHorizontalAxisTimeSpan dtStart, dtStartMs, dtEnd,
dtEndMs,
False
dDiff = ((CDbl(dtEnd) - CDbl(dtStart)) / nSamples) * 86400
If (dDiff >= 0.001) Then
sText = CStr(Format(dDiff, "#0.000")) + " seconds"
Else
sText = "0.001 seconds"
End If

280

Chapter: 5 Automation Examples

Set penItem = paneItem.Items.Item(iPenItem)


If IsNUll(penItem) = False Then
penItem.Putfield "DisplayPeriod", sText
End If
End If
Next
test_CPA.UnblockUpdates
End If
Next
End Sub
Sub CPA_E_HorizontalAxisChanged(hPen As Object)
UpdateMyColumn
End Sub
Sub CPA_E_PenCreated(hPen As Object)
UpdateMyColumn
End Sub

[Cicode]
FUNCTION UpdateMyColumn()
OBJECT
hPA = ObjectByName("CPA");
OBJECT
hPanes = _ObjectGetProperty(hPA, "Panes");
OBJECT
hPane;
OBJECT
hPens;
OBJECT
hPen;
OBJECT
hObjectView = _ObjectGetProperty(hPA, "ObjectView");
OBJECT
hPaneItems = _OBJECTGetProperty(hObjectView, "Items");
OBJECT
hPaneItem;
OBJECT
hPenItems;
OBJECT
hPenItem;
INT
INT
INT
INT
INT
INT
INT

nPanes = _ObjectGetProperty(hPanes, "Count");


nPens;
iPen;
iPane = 0;
nSamples = _ObjectGetProperty(hPA, "NumberOfsamples");
iPenItem = 0;
iPaneItem = 0;

REAL dDiff;
REAL dtStart;
REAL dtEnd;
INT dtStartMs;
INT dtEndMs;
STRING

sText;

FOR iPane = 1 TO nPanes DO


hPane = _ObjectCallMethod(hPanes, "get_Item", iPane);

281

Chapter: 5 Automation Examples

IF ObjectIsValid(hPane) THEN
hPens = _ObjectGetProperty(hPane, "Pens");
nPens = _ObjectGetProperty(hPens, "Count");
iPaneItem = iPaneItem + 1;
_ObjectCallMethod(hPA, "BlockUpdates");
hPaneItem = _ObjectCallMethod(hPaneItems, "get_Item", iPaneItem);
iPenItem = 0;
FOR iPen = 1 TO nPens DO
hPen = _ObjectCallMethod(hPens, "get_Item", iPen);
IF ObjectIsValid(hPen) THEN
iPenItem = iPenItem + 1;
_ObjectCallMethod(hPen, "GetHorizontalAxisTimeSpan", dtStart,
dtStartMs, dtEnd, dtEndMs, 0);
dDiff = ((dtEnd - dtStart) / nSamples) * 86400;
IF dDiff > 0.001 THEN
sText = StrFormat(dDiff, 10, 3, "seconds");
ELSE
sText = "0.001 seconds"
END
hPenItems = _ObjectGetProperty(hPaneItem, "Items");
hPenItem = _ObjectCallMethod(hPenItems, "get_Item", iPenItem);
_ObjectCallMethod(hPenItem, "PutField", "DisplayPeriod", sText);
END
END
_ObjectCallMethod(hPA, "UnblockUpdates");
END
END
END
FUNCTION CPA_E_HorizontalAxisChanged(OBJECT hPA, OBJECT hPen)
UpdateMyColumn();
END
FUNCTION CPA_E_PenCreated(OBJECT hPA, OBJECT hPen)
UpdateMyColumn();
END

282

Process Analyst for Operators


This section contains information for Operators and describes the following:
The Process Analyst: An Overview
Using the Main Toolbar
Understanding Process Analyst Pens
Interacting with the Process Analyst
Using the Object View
Printing and Exporting
Configuring the Process Analyst
Operator Command Reference

283

284

Chapter: 6 The Process Analyst: An Overview


The Process Analyst control allows Operators to view trend and/or alarm tag data (both
real-time and historical) for comparison and analysis during run time through their existing CitectSCADA server architecture.
If you have access to an installation of CitectHistorian, you can also incorporate attributes published on a Historian Web Server.
A typical Process Analyst view might look like the one shown here. Your Process
Analyst views will probably look different to this example.

The Process Analyst control interface typically consists of the following components:
1. Main toolbar: Contains commands for performing general operations in the Process
Analyst, such as opening views, printing reports, and so on. You can configure this
toolbar to contain different items.
2. Pens: A pen draws sample values against time. The Process Analyst supports three
types of pen: analog, digital, and alarm.
Analog and digital pens are associated with trend tags, as well as time-series items
and attributes from a Historian connection. Alarm pens are associated with alarm
tags and Historian alarm attributes.
Each type of pen has its own graphical representation. You can configure many of
the pen properties during run time.

285

Chapter: 6 The Process Analyst: An Overview

3. Panes: Panes are used to group pens visually in the Process Analyst and are stacked
vertically on the Process Analyst display. Every pen belongs to a single pane. You
can configure chart panes.
4. Chart background (not shown): The panes are drawn over the chart background.
Depending on the layout of the pens, the background may be partially visible. You
can configure the chart background.
5. Date/time axis: Located at the top of a pane, the date/time (horizontal) axis displays
the date or time (or both) of the data for the primary selected pen within a pane. You
can configure the axis.
6. Vertical axis: Analog pens have a vertical axis on the left-hand side of the pane to
indicate data values. You can configure this axis.
7. Cursor: A cursor allows an Operator to determine value at a given point in time by
dragging the cursor line to the point necessary. You can configure the cursor.
8. Cursor labels: Display the value where the cursor intersects the trend value line.
9. Navigation toolbar: Contains commands to allow an Operator to travel forward or
backward through trends, as well as other navigation-related tasks. You can configure this toolbar to contain different items.
10. Object View: When displayed, the Object View appears under the navigation toolbar
and displays information about your Process Analyst pens, such as name, color,
scale, and so on. You can configure the Object View.

286

Chapter: 7 Using the Main Toolbar


The Process Analyst main toolbar is located above the top pane. The main toolbar contains commands that allow you to perform general operations, such as save and load
Process Analyst views, print trend reports, add or remove pens, display or hide cursors
and labels, and so on.
Toolbar commands can be customized; for details, see Configuring Toolbars.
The table below describes the items that are included on the main toolbar by default.
Item

Description
Load View. Loads a saved view from file. For details, see Loading a view.

Save View. Saves a view to file. For details, see Saving a view.

Print. Displays the standard Windows Print dialog box for printing trend
reports. For details, see Printing and Exporting.
Copy to Clipboard. Copies visible pens to the Windows Clipboard. For
details, see Copying data to the Clipboard.
Export to File. Exports visible pens to an Excel-compatible file. For details,
see Copying data to file.
Add Pen. Displays the Add New Pen(s) dialog box for adding a pen. For
details, see Adding Pens.
Remove Pen. Deletes the currently selected pen from the trend display. For
details, see Deleting Pens.
Lock/Unlock Pens. Toggles the locking of pens. For details, see Locking/Unlocking Pens.
Show/Hide Points. Toggles the display of points representing where sample data was recorded in the archive. For details, see Pens: An Overview.
Show/Hide Cursors. Toggles the display of cursors. For details, see Using
Cursors.
Show/Hide Cursor Labels. Toggles the display of cursor labels. For details,
see Using Cursor Labels.

287

Chapter: 7 Using the Main Toolbar

Item

Description
Toggle Object View. Toggles the display of the Object View. For details, see
Using the Object View.
Properties. Displays the Properties dialog box for configuring the Process
Analyst control. For details, see Configuring the Process Analyst.
Help. Displays the Process Analyst online Help.

See Also
Using the Navigation Toolbar | Operator Command Reference

288

Chapter: 8 Understanding Process Analyst Pens


Process Analyst pens draw values of samples against time.
Each pen has its own colored line (and can contain other graphical elements). Samples
(or points) cab be drawn on the line to indicate where data was recorded, or where an
interpolated value was calculated. The style of the line can indicate the quality of the
data; the style of the sample marker indicates the compaction of the sample.
See Also
Pen Types

Data Compaction
Data compaction is the visual representation of multiple data points that are not distinguishable due to their rate of occurrence across the currently selected time span.
Data is compacted by grouping raw samples together and visually representing them as
one sample. Sample compaction is indicated on the graph by using different sample
markers. For example, in the illustration below, the two sample markers that appear as
squares actually represent multiple raw samples.

The following illustration zooms in on the second multiple sample. It shows that what
appeared to be a single sample actually consists of several raw samples:

The Process Analyst uses the following default point styles for single and multiple samples:
Sample compaction

Point type

Single

Ellipse

Multiple

Rectangle

289

Chapter: 8 Understanding Process Analyst Pens

Interpolated

Triangle (see Interpolated samples).

See also
Request modes
Interpolated samples
Normally samples are only single or multiple. But there is a specific situation in which
an interpolated sample is used to correct a graph that only occurs with event trends.
The frequency of the data stored in an event trend can vary dramatically; for example,
where several samples are within one display period, followed by no samples for a long
time. A multiple sample will be drawn with a value calculated from the samples within
the period. But the value after that period will be whatever the last sample in the period
was. So an interpolated sample is added at the start of the next display period to correct
the graph.
See Also
Interpolation
Request modes
When data compaction is used to create a graphical representation of multiple values, a
calculation needs to take place to determine the value and time stamp of the value displayed. The Process Analyst provides the following options for this calculation:
l

Average - The value will be an average of the individual samples within the multiple sample, as will the timestamp. This is the default calculation method.

Maximum: The value will be the maximum value out of the individual samples
within the multiple sample. The timestamp will be that of the individual sample that
was the maximum.

Minimum: The value will be the minimum value out of the individual samples
within the multiple sample. The timestamp will be that of the individual sample that
was the minimum.

Newest: The value will the latest arrived value out of the individual samples within
the multiple sample. The timestamp will be that of the individual sample that was
the newest.

Data Quality
Process Analyst pens use the same sample quality values as CitectSCADA trend and
alarm samples. There are four sample quality values:

290

Chapter: 8 Understanding Process Analyst Pens

Good - Samples were recorded in the trend archive as good.

NA - When CitectSCADA is unable to obtain a sample or the data retrieved was


invalid, an N/A sample will be recorded in the trend archive.

Gated/Disabled - For trends, when the trigger of a trend is off, a value of "Gated" is
recorded in the trend archive. For alarms, this sample quality value indicates that the
alarm has been disabled.

The Process Analyst uses the following default line styles to indicate data quality:
Quality

Line style

Good

Solid

NA

None

Gated

Dot

Consider the following examples:


Data sample

Description
This example shows several single samples. The third sample has a quality of N/A, indicated by the break in the trend line.

Here the quality of the third sample is gated, indicated by the broken line
connecting these samples.

With multiple samples, the quality of the last sample in the group determines how the line is drawn.
Consider the following examples:
This example shows that the third sample is a multiple sample. The quality of the third (multiple) sample and the next sample are N/A, indicated
by the break in the trend line.
Here the quality of the third multiple sample is gated, indicated by the
broken line connecting the samples.

The line style indicating the data quality is configurable during run time and design
time; for details, see Configuring pen quality.

Date/Time (Horizontal) Axis


All Process Analyst pens have a date/time axis, located at the top of the pane.

291

Chapter: 8 Understanding Process Analyst Pens

The date/time axis displays time using the current locale format specified in your computer date/time settings. If the millisecond component is necessary, it is appended to the
end in the format "<xxx>ms." Since the local time zone is determined from the current
computer settings, these settings needs to be configured accurately.
The date/time axis can also display data using the universal time coordinate (UTC) format. You can switch between local or UTC time as you like (see Configuring pen axes). If
the current time is 10.00 p.m. UTC, in the Sydney (GMT+10) time-zone, local time will be
8.00p.m.
The date/time axis is divided into major and minor time intervals, which change dynamically depending upon the time span. In the illustration above, the major intervals are 1
minute apart, and the minor are 5 seconds apart.
Note the following:
l

When the axis time span is 1 minute or less, the format of the axis labels includes
milliseconds and the date is removed.

When the axis time span is 1 week or above, the time is removed and only the date
is displayed.

By default, the date/time axis displays a time span of 10 minutes; the major intervals represent 5 minutes, and the minor intervals 30 seconds.
Daylight savings (local time)
The date/time axis can also accommodate daylight savings transitions. For example,
when entering daylight savings, the axis will indicate the transition as 11a.m., 12a.m.,
1a.m., 3a.m., 4a.m., 5a.m., if this transition occurred at 2a.m. Likewise, in the out transition, when 1 hour is removed from daylight savings time, the axis will display 11a.m.,
12a.m., 1a.m., 2a.m., 2a.m., 3a.m., 4a.m., 5a.m.
Now indicator
The Now indicator is a small white circle on the date/time axis that indicates the current
computer time based on the computer's time settings.

The position of the Now indicator is refreshed according to the value specified in the Display Refresh Date text box in the Process Analyst Control Properties dialog box.

292

Chapter: 8 Understanding Process Analyst Pens

Note: If you have used the CitectSCADA trend page feature, note the following: In
CitectSCADA the right-hand side of the screen represents Now (when looking at realtime data). In the Process Analyst control, "Now" is represented only by the Now
indicator, which may be located anywhere on the trend display, even off screen,
since it is possible to scroll into the future, or back into the past.
You can scroll and scale the date/time time axis to interact with your Process Analyst
pens; for details, see Interacting with the Process Analyst. You can also configure the
date/time axis to suit your preferences; for details, see Configuring pen axes.

Vertical (Value) Axis


The vertical (value) axis is located at the left-hand edge of the pane.
Like the date/time axis, the value axis consists of major and minor intervals, but they
represent value intervals rather than date and time. The intervals are calculated automatically by the Process Analyst.
The value axis is shown only for analog pens; the axis displayed reflects the values for
the primary selected pen.
By default the vertical axis will use the engineering scale from the tag of the selected
pen. The vertical axis also supports autoscaling. When autoscaling is enabled, the vertical axis automatically adjusts its limits to accommodate new samples as they are
added to each individual pen.

In this example, there are two panes, each of which has a differently scaled vertical axis.

293

Chapter: 8 Understanding Process Analyst Pens

You can scroll and scale the vertical axis; for details, see Scrolling the Chart and Scaling
the Chart. You can also configure the appearance of the vertical axis; for details, see Configuring pen axes.

Gridlines
The Process Analyst pens use gridlines as a visual guide to help an Operator determine
the value of trends. Major gridlines are solid lines; minor gridlines are dashed lines.
Analog pens have vertical and horizontal gridlines; alarm and digital pens only have
vertical gridlines. The display of gridlines changes dynamically according to the selected
time span.
You can configure vertical gridlines at run time for every pen type; you can configure
horizontal gridlines for analog pens. For details, see Configuring pen gridlines.

Pen Layout
You can are display pens in the Process Analyst by stacking or overlaying.
l

In stacked mode, a user-specified amount of vertical real-estate is allocated to the


pen, and with this, stacked pens are laid out under each other on the pane, starting
from the top of the pane under the date/time axis, like this:

Here, three pens (one analog and two digital) are stacked under each other. Stacking
applies to every type of pens.
l

294

In unstacked mode, pens are drawn on top of each other. The order in which the
pens were added to the pane governs the drawing order: the last pen added is the topmost pen drawn. When a pen is selected, it is brought to the front of any other pens
displayed

Chapter: 8 Understanding Process Analyst Pens

Here, two analog pens are overlaid. You can also overlay digital and alarm pens.
You can have any mix of stacked and unstacked pens on a pane.

Pen Types
The Process Analyst supports three types of pen: analog, digital, and alarm.
Analog and digital pens are associated with trend tags, as well as time-series items and
attributes from a Historian connection. Alarm pens are associated with alarm tags and
Historian alarm attributes.
Each type of pen has its own graphical representation.

Analog pens
The Process Analyst control typically uses analog pens to represent variable or numerical data. Only analog pens have a value (vertical) axis, which the data is plotted
against, as shown here:

Interpolation
Analog pens have two types of interpolation that allow you to specify how to connect
data samples on a trend line: straight and stepped:

295

Chapter: 8 Understanding Process Analyst Pens

Straight - a line is drawn directly between the points or sample values like this:

Stepped - the lines drawn always maintain the value of the previous sample until a
sample with a different value arrives, in which case a vertical line is drawn:

The Process Analyst allows analog pens to be configured at run time and design time.
For details, see Configuring Pens.
See Also
Interpolated samples

Digital pens
The Process Analyst control typically uses digital pens to represent binary data. Values
on the pen are restricted to 0 or 1. Any value equal to or greater than 0.5 is set to 1; other
values are set to 0. A fill color is used to indicate where the data is 1, as shown here:

By default, the layout of digital pens is stacked. For details, see Pen Layout.
The Process Analyst allows the appearance of digital pens to be configured during run
time and design time. You can configure the line color, width, and fill color. For details,
see Configuring pen appearance.

Alarm pens
The Process Analyst uses alarm pens to graphically display the history of a CitectSCADA alarms over time. The Process Analyst supports seven different types of alarm
pens.

296

Chapter: 8 Understanding Process Analyst Pens

The alarm's on/off transition state changes and acknowledgements are represented
graphically in the alarm pen display. To achieve this, the alarm pen consists of three elements: the alarm state, on/off, and acknowledgement.
When an alarm is on, it is represented by a bar filled with color. The color indicates different states. The line above represents operator acknowledgement of the alarm.
The diagram below illustrates how an alarm pen displays the information of an alarm
tag:

1. The alarm is turned on in its initial state and is unacknowledged.


2. The alarm changes to a different state, but is still unacknowledged.
3. The alarm is acknowledged.
4. The alarm is turned off.
Like other types of pen, alarm pens can represent variations in data quality and data
compaction.
The Process Analyst allows alarm pens to be configured at run time and design time.
For details, see Configuring alarm pens.
On/off
When an alarm is on, the pen will draw a bar filled with a color representing its state.
When the alarm is off, a flat line is drawn.
Alarm states
When an alarm transitions to on, it enters a particular state. The states of an alarm are
dictated by the type of CitectSCADA alarm tag. The Process Analyst supports CitectSCADA standard alarm types.
Note: For multi-digital alarms, the state descriptions are retrieved from the CitectSCADA alarm record.
The Process Analyst uses a different color, shading style, and description to represent
each alarm state; these properties are configurable. For details, see Configuring alarm
pens.

297

Chapter: 8 Understanding Process Analyst Pens

Alarm acknowledgment
Process Analyst alarm pens indicate when alarms are acknowledged.
l

The period of time an alarm is left unacknowledged for is represented by drawing a


line above the trend line. A new unacknowledged period begins whenever the alarm
transitions to an on state.

The unacknowledged period ends when an Operator acknowledges an alarm. This is


identified by a sample marker that indicates the exact time the alarm was acknowledged, and by drawing an unacknowledged line down to that sample marker, as
shown here:

Alarm types
The Process Analyst uses the following types of alarm pen:
Alarm type
Digital

Analog

Advanced

Argyle Analog

298

Alarm pen representation

Chapter: 8 Understanding Process Analyst Pens

Multi-digital

Timestamped

Timestamped analog

Timestamped digital

For multiple samples in an alarm, the alarm state value is the last recorded value in the
group.

299

Chapter: 8 Understanding Process Analyst Pens

300

Chapter: 9 Interacting with the Process Analyst


This section discusses how to interact with the Process Analyst.
See Also
Pen Selection
Locking/Unlocking Pens
Scrolling the Chart
Scaling the Chart
Using the Navigation Toolbar
Using Cursors
Using Cursor Labels
Using the Right-click Menu
Understanding Mouse Pointers
Adding and Deleting Pens
Viewing Pen Detail
Using Instant Trends with Process Analyst

Pens: An Overview
Process Analyst pens are drawn against time. Each pen has its own colored line (and
can contain other graphical elements). Sample markers (or points) are drawn on the line
to indicate where data was recorded in the archive. The style of the line indicates the
quality of the data; the style of the sample marker indicates the compaction of the sample.

Pen Selection
Each pane on the Process Analyst can have one selected pen. The axes that are displayed on a pane are that of the selected pen. The last pen selected across every pane is
referred to as the primary selected pen.
You can select a Process Analyst pen in several ways:
l

By clicking on the pen's graphical elements (i.e., the pen line).

If the pens are stacked, by clicking the background under the pen line.

By selecting the pen in the Object View.

301

Chapter: 9 Interacting with the Process Analyst

The selection of a pen is indicated by a subtle halo effect surrounding the pen line. In the
example shown here, the top (green) pen is selected, indicated by the halo surrounding
the pen:

The halo does not appear if there is only one pen on the pane. Selecting a pen on a pane
also causes the same pen to be highlighted in the Object View. Selecting a pen causes
that pen to be drawn in front of other pens on the pane.

Locking/Unlocking Pens
By default, the Process Analyst locks together the time span and position in time (horizontal axis) of every pen. However, you can unlock the pens, allowing the pens to be
displayed across different positions in time and/or time spans.
For example, you could unlock pens to compare a previous month's data for a tag with
the data for this month. You would do this by adding two pens to a pane that represent
the same tag, then unlocking the pens, and adjusting the time positions for each pen as
necessary.
To control pen locking and unlocking, you use the Lock/Unlock Pens button on the
main toolbar.

This option is also available on the right-click (context) menu.


Locking and unlocking has the following behavior:

302

When pens are locked, every time-related operation is applied to every pen.

When pens are unlocked, every time-related operation is applied to the primary
selected pen.

Synchronization applies every pen regardless of their being locked or unlocked.

Chapter: 9 Interacting with the Process Analyst

When transitioning from locked to unlocked, the time span and position in time of every
pen are synchronized to match that of the primary selected pen.

Scrolling the Chart


The Process Analyst allows you to scroll through data in both the horizontal and vertical directions by dragging the mouse or spinning the mouse wheel.
To scroll by dragging:
1. Click and hold down the left mouse button on the pen (or background) that you want
to scroll.
2. Drag the mouse in the direction you want to scroll:
l

Horizontal axis: drag right to move backward in time, drag left to move forward.

Vertical axis: drag up to scroll down the axis, drag down to scroll up the axis.

3. Release the left mouse button to complete the scrolling.


To scroll by using the mouse wheel:
1. Click the pen or background that you want to scroll.
2. Spin the mouse wheel in the direction you want to scroll:
l

Horizontal axis: spin up to move backward, spin down to move forward.

Vertical axis: spin up to scroll up the axis, spin down to scroll down.

You can disable scrolling in the horizontal direction, the vertical direction, or both by
using the Property dialog box or the right-click (context) menu; see Configuring pen axes
and Using the Right-click Menu for details.
The Process Analyst indicates whether scrolling is enabled or disabled by displaying a
different-shaped mouse pointer; for details, see Understanding Mouse Pointers.

Scaling the Chart


The Process Analyst allows you to change the scale of the data in both the horizontal
and vertical direction by dragging the mouse or spinning the mouse wheel.
To scale the data by dragging:
1. Click and hold down the left mouse button on the axis that you want to scale.
2. Drag the mouse in the direction you want to scale:
l

Horizontal axis: drag left to expand the scale, drag right to shrink.

Vertical axis: drag up to expand the scale, drag down to shrink.

3. Release the left mouse button to complete the scaling.

303

Chapter: 9 Interacting with the Process Analyst

To scale by using the mouse wheel:


1. Click the axis that you want to scale.
2. Spin the mouse wheel in the direction you want to scale:
l

Horizontal axis: spin up to shrink the axis, spin down to expand.

Vertical axis: spin up to expand the axis, spin down to shrink.

You can disable scrolling in the horizontal direction, the vertical direction, or both by
using the Property dialog box or the right-click (context) menu; see Configuring pen axes
and Using the Right-click Menu for details.
The Process Analyst indicates whether scaling is enabled or disabled by displaying a different-shaped mouse pointer; for details, see Understanding Mouse Pointers.

Using the Navigation Toolbar


Using the navigation toolbar you can:
l

Specify a start time and end time.

Select predefined time spans.

Lock time spans on the display.

Navigate backward or forward through your data.

Synchronize every pen to "Now."

Toggle autoscrolling of the display.

Zoom in on or out of data.

Undo the last zoom operation.

Toggle between Zoom mode and normal mode.

Set nonstandard time spans.

Edit the vertical (value) scale.

Specifying a start time and end time


You can specify a start time and an end time for the trend display by using the date/time
pickers. The start time picker is located on the left-hand side of the navigation toolbar,
the end time picker on the right.

The date/time picker formats the date and time using the settings obtained from your
computer for the currently logged in user. The date/time picker displays time in 24-hour
format (dd/mm/yyyyhhmm:ssnnn) where:

304

Chapter: 9 Interacting with the Process Analyst

dd represents days

mm represents months

yyyy represents years

hh represents hours

mm represents minutes

ss represents seconds

nnn represents milliseconds (added automatically to the time)

To change the date or time in the date/time picker:


1. Click the element of the date or time you want to change in the start time picker or
the end time picker.
2. Do either of the following:
l

Type in a time explicitly.

Press the Up arrow key or Down arrow key to increment or decrement the value
respectively.

Note: You can use the Left arrow and Right arrow keys to move between time elements.

Working with Daylight Savings


To indicate whether the time in the time picker control is Standard time or Daylight Savings time, the clock to the left of the control has a shaded segment if the time is in a Daylight Savings period. When in Standard time, the clock does not have a shaded segment.
For example, this icon appears when the time picker's value is within the local Daylight
Savings period:

This icon appears when the time picker's value is within the local Standard time period:

If the Daylight Savings transition involves duplicate hours, you can use the spin controls (or Up and Down arrow keys) to select the hour you want.
Note: In order for the Process Analyst to be able to indicate that Daylight Savings is

305

Chapter: 9 Interacting with the Process Analyst

in effect, the Automatically adjust clock for daylight saving changes option on the
Date and Time Properties dialog box needs to be enabled, as indicated below:

See Also
Daylight savings (local time)
Shifting and fitting time units
You can manipulate the start time and end time by using special keyboard shortcuts.
Using these shortcuts, you can do the following:
l

Shift by unit

Fit to unit

Shift by unit
Shifting date or time by unit allows you to change the opposite date/time element to the
one selected by the corresponding date or time component. For example, if you shift by
unit the month time element in the start time, the month time element in the end time
increments by one month exactly, including days, minutes, and seconds. This also
works for months that have different end days.
To shift by unit:

306

Chapter: 9 Interacting with the Process Analyst

1. Press and hold down the Shift key.


2. Click a date or time element in the date/time picker. The opposite time picker changes
by the base time amount of the selected time element.
Fit to unit
Fitting date or time to unit allows you to synchronize the selected time element to the
zero position of that time element in the start time and end time. For example, an Operator clicks on the hh time element of the Start picker, which shows 19:30:05.123. After
Ctrl + click, the Start hour time element shows 19:00:00.000, and the End time element
shows 20:00:00.000. Now the time span represents exactly one hour, synchronized on
the hour.
To fit to unit:
1. Press and hold the Ctrl key.
2. Click a date or time element in the date/time picker. Both the start time and end time
element are synchronized to zero based on the date/time element selected.

About time spans


The time span of the trend display is the difference between the start time and the end
time. The start time appears on the left-hand side of the trend display, the end time on
the right. The Span Picker (shown below) indicates the current span being used; it also
contains commonly used predefined time spans. Selecting a time span adjusts the start
time, leaving the end time as-is.

See Also
Span Lock

Span Lock
When the time span is locked and the start time and/or end time picker changed, the current time span is maintained. If the time span is unlocked, the time span is not maintained when any of the time pickers are changed.

By default, the span is locked. You can toggle span locking on or off by using the
SpanLock button.
See Also
About time spans

307

Chapter: 9 Interacting with the Process Analyst

Navigating time
The navigation controls allow an Operator to navigate backwards or forwards through
time. The amount of time moved depends upon the time currently selected in the Span
Picker. For example, if 10 minutes is selected in the Span Picker and Back One Span is
clicked, the display moves back 10 minutes into the pen's history.
The following navigation controls are available:
Navigation control

Description
Back One Span - moves back one time span.
Back Half a Span - moves back half a time span.
Forward Half a Span - moves forward half a time span.
Forward One Span - moves forward one time span.

Synchronize to Now
The Synchronize to Now command synchronizes every pen such that the date/time
reflects "Now," which is positioned on the right-hand edge of the screen. "Now" is calculated using the current system time.

The Synchronize to Command is also available from the right-click (context) menu.
See Also
Now indicator

Toggle Autoscrolling
When Autoscroll is turned on, as time passes the position in time of pens moves by the
same amount to keep pace; by default, the display is updated every second. The refresh
rate of the display can be controlled by using the Display Refresh Rate property.
When Autoscroll is turned off, as time passes the position in time of pens remain fixed.
By default, Autoscroll is on. You can toggle Autoscrolling on or off by using the Toggle
Autoscrolling button.

308

Chapter: 9 Interacting with the Process Analyst

Using the navigation controls, including the Time Span picker, causes Autoscrolling to
be turned off
The Autoscroll command is also available from the right-click (context) menu.

Zoom In/Zoom Out


Use the Zoom In 50% and Zoom Out 50% commands like this:
Command

Icon

Description

Zoom In
50%

Zooms in on the displayed data, halving the span of both axes.

Zoom Out
50%

Zooms out of the displayed data, doubling the span of both


axes.

Note: The midpoint of each axis is maintained during these zoom operations.

Undo Last Zoom


Undo Last Zoom allows you to undo the last zoom operation, returning the display to
the previous state.

Toggle Box Zoom


The Toggle Box Zoom button switches between Box Zoom mode and normal interaction
mode. In Box Zoom mode, you can define an area of the chart to zoom in on for more
detail.
To use Box Zoom:
1. Select the pen to zoom in on.
2. Click ToggleBox Zoom on the navigation toolbar.

The cursor changes to a cross.


3. Click and drag the bounding box to enclose the part of the data you want to zoom in
on, as shown below.

309

Chapter: 9 Interacting with the Process Analyst

4. Release the mouse button. The display changes to a close-up of the selected data.

5. To exit Zoom mode, click the Toggle Box Zoom button.


Depending on whether the pens are locked or unlocked, the Toggle Box Zoom commands works differently:
l

For locked pens, the zoom is applied to pens in the horizontal date/time axes. If an
analog pen is being zoomed, the zoom is applied to the vertical (value) axis of nonautoscaled analog pens in the pane in which the zoom box was initiated.

For unlocked pens, the zoom is applied only to the selected pen in both the date/time
and vertical (value) axes. The value axis is only affected if autoscale is off.
Note: Vertical zoom is only applied to analog pens, since it has no effect with alarm
or digital pens.

Edit Span
Click the Edit Span button to display the Edit Span dialog box, which allows you to set
non-standard time spans.

To edit a time span:

310

Chapter: 9 Interacting with the Process Analyst

1. Click Edit Span on the navigation toolbar. The Edit Span dialog box appears.

The fields provided are: w = weeks, d = days, hr = hours, min = minutes, sec = seconds,
and ms = milliseconds.
2. Enter a New span. Click the element of the time span that you want to change, then
either type in a new value, or use the Up arrow or Down arrow to specify a new
value. You can use the Right arrow and the Left arrow key to move between the time
elements.
3. Click OK. The new time span is applied.

Edit Vertical Scale


The Process Analyst allows Operators to edit the vertical scale of a selected analog pen
to display more appropriate values, if necessary. The vertical scale for digital or alarm
pens cannot be edited.
To edit the vertical scale:
1. Click Edit Vertical Scale on the navigation toolbar. The Edit Vertical Scale dialog box
appears.

311

Chapter: 9 Interacting with the Process Analyst

2. Click the Limits or Engineering Scale option. The Limits values displayed are the current values used by the vertical scale. The Engineering Scale values are obtained from
the trend tag.
3. Enter a new Minimum value and Maximum value, and then click OK.

Reset to Default Span


Use the Reset to Default Span button to reset the time span to the default time span of
the primary selected pen. The default span can be configured by using the Property
dialog box. For details, see Configuring pen axes.

See Also
Configuring Defaults | Pen Selection

Using Cursors
A cursor enables an Operator to determine the value of a pen at a given point in time by
dragging the cursor to the specific point on the pen line. A cursor label is used to display
the value.
An Operator can define many of the properties of cursors and cursor labels. For details,
see Configuring Cursors.

312

Chapter: 9 Interacting with the Process Analyst

In this example the cursor intersects three pens; the cursor labels (the yellow rectangles)
display the corresponding pen values.
To move a cursor, drag the cursor line left or right. As the cursor moves, the cursor
labels move with the cursor and are updated continuously, reflecting the position of the
cursor.
Note: The cursor extends across every configured pane.
A line connects the cursor label to the associated pen line. The line has three main states:
State

Style

Intersection within pen data

Line

Intersection before or after pen data

Line with indicator

No intersection and no data

Invisible line

Example

To show/hide a cursor:
l

Click Show/Hide Cursor on the main toolbar. You can display additional cursors by
using the Properties dialog box.

You can display as many cursors as you want. To add a cursor, right-click the root item
(Process Analyst View) in the property tree in the Properties dialog box, and choose Add
Cursor.

Using Cursor Labels


Each cursor has one cursor label for each pen displayed. The cursor label displays the
value of the pen at the point where the cursor intersects with the pen data.
To display cursor labels:
l

Click Show/Hide Cursor Labels on the main toolbar.

This table summarizes how to use cursor labels:

313

Chapter: 9 Interacting with the Process Analyst

Task

Description

Move a
cursor
label

Click the cursor label and drag the label to a new location.

Change
the size
of cursor
labels

Click the cursor label you want to resize. Place the mouse cursor on one of the
sizing boxes, and drag the label to the new size. If you drag the corner of the
label, the label text resizes to an optimal size for the label.

Lock or
unlock
the cursor
labels

Click the Lock/Unlock Cursor Labels. When on, this command causes cursor labels to be "frozen" in the position.

The cursor label displays the following information:


Cursor field

Applies to

Description

Pen Name

All
Pen
types

Displays the non-unique Process Analyst pen name

Value/Quality

All
Pen
types

Displays the value of the pen at the point the cursor intersects with the pen data

Date-Time
Stamp

All
Pen
types

Displays the date/time stamp at the point the cursor intersects with the date/time axis.

Alarm Sample
Comment

Alarms

Comment bound to an alarm sample.

The fields are displayed in the cursor label using the order defined above using the format specified for the vertical axis. For example, if your vertical axis format is "km/h", the
label reads "<value> km/h".
The label displays the following values when the quality of the data is not good:
Cursor
value

314

Description

Chapter: 9 Interacting with the Process Analyst

NA

At the point of intersection the pen has no available data for display.

Gated

At the point of intersection the pen's data has been gated.

Disabled

At the point of intersection the alarm tag of the pen was disabled.

The label value can also contain a directional indicator that functions as follows:
Cursor value

Description

<value> ->

The cursor is to the left of the first available sample for this pen.

<- <value>

The cursor is to the right of the last available sample for this pen.

Alarm label value


The alarm label value has the following format:
state [acknowledgement]
where state refers to the alarm state at the point of intersection (see Alarm pens) and
acknowledgement refers to the acknowledged state of the alarm at the point of intersection;
that is, Acknowledged or Unacknowledged.

Using the Right-click Menu


Use the right-click (context) menu to quickly access frequently used commands. This
menu is context-sensitive, providing relevant commands for different regions of the display. The right-click menu appears when you click any of the following regions:
l

Horizontal axis

Vertical axis

Background

Pen

The Properties command is always available on the right-click menu; this command displays the Properties dialog box. For details, see Using the Process Analyst Properties
Dialog Box.

315

Chapter: 9 Interacting with the Process Analyst

Understanding Mouse Pointers


When using the Process Analyst, the mouse pointer changes shape to indicate the operations you can perform at that time.
Mouse
pointer

Region

Description

Pen line

The mouse pointer looks like this when the pointer is on a pen. Clicking the mouse at this point selects the pen.

Pen line/pen
background

The mouse pointer looks like this when the mouse is over a pen's
background and both horizontal and vertical scrolling are enabled.
Clicking and dragging at this point results in the free movement of
the pen. Scrolling the mouse wheel results in horizontal-only movement.

Horizontal axis

The mouse pointer looks like this when the pointer is on the horizontal axis and horizontal scaling is enabled. Clicking and dragging (or scrolling the mouse wheel) will result in the axis being
scaled.

Pen line/pen
background

The mouse pointer looks like this when the pointer is on the horizontal axis and only horizontal scrolling is enabled. Clicking and
dragging (or scrolling the mouse wheel) will result in the axis being
scrolled.

Vertical axis

The mouse pointer looks like this when the pointer is on the vertical
axis and vertical scaling is enabled. Clicking and dragging (or scrolling the mouse wheel) will result in the axis being scaled.

Vertical axis

The mouse pointer looks like this when the pointer is on the vertical
axis and only vertical scrolling is enabled. Clicking and dragging
(or scrolling the mouse wheel) will result in the axis being scrolled.

Box Zoom
mode

The mouse pointer looks like this when Box Zoom mode is enabled.
See Toggle Box Zoom.

Adding and Deleting Pens


Pens can be added to or removed from any pane. The Process Analyst allows Operators
to search the trend tags and alarm tags that are defined on a SCADA trends or alarms
server, or the time-series items and attributes published on a Historian Web Server. You
can use the search results to add pens that represent these to the current trend display.

316

Chapter: 9 Interacting with the Process Analyst

See also
Adding pens
Deleting pens

Adding Pens
You use the Add New Pens dialog box to add a new pen to your trend display. To display the Add Pens dialog box, click Add Pens on the main toolbar.
Adding a new pen:
To identify the item you would like a pen represent, you need to initially define a search
to determine what is available. You can then select a particular item from the search
results.
1. Select the Connection you would like to search. The drop-down menu to the right of
the field provides a list of the current server connections, including both Historian
and SCADA servers.
If you would like to add a new connection to the list, see Configuring Connection Properties .
2. You can then search the available data on the specified server. This process is different for a SCADA server, and a Historian server.
To search a SCADA server:
i. Select the Type of data you want to search for. The options are
Alarms orTrends.
ii. Type in a Tag, Cluster or Comment filter to help refine the
search results. Be aware that if the type selected is Alarm, the
Comment filter will not be available.
The filters have basic wildcard and Boolean search functionality. You can use the keywords AND, OR and NOT with
wildcard strings, as well as group Boolean terms using parentheses. Searches are not case sensitive.
For example, entering "L*" in the Tag Filter returns tags beginning with the letter "L" in every cluster. Entering "L* OR H*"
will find tags beginning with "L" or "H". More complex examples include "L* OR (H* AND NOT *G). This would return tags
that start with "L" or any that start with "H", but do not end in
"G".
If you leave a field blank, each item of the selected type will be
retrieved.
iii. Click Search. The results are returned in the Search results list.

317

Chapter: 9 Interacting with the Process Analyst

In the case of a SCADA connection, the results are not sorted:


the tags appear in the order they were configured in CitectSCADA. The cluster associated with each tag is also displayed.
The Process Analyst displays only the tags in clusters that this
client has access to. In a system with more than one cluster, if
a tag is not configured with a cluster, it is listed once for each
cluster.
To search a Historian server:
i. Select the Type of data you want to search for. The options are
alarms or trends.
ii. Type in a Tag filter to help refine the search results. In the case
of a Historian Server, the filter allows you to apply a basic wildcard search against the full path for each attribute, as defined
by its location within the Published Items directory.
The following example shows how wildcards can be used to
search a path and attribute name.

If you leave the field blank, published attributes of the selected


type will be retrieved.
iii. When you click Search, the results are returned in the Search
results as a list of attributes. Their properties are displayed,
and their location within the Published Items directory is
defined as a path.
3. The Search Result list displays up to 100 entries at a time. If your search returns
more than 100 results, use the First, Prev, Next, and Last buttons to navigate your
search results.
4. Select one or more items from the Search Results list. You can use the Ctrl and/or
Shift keys to select multiple tags.
5. Select the destination pens to Add Add pens to. Pens can be added to any existing
pane, or to a new pane.
6. Select a Pen Type. A trend tag can be represented by an analog or digital pen. An
alarm tag can be represented by an alarm pen only.

318

Chapter: 9 Interacting with the Process Analyst

7. Select how to resolve the pen name:


l

Comment- applies the tag comment as the pen name. If the tag does not have a
comment specified, a name is automatically generated.

Tag- applies the tag name as the pen name.

Auto-applies an automatically generated name to the pen using the format


Pen<X> where X is an incremented number, starting with the first available
number.

8. Click Add. This moves the selected items in the Search Results list into the Selected
Items list. The Selected Items list contains the tags that will be added as pens to the
Process Analyst. You can perform multiple searches to add tags into the Selected
Items list.
Note: To remove a tag from the Selected Items list, highlight the item you want to
move, and then click Remove.
9. To view details about a selected tag, click Show Detail. The Pen Detail box appears,
showing defined information for the selected tag.
10. Click OK. Your selected tags appear on the trend display as pens.
See Also
Deleting Pens

Deleting Pens
Operators can delete pens from the trend display at any time.
Note: Deleting a pen is different than hiding the pen from display by using the Visibility check box in the Object View. For details, see Using Object View.
To remove a pen:
1. Select the pen you want to delete.
2. Click RemovePen in the main toolbar. The pen is deleted from the display.

See Also
Adding Pens

319

Chapter: 9 Interacting with the Process Analyst

Viewing Pen Details


You can use the Pen Details box to view tag properties information for a selected pen.
You access this box from the Add Pens dialog box.
To view pen details:
1. Click Add Pens. The Add Pens dialog box appears.
2. Navigate to the tag you want to view details for. For details on searching tags, see
Adding Pens.
3. Select the tag in the Selected Items list, and then click Show Detail. The Pen Details
dialog box appears, showing the system information for the selected tag.

Instant Trending using the Process Analyst


At runtime from the Process Analyst you can browse variable tags or local variables
directly, and subscribe for instant trending.

320

Chapter: 9 Interacting with the Process Analyst

When you select a pen, in addition to Alarm and Trend Tags, you have the option of
selecting Variable Tags or Local Variables for subscription and display on the trend
graph.
Note: Displayed values will only be temporarily cached and will not be persisted.
To use instant trends at runtime in the process analyst:
1. Display a page at runtime containing a process analyst.
2. Click on the 'Add Pens' button in the tool bar.
3. For the 'Type' field, select 'Variable Tags' or 'Local Variables'. This will allow you to
browse for the tag you wish to instant trend.
4. Hit the search button.
5. From the search results select which tag you wish to Instant Trend and click 'Add',
as per usual.
6. Click 'OK' to add the pen to the process analyst.

321

Chapter: 9 Interacting with the Process Analyst

322

Chapter: 10 Using the Object View


The Object View provides a structured view of the pens displayed in the Process
Analyst. You use the Object View to view information about the pens on the chart, along
with information about associated tags.
See Also
Object View Basics | Using Object View | Configuring the Object View

Object View Basics


The Object View displays a hierarchically arranged view of the panes and pens on the
chart, in the Object Tree column. The Object View lists information about each pen.
When displayed, the Object View is located under the navigation toolbar.
The Object View (as it appears in a default configuration) is shown below; your Object
View might look different depending on how it has been customized in your system.

By default, items in the Object View are expanded (that is, every pen for every pane is
shown). Clicking a pen in the Object View selects that pen. There is always one pen
selected in each pane; in the example above, the primary selected pen is highlighted in
blue; other selected pens are highlighted in gray.
See Also
Pen Selection
The Object View displays the following items:
Icon

Object

323

Chapter: 10 Using the Object View

Analog pen
Digital pen
Alarm pen
Pane

The check box controls whether the pen is visible on the chart. The gradient-filled color
box to the left of the pen name indicates the pen's line color as it appears on the chart.
The Object View always mirrors the items that are displayed on a chart. For example, if
you add a pane to the chart, a new pane is added simultaneously to the Object View.
Similarly, if a new pen is added to or deleted from a pane, or if a pen's properties are
changed, these changes are reflected in the Object View.
The table below shows the predefined default columns, which are displayed in addition
to the object tree. These columns are arranged by default from left to right in the Object
View.
Column

Description

Zero Scale

Vertical axis start position of the pen.

Full Scale

Vertical axis end position of the pen.

Engineering Units

Engineering units associated with the pen.

You can configure the Object View to display other predefined columns that show different information about your pens; for details, see Configuring the Object View.

Using Object View


The table describes how to perform basic functions with Object View.

324

Task

Description

Toggle the
display of
Object
View on or
off

Click Toggle Object View on the main toolbar.

Chapter: 10 Using the Object View

Change the
size of
Object
View

Drag the splitter bar that is located between the chart area and the Object View up or
down.

Expand or
collapse a
tree node
in the
Object
Tree column

Either click the (+) box to expand the node or the (-) box to collapse the node; or double-click the item to toggle between expanded and collapsed states. This does not
affect the display of panes in the chart.

Select a
pen

Click the pen in the Object View table. Selecting a pen in the Object View gives the
focus in the chart to the selected pen, and vice versa. You can only select one pen per
pane at a time (you cannot select a pane).

Display or
hide a pen

Click to clear the check box to hide the pen; click the check box again to display the
pen.

Dynamically
change the
width of a
column during display

Drag the column divider left or right.


Note: You can quickly resize a column to fit the size of the widest item in a column by
double-clicking a column separator. To resize the column back to its original size, double-click the separator again. You can also configure the width of a column via the
Process Analyst Properties dialog; for details, see Configuring the Object View.

See Also
Configuring the Object View

325

Chapter: 10 Using the Object View

326

Chapter: 11 Printing and Exporting


You can print detailed reports of your Process Analyst trends for management reports
and other purposes. You can configure Process Analyst reports to include other print
options designed to maximize the business value of your reports. You can also export
pen data to the Windows Clipboard or to Microsoft Excel.
Note: For details about general print options in Windows, refer to your Windows documentation.
See Also
About Process Analyst Reports | Configuring Process Analyst Report Options | Exporting Pen Data

About Process Analyst Reports


Process Analyst reports are formatted automatically by the system to make optimal use
of the paper size and orientation. For example, if the page is small and the report contains a lot of information, the reports will use a smaller font to try to fit the information
to the page. For larger pages, a larger font will be used. Reports use an Arial font
between 8-14 points.
A typical Process Analysis report looks like this:

327

Chapter: 11 Printing and Exporting

This example shows a report of a chart titled Citect Process Analyst; the chart has only
one pane, which contains three analog pens. The topmost pen in the report legend is
highlighted, indicating that this pen is selected; consequently, the axes shown in the
report are associated with this pen. You can see that this pen is selected in the chart by
the "halo" effect surrounding the pen. The color boxes on the left-hand side of the legend
help you to distinguish between the pens.
To print a report:
l

Click Print. The Print dialog box appears. Click the Print button, or choose Print from
the right-click (context) menu.

Configuring Process Analyst Report Options


You can configure Process Analyst reports to contain such things as specific items on a
report legend (pen names, durations, engineering units, for example). You can also
include header information and page numbers.

328

Chapter: 11 Printing and Exporting

You use the Print dialog box to configure Process Analyst reports. To display the Print
dialog box, click Print on the main toolbar. After configuring your reports, click Print on
the General panel of the Print dialog box to print your report.
See Also
Setting up report legends | Setting up report options

Setting up report legends


You can configure your reports to include report legends. The information in the report legend is derived from the information properties of the underlying tag that is associated
with a pen. If there are no information properties defined for a tag, this information
isn&#39;t available for a legend.
You set up your report legends by using the Legend panel of the Print dialog box.
To set up a report legend:
1. In the Print dialog box, click the Legend tab. The Legend panel appears.

329

Chapter: 11 Printing and Exporting

2. The panel shows, by default, the Pen Options, Statistical Analysis Options, and Cursors lists (if there is a cursor currently displayed on the chart). The options available
to you might differ from the ones shown here.
3. Select the check box of the Pen Options you want to include in your report. For
details about these options, see Configuring the Object View.
4. Select the Statistical Analysis Options you want to include. This section is available
only if the chart contains at least one analog or digital pen.
l

Minimum - causes the minimum value from cache to be returned. Note that this
value might not be a real logged sample if the sample found is a multiple calculated sample.

Maximum - causes the maximum value from cache to be returned. Note that this
value might not be a real logged sample if the sample found is a multiple calculated sample.

Average - uses time-weighted averaging to determine the average for both stepped
and interpolated lines. This means that if a trend stays at a value of 10 for 1 hour
and then spikes quickly at a value of 50 for a minute, the average will not be significantly affected.

5. Select the Cursors you want to include.


6. If you want to include a report legend, make sure the Include Legend check box is
selected.
7. Click Apply.

Setting up report options


You can configure your reports to include a report header, which can include a report
title and comment. For multiple-page reports, you can include page numbers, which
appear at the bottom of each report page.
You set up your report options by using the Report panel of the Print dialog box.
To set up report options:

330

Chapter: 11 Printing and Exporting

1. In the Print dialog box, click the Report tab. The Report panel appears.

2. In the Header Information area, type a Title for the report. If necessary, include a
Comment. Comments are printed under the report title on each report page.
3. To include a header, make sure the Include Header check box is selected.
4. To include page numbering, make sure the Include Page Numbers check box is
selected.
5. Click Apply.

Exporting Pen Data


You can export Process Analyst data for pens that are visible to either the Windows Clipboard (by using the Copy to Clipboard command) or to an Microsoft Excel-compatible
file (Copy to File).
When you export data, it is exported using a standard format of columns that represent
time, milliseconds, and then a column per pen, as shown here:

331

Chapter: 11 Printing and Exporting

Time

Milliseconds

Pane1Pen1

Pane1Pen2

Pane1-Pen3

15/06/2004
01:17:25

100

NA

10

Off

15/06/2004
01:17:26

100

20

Low [Unacknowledged]

15/06/2004
01:17:27

100

15/06/2004
01:17:28

100

Low [Acknowledged]
3

25

Low [Acknowledged]

Export functionality doesn't simply return the sample markers displayed on the graph.
Instead, it exports an interpolated value per display period from the start time to the end
time of the pen. The display period can be calculated by dividing the time span of the
pen by the IProcessAnalyst.NumberofSamples[Property][Get/Set] property.
Before exporting the data, the Process Analyst sorts the timestamps for pens from the earliest to the latest sample. When the pens are unlocked and have different time spans, the
data for each pen might have different timestamps. As each entry is added to a row in
the table, the value of the pen at that particular timestamp is exported. If a pen does not
have a sample for that timestamp, the column for that pen is left blank.
An export will also write values of NA, GATED and alarm states as localized text when
necessary.
Pen columns use the format <pane>-<pen> where pane is the name of the pane that contains the pen, and pen is the name of the pen.
See Also
Copying data to the Clipboard | Copying data to file

Copying data to the Clipboard


Copying pen data to the Clipboard allows you to paste the data into another application,
such as an Excel spreadsheet.
To copy data to the Clipboard:
1. Select the pen(s) you want to copy data for.
2. Click Copy to Clipboard, or select Copy from the right-click (context) menu.

332

Chapter: 11 Printing and Exporting

Copying data to file


Copying pen data to Microsoft Excel allows you to manipulate the data using spreadsheet application capabilities.
Notes
l

The Time column is an encoded (OLEDATE) double value, which holds the date and
time in seconds in local time. When exporting pen data to Excel, change the format of
the Time column to dd/mm/yyyy hh:mm:ss so that the time is displayed correctly.
Because the OLEDATE data type excludes milliseconds, a separate column is provided, which exports the millisecond component for each timestamp.

The results exported are in Unicode format. use Excel 2000 and later, which support
this format.

To copy data to file:


1. Select the pen(s) you want to copy data for.
2. Click Copy to File. The Save As dialog box appears.
3. Enter a filename and click Save. The data is exported in a delimited format.
4. Open the file you just created, and complete the Text Import Wizard.

333

Chapter: 11 Printing and Exporting

334

Chapter: 12 Configuring the Process Analyst


Many of the Process Analyst control's properties can be configured at run time to allow
an Operator to customize the control to suit their working preferences. To configure the
Process Analyst, you use the Properties dialog box.
See Also
Using the Process Analyst Properties Dialog Box
Configuring Chart-wide Properties
Configuring Chart Panes
Configuring Pens
Configuring Cursors
Configuring Defaults
Configuring Toolbars
Configuring the Object View
Working with Views

Using the Process Analyst Properties Dialog Box


You use the Process Analyst Properties dialog box to configure Process Analyst views.
You can also configure chart-wide properties.
The Properties dialog box has three tabs, Main page, Toolbars, andObject View.

Main page
You use the Main page of the Properties dialog box to configure general properties and
access the server path properties. The Main page looks like this:

335

Chapter: 12 Configuring the Process Analyst

The list on the left-hand side contains the property tree, a hierarchical list of Process
Analyst interface components. Selecting an item displays the property controls for that
component on the right. The pens in the property tree indicate the information that the
pen is trending.
Using the property tree right-click menu
Right-clicking an item in the property tree displays the shortcut menu for that item, as
shown below.

The tasks you can perform vary depending on your privilege level: if you don't have the
necessary privilege at run time to perform an action, that control is disabled/removed.
For example, the right-click menu removes the Add Pen option at run time if you don't
have the privilege to add a pen. Commands that are unavailable appear "grayed-out."
The right-click menu contains the following options:
Rightclick this
item...

336

Actions

Chapter: 12 Configuring the Process Analyst

Chart

Add Pane - add a new pane.


Add Cursor - add a new cursor.

Pane

Add Digital - adds a new digital pen.


Add Analog - adds a new analog pen.
Add Alarm - adds a new alarm pen.
Note: After adding a pen from this menu, configure the data connection by clicking
the Connection tab and typing the name of the tag into the Tag text box.
Delete - deletes the pane.

Pen

Delete - deletes the pen.

Cursor

Delete - deletes the cursor.

Use the Main page for the following:


l

Configuring Chart-wide Properties

Configuring Chart Panes

Configuring Pens

Configuring Cursors

Configuring Defaults

Toolbars
You use the Toolbars page to configure the main toolbar and navigation toolbar. Operators and Users can configure the toolbars at run time and design time. Use the Toolbars
page to configure the toolbars; for details, see Configuring Toolbars.

Object View
You use the Object View page to configure the Object View. Operators and Users can
select (at run time and design time) the columns they want to display, as well as change
the column width and display order. Users can define new columns and edit existing
columns at design time.
Use the Object View page for the following:
l

Configuring the Object View

Creating or Editing Object View Columns

337

Chapter: 12 Configuring the Process Analyst

Configuring Chart-wide Properties


You use the Main page of the Process Analyst Properties dialog box to configure chartwide properties. Select Process Analyst at the top of the property tree to display the Process Analyst properties page. This page contains two tabs, General and Server Paths,
used to modify the following configurations:
l

Configuring general properties

Configuring connection properties

Configuring server paths

Configuring general properties


You can configure general properties such as the background color of the chart, the
refresh rate, data request rate, number of samples for pens, and specify whether chart
pens are to be locked. The Administration area indicates the privilege setting for the current Operator and whether security settings are inherited from the graphics page containing the Process Analyst.
To configure general properties:
1. Click the General tab on the Main page.

338

Chapter: 12 Configuring the Process Analyst

UNACCEPTABLY SLOW PROGRAM EXECUTION


l
l

Do not specify a Display refresh rate less than 500 ms.


Do not specify a Number of Samples greater than 500.

Failure to follow these instructions can result in death, serious injury, or equipment damage.

2. Click the color swatch and select a Background color.


3. Specify a Display refresh rate.
This value determines the rate at which the display data is refreshed on the display;
it also controls how often the position of the Now indicator is refreshed. This control
is disabled if you do not have appropriate privilege. The default value is 1000 milliseconds. The permitted range is between 10 milliseconds to 60,000 milliseconds.
Specifying a rate below 500 is not recommended if your chart contains many pens,
since this may negatively affect performance.
4. Specify a Data request rate.
This value determines the maximum frequency of data requests. The Process Analyst
internally determines when a request is necessary, but you can use this property to
cap the Process Analyst's performance.
This control is disabled if you do not have appropriate privilege. The default value is
1000 milliseconds. The permitted range is between 10 to 60,000 milliseconds. This
property affects Trends Server performance.
5. Specify a Info request rate.
The Process Analyst will periodically refresh the configuration data for alarm and
trend pens to reflect any changes caused by a reload on the server. This property
defines (in seconds) how often the server is checked for pen configuration changes.
You can use any value between 0 and 600 (seconds); the default value is 30 (seconds). A setting of 0 (zero) means no automatic refresh will occur.
6. Specify a Number of Samples.
This specifies the date/time axis span of each pen in number of samples. This control
is disabled if you do not have the appropriate privilege. The default value is 300. The
permitted range is between 10-5000. This number is dependant on the [TREND] MaxRequestLength parameter in the Citect.ini file. The default value of [TREND] MaxRequestLength is set to 4000, this will only allow a maximum of 3330 samples to
display. if you wish to display the maximum number of 5000, set the [TREND] MaxRequestLength parameter to 6004 or greater. This is calculated by the number of samples (5000) plus 20% plus an additional 4 samples.
Note: This value is closely tied to your display resolution. The default setting is

339

Chapter: 12 Configuring the Process Analyst

ideal for screen resolutions from 1024x768 to 1280x1024. The association between
Number of Samples and the display resolution occurs because for each sample
shown on screen the Process Analyst attempts to leave a small gap to allow for
sample markers. Because the Process Analyst shows samples when they occur, it
requires less data than a traditional trend client. Retrieving data is expensive and
the more data you retrieve the more time the request takes. It is recommended that
this parameter not exceed 500.
The chart has a minimum resolution of one millisecond per sample. If the time span
is reduced enough so that the number of samples exceeds the number of milliseconds
in the time span, the number of milliseconds in the time span is used instead of the
number of samples.
7. Select the Lock pens check box to lock your pens, or clear the check box to turn off
pen-locking. For details on pen locking, see Locking/Unlocking Pens.
8. Set the Administration Privilege Level necessary for an operator to use this
object/group. Select the Inherit Security Settings checkbox if you want security settings to be inherited from the page containing the PA, or clear the check box to overwrite security settings when a new .pav file is loaded.

UNACCEPTABLY SLOW PROGRAM EXECUTION


Do not set the Administration Privilege level to zero on a running system.
Failure to follow these instructions can result in death, serious injury, or equipment damage.

9. Click Apply.
See Also
Exporting Pen Data

Configuring server paths


You can configure the file server locations that the Process Analyst uses to load and
save Process Analyst views, and displays the current CitectSCADA run path if the Process Analyst is embedded in a running CitectSCADA system. This command is disabled
at run time if you do not have the appropriate privilege. For details about saving and
loading views, see Working with Views and Process Analyst View Synchronization.
The Process Analyst uses four possible storage locations:

340

Chapter: 12 Configuring the Process Analyst

User - maps to the client machine's logged-in user's My Documents folder. This
option is available for any possible privilege and CitectSCADA mode.

Primary - User-definable.

Secondary - User-definable.

Local - displays the current CitectSCADA run path (read-only). This text box only
gets populated when the Process Analyst is running in CitectSCADA V6.0 or higher.
This path is an Analyst Views subdirectory under the CitectSCADA current Run
directory.

To configure server paths:


1. Click the Server Paths tab on the Main page.

2. Enter the location of the Primary file server.


3. Enter the location of the Standby file server (optional). This specifies the file server to
use if the primary file server is unavailable.
4. Click Apply.

Configuring Chart Panes


You use the Properties dialog box to configure chart panes. After adding a pane, you can
configure its size relative to other panes, as well as select a different color. Pane properties can be configured during run time.
To add a pane:
l

In the property tree of the Properties dialog box, right-click the Process Analyst view
item at the top of the tree, and then select Add Pane. (To remove a pane, right-click a
pane in the tree and choose Delete.)

To configure the chart pane:

341

Chapter: 12 Configuring the Process Analyst

1. In the property tree of the Properties dialog box, select the pane you want to configure. The properties for that pane appear.

Note: To configure defaults for your panes, select the Pane item in the Default Settings node of the property tree, not a specific pane.
2. Click the color swatch and select a new Background color.
3. Select a Height option:
l

Variable - Automatically calculates the pane height based on the value in the
Size control. For example, if the chart contains two panes, selecting this option
and using a Size value of 110 will set this pane to 110% of the size of the other
pane in the chart. Fixed height panes have precedence of variable-size panes.

Fixed -Sets the pane height to the value specified in the Size control.

4. Specify a Size for the pane.


5. Click Apply.

Configuring Pens
The Process Analyst allows you to configure your pens to suit your preferences. Pen configuration tasks are performed by using the Properties dialog box, which is used for:

342

Configuring pen appearance

Configuring pen gridlines

Configuring pen axes

Configuring pen quality

Configuring the pen data connection

Configuring cursor labels

Chapter: 12 Configuring the Process Analyst

Configuring pen appearance


You use the Process Analyst Properties dialog box to configure the appearance of pens.
Pen appearance can be configured at run time by Operators and Users (and at design
time by Users).
For details about pen appearance, see Pen Types.
Note: To configure default settings for pen appearance, select Analog, Digital,or
Alarm in the property tree under Default Settings, and then complete the procedure
below for the type of pen you want to configure.

Configuring analog and digital pens


Configuring the appearance of analog or digital pens involves selecting the line color,
stack property, line width, and either the method of interpolation (analog pens) or fill
color (digital pens).
To configure pen appearance:
1. Select the pen you want to configure.
2. Click the Appearance tab to display the appearance property controls.

3. Select a Line color using the color swatch.


4. Specify a Line width.

343

Chapter: 12 Configuring the Process Analyst

5. To stack a pen, select the Stacked option and then specify a Height in pixels for the
stack.
6. Do one of the following:
l

For analog pens, choose an Interpolation method. Straight causes a line to be


drawn directly between two data points. Stepped causes a line to be drawn
between points maintaining the value of the previous sample until a sample with
a different value arrives, in which case a vertical line is drawn.

For digital pens, select the Filled check box, and then select a fill color from the
color swatch.

7. Click Apply.
Configuring alarm pens
Configuring the appearance of alarm pens involves selecting the line color, stack property, line width, alarm type, and the properties for that alarm type.
To configure alarm pen appearance:
1. Select the pen you want to configure.
2. Click the Appearance tab to display the appearance property controls for the selected
alarm pen.

3. Select a Line color using the color swatch.


4. Specify a Line width.
5. To stack a pen, select the Stacked option and then specify a Height in pixels for the
stack.

344

Chapter: 12 Configuring the Process Analyst

6. Select an Alarm type. For details about the different types of alarm pen available, see
Alarm pens. For information about alarm states, see Alarm states.
7. For each Label for the alarm type you selected, select a Style, a Fill color, and/or a
Hatch color by using the swatches.
8. Click Apply.

Configuring pen gridlines


You use the Process Analyst Properties dialog box to configure the gridlines for a
selected pen. Pen gridlines can be configured at run time by Operators, and at design
time by Users.
For more information about pen gridlines, see Gridlines.
Note: To configure defaults for pen gridlines, select the All pens item in the property
tree under Default Settings, and then complete the procedure below.
To configure pen gridlines:
1. Click the Main Page tab.
2. From the property tree list, select the pen you want to configure gridlines for.
3. Click the Gridlines tab to display the gridlines property controls.

4. In the Vertical: Major area, select a Style, specify a Width, and then select a Color.
5. In the Vertical: Minor area, select a Style, specify a Width, and then select a Color.

345

Chapter: 12 Configuring the Process Analyst

6. In the Horizontal area (analog pens only), select a Style for the minor gridline, specify a Width, and then select a Color for the major gridline.
7. Do the same if necessary for the minor gridline.
8. Click Apply.

Configuring pen axes


You use the Process Analyst Properties dialog box to configure the axis of the selected
pen. A pen axis can be configured at run time by Operators, and at design time by Users.
You can configure the color, line width, label type, scroll and scale properties for the
date/time and value axes. You can also choose whether to display time on the date/time
axis using local or UTC format.
For more information about pen axes, see Date/Time (Horizontal) Axis and Vertical
(Value) Axis.
Note: To configure defaults for pen axes, select the All pens item in the property tree
under Default Settings, and then complete the procedure below.
To configure a pen axis:
1. Click the Main Page tab.
2. From the property tree list, select the pen you want to configure axes for.
3. Click the Axis tab to display the axis property controls.

346

Chapter: 12 Configuring the Process Analyst

4. In the Vertical area, select a Color by using the color swatch.


5. Enter a new Line width.
6. Select a Label type. This specifies the format to use for axis values.
7. Do one of the following (analog pens only):
l

Select the Autoscale option to autoscale the vertical axis.

Select the Interactive option, and then select Scale to be able to interactively scale
the vertical axis; and/or select Scroll to be able to scroll the axis.
Note: These options are also available on the right-click (context) menu.

8. In the Horizontal area, select a Color by using the color swatch.


9. Select a Background color by using the color swatch.
10. Enter a new Line width.
11. Enter a Default Span to define the span you want to use for a new pen.
The default span is used by the Process Analyst when the Operator or User clicks the
Reset to Default Span button, or if the pen is added in pen unlocked mode, or if the
pen is the first one added to a display.
If you&#39;re setting the span value as a default setting for new pens, the new span
value is inherited by news pens created.
12. Select the Local Time option to display the date/time axis in local time using your
machine settings. If this option is not selected, the time is displayed in UTC format.
For details about time display on the date/time axis, see Date/Time (Horizontal) Axis.
13. Select Scale to be able to interactively scale the vertical axis.
14. Select Scroll to be able to scroll the axis.
Note: The Scale and Scroll options are also available on the right-click (context)
menu.
15. Click Apply.

Configuring pen quality


You use the Process Analyst Properties dialog box to configure the quality of the selected
pen. Pen quality can be configured at run time by Operators, and at design time by
Users.
Configuring the pen quality allows you to define the appearance of sample markers on a
selected pen, as well as the line styles of the pen, based upon the quality of the data
being trended by the Process Analyst.

347

Chapter: 12 Configuring the Process Analyst

For details about how the Process Analyst represents data quality, see Data Quality.
To configure pen quality:
1. Click the Main Page tab.
2. Select the pen you want to configure.
3. Click the Quality tab to display the quality property controls.

4. To enable points for the pen to be visible, select the Points Visible option.
5. In the Point Styles area, select a Single point style to represent a single data sample.
6. Select a Multiple point style to represent multiple data samples.
7. Selected an Interpolated point style for interpolated data samples.
8. In the Line Styles area, select a line style to represent a Good sample.
9. Select a line style to represent a Gated/Disabled sample.
10. Select a line style to represent an NA sample.
11. Click Apply.

Configuring the pen data connection


You use the Process Analyst Properties dialog box to configure the pen data connection.
This allows you to define the server, trend tag, and request mode for the selected pen.
Pen connection can be configured at run time by Operators and Users that have the
appropriate privileges.
To configure pen data connection:

348

Chapter: 12 Configuring the Process Analyst

1. Select the pen you want to configure.


2. Click the Connection tab to display the connection property controls.

3. For the Server data connection, a <localhost> connection is selected by default, indicating that the Process Analyst will connect to the CitectSCADA run time client running on the same computer, and pass its requests through to the client, which will
pass them onto the server.
If you would like to connect a pen to a different server, the drop-down menu to the
right of the field provides a list of the server connections that are currently configured. If you would like to add a new connection to the list, see Configuring Connection Properties .
4. In the Trend tag field, enter the trend tag for the pen. In a system with more than one
cluster, specify both the cluster and tag using the format <cluster name.tag name>.
Omitting the cluster name will cause an error. If the system has only one cluster configured, you can just enter the tag name. The configured cluster will be assumed.
5. Select a Request mode. The default is Average.
The request mode defines how multiple samples are treated by the Process Analyst.
Regardless of the request mode used, the timestamp for a sample is always averaged.
6. Click Apply.
See Also
Data Compaction

349

Chapter: 12 Configuring the Process Analyst

Configuring cursor labels


You use the Process Analyst Properties dialog box to configure the pen cursor labels.
Configuring the pen cursor labels allows you to specify the color used for the lines, background, and text on the cursor label. The information shown on a cursor label is predefined and cannot be changed.
For details about cursor labels, see Using Cursor Labels.
Pen cursor labels can be configured at run time by both Operators and Users that have
the appropriate privileges.
To configure cursor labels:
1. Select the pen you want to configure.
2. Click the Cursor Label tab to display the connection property controls.

3. Select a Line color from the color swatch.


4. Select a Background color from the color swatch.
5. Select a Text color from the color swatch.
6. Click Apply.

350

Chapter: 12 Configuring the Process Analyst

Configuring Cursors
You can configure the line width and line color of a selected cursor. Changes to the cursor line color apply only to the currently selected cursor. For details on cursors, see
Using Cursors.
To configure the cursor:
1. In the property tree of the Process Analyst Properties dialog box, click the cursor you
want to configure. The Appearance property controls appear.

2. Type in a new Width value, and/or select a new Color.


3. Click Apply.

Configuring Defaults
The defaults are a collection of properties that are inherited by each item (pane, pen, cursor, and so on) when that item is created. These default properties are maintained for the
lifetime of the item until its properties are modified.
You configure these defaults in the same way as you configure the individual components. The Default Settings node on the property tree contains the following items:
l

All pens - configure the gridlines, axis, quality, connection, and cursor label properties for pen types. See Configuring pen gridlines, Configuring pen axes, Configuring
pen quality, Configuring the pen data connection, and Configuring cursor labels.

Cursor - configure cursor defaults. See Configuring Cursors.

Analog - configure the appearance of analog pens. See Configuring pen appearance.

Digital - configure the appearance of digital pens. See Configuring pen appearance.

Alarm - configure the appearance of alarm pens. See Configuring pen appearance.

Pane - configure the pane height and appearance defaults. See Configuring Chart
Panes.

351

Chapter: 12 Configuring the Process Analyst

Configuring Toolbars
The Process Analyst has two toolbars, the main toolbar and the navigation toolbar. You
use the Properties dialog box to configure the toolbars.

Operators can configure the Process Analyst toolbars by:


l

Adding or removing toolbar commands

Changing the order of toolbar commands

Users can perform additional tasks such as:


l

Adding New Commands

Editing Existing Custom Commands

Adding or removing toolbar commands


Operators can add or remove toolbar commands during run time.
To add or remove commands from a toolbar:
1. From the Toolbar menu, choose the toolbar you want to customize (MainToolbar or
Navigation Toolbar).

352

Chapter: 12 Configuring the Process Analyst

2. To add a command to the toolbar: In the Available toolbar buttons list, select the
command you want to add to the toolbar, and then click Add. The selected command
moves to the Current toolbar buttons list.
The Available toolbar buttons list contains the command buttons available in your system, including predefined as well as user-defined commands.
3. To remove a command from the toolbar: In the Current toolbar buttons list, select
the command you want to remove from the toolbar, and then click Remove. The
selected command moves to the Available toolbar buttons list.

Changing the order of toolbar commands


Operators can change the order of toolbar commands during run time.
To change the order of commands:
l

Select a command in the Current toolbar buttons list and click Move Up or Move
down to move the selected command up or down the list as necessary.

Configuring the Object View


Operators can configure the Object View to display additional pen information to the columns that are displayed by default. You configure the Object View by using the Properties dialog box.
Operators can select which columns to display, as well as change the size of existing columns and the column display order. Users can define new columns, or edit or delete
existing columns; for details, see Creating or Editing Object View Columns.
You can configure the Object View to display these predefined columns:
Column

Description

Scale

Vertical axis start and end position of the pen.

Engineering
Units

Engineering units associated with the pen.

Comment

The trend/alarm comment defined for the pen.

Start Time

Date/time axis start position of the pen.

End Time

Date/time axis end position of the pen.

Duration

Difference between the start time and the end time.

353

Chapter: 12 Configuring the Process Analyst

Column

Description

Tag

Pen's associated trend or alarm tag.

Trend Type

Trend type of associated tag.

Sample Period

Sampling period of the associated trend tag.

Engineering
Scale

Engineering scale for associated trend tag.

Raw Scale

Raw scale for associated trend tag.

Alarm Category

Category of associated alarm tag.

Alarm Description

Description of associated alarm tag.

Alarm Area

Area of associated alarm tag.

Alarm Name

Name of associated alarm tag.

Alarm Type

Alarm type of associated alarm tag.

Error

Displays the error of the last data request. Blank if last data request succeeded.

Minimum

Lowest displayed value (trend tags only).

Maximum

Highest displayed value (trend tags only).

Average

Average of every displayed value (trend tags only).

For information on columns that are displayed by default, see Object View Basics.

Object View properties page


The Object View properties page allows you to show or hide existing columns, create custom columns, edit existing columns, and re-order columns.

354

Chapter: 12 Configuring the Process Analyst

The Properties page displays the available columns for the Object View and their properties:
l

NameID - Internal identifier, which needs to be unique.

Width - Default width of the column in pixels.

Display Text - Title displayed in the column header.

The check boxes in the NameID column are bound to a column's visibility: a column is
visible only if the associated checkbox is selected.
The Move Up and Move Down buttons to the right of the Available Columns list box
allow you to reorder columns. The order of the columns from top to bottom in the list dictates their display order from left to right in the Object View. Clicking Move Up or Move
Down shifts the currently selected item up or down respectively.
See Also
Creating or Editing Object View Columns

355

Chapter: 12 Configuring the Process Analyst

Working with Views


An Operator can save the visual setup of a Process Analyst control by saving a view,
which is saved as a Process Analyst View (.pav) file. They can also load views that
have been created previously. A view saves the state of every command, as well as properties for every the Process Analyst components (pane, pen, axes, background, and so
on).
To save a view or to load a view, you use the Save View and Load View commands,
respectively, on the main toolbar.

Saving a view
A Process Analyst view stores the trends and alarms that are being displayed, the columns being viewed in the Object View, the toolbar buttons that are available, as well as
the "look and feel" of the view.
To save a view:
1. On the main toolbar, click Save View. The Save Process Analyst View dialog box
appears, showing the location where you can save views.

2. Choose a location to save your view to. If you are operating the Process Analyst
within the Historian Web Client, this location will be the "My Documents" directory
on the local computer.
Note: It is your administrator's responsibility to set up the correct directories for

356

Chapter: 12 Configuring the Process Analyst

3. Enter a File name for your view, and then click OK.
To support redundancy, if the Local option is available and selected, CitectSCADA
attempts to save the view to the primary, standby and local locations.

Loading a view
When loading a view, the start time and end time of a view is restored only autoscroll is
off. If autoscroll is on, pens are synchronized to "Now."
When loading a view, the only locations that are available (My Documents, Primary,
and Standby) are those that have been configured by your administrator.
To load a view:
1. On the main toolbar, click Load View. The Load dialog box appears.

2. Select a view to load, and then click OK. The view is loaded.

357

Chapter: 12 Configuring the Process Analyst

358

Chapter: 13 Operator Command Reference


You use the toolbar commands on the main toolbar and navigation toolbar to perform
commonly used functions for viewing and interacting with Process Analyst data, such
as adding or removing pens, displaying cursors, and so on.
Process Analyst has predefined commands, grouped into the following categories:
l

View Commands

Zoom Commands

Navigation Commands

Export Commands

Interface Commands

General Commands

The toolbars in your run time environment might have been customized during implementation, so not every command might appear on your toolbars. Additionally your toolbars might have custom commands not described here. The tables describe the default set
of commands delivered with the Process Analyst.

View Commands
The Process Analyst has the following view commands by default:
Icon

Tooltip

Description

Save
View

Displays the Save File dialog box allowing an Operator to save a Process
Analyst view to a specified location. For details, see Saving a view.

Load
View

Displays the Load View dialog box allowing the operator to specify a view to
load. For details, see Loading a view.

See Also
Zoom Commands | Navigation Commands | Export Commands | Interface Commands
| General Commands

359

Chapter: 13 Operator Command Reference

Zoom Commands
The Process Analyst has the following zoom commands by default:
Icon

Tooltip

Description

Toggle
Box
Zoom

Toggles the Process Analyst into box zoom mode. The mouse cursor changes to a
crosshair used to define an area to zoom in on. Zoom may be cancelled by right-clicking or toggling the Zoom command off. For details, see Toggle Box Zoom.

Zoom
in
50%

Executes a horizontal and vertical zoom in of 50% of the current span(s) of the
pen(s). For details, see Zoom In/Zoom Out.

Zoom
out
50%

Executes a horizontal and vertical zoom out of 50% of the current span(s) of the
pen(s). For details, see Zoom In/Zoom Out.

Undo
Last
Zoom

Undoes the last zoom operation. For details, see Undo Last Zoom.

Reset
to
Default
Span

Restores the pen(s) spans to their original default settings. For details, see Reset to
Default Span.

Edit
Span

Displays the Edit Span dialog box allowing an operator to explicitly enter a time span
to apply to the display. For details, see Edit Span.

Edit
Vertical

Enabled when an analog pen is selected. For details, see Edit Vertical Scale.

Scale

See Also
View Commands | Navigation Commands | Export Commands | Interface Commands
| General Commands

360

Chapter: 13 Operator Command Reference

Navigation Commands
The Process Analyst has the following navigation commands by default. For details
about these commands, see Navigating time.
Icon

Tooltip

Description

Toggle
Span Lock

Toggles the locking of the time span. A time span is the "distance" in time
between the start time and end time of the chart. For details, see Span Lock.

Back One
Span

Moves the pen(s) back in time exactly one time span. For details, see Navigating time.

Back Half
a Span

Moves the pen(s) back half a span. For details, see Navigating time.

Forward
One Span

Moves the pen(s) forward in time exactly one span. For details, see Navigating
time.

Forward
Half a
Span

Moves the pen(s) forward half a span. For details, see Navigating time.

Synchronize
to Now

Synchronizes pen(s) such that the end date time reflects "now" which is positioned on the right-hand edge of the screen. "Now" is calculated using the current system time. For details, see Synchronize to Now.

Toggle
AutoScrolling

Toggles the automatic scrolling off and on for every pen. For details, see Toggle
Autoscrolling.

See Also
View Commands | Zoom Commands | Export Commands | Interface Commands |
General Commands

Export Commands
The Process Analyst has the following export commands by default:
Icon

Tooltip
Export to
File

Description
Copies visible pens to an Excel compatible file. For details, see Copying data to
file.

361

Chapter: 13 Operator Command Reference

Icon

Tooltip

Description

Copy to
Clipboard

Copies visible pens to the clipboard.Interface Commands. For details, see Copying data to the Clipboard.

See Also
View Commands | Zoom Commands | Navigation Commands | Interface Commands
| General Commands

Interface Commands
The Process Analyst has the following interface commands by default:
Icon

362

Tooltip

Description

Show/Hide Cursor

Toggles the display of cursors. For details, see Using Cursors.

Show/Hide Cursor Labels

Toggles the display of cursor labels. Enabled only when a cursor is visible and when a pen exists. For details, see Using Cursor Labels.

Show/Hide
Points

Toggles the display of points representing where sample data was


recorded in the archive. For details, see Understanding Pens.

Lock/Unlock Cursor Labels

Toggles the locking/unlocking of cursor labels. Enabled only when a cursor is visible and when a pen exists. For details, see Using Cursor Labels.

Lock/Unlock
Pens

Toggles the locking/unlocking of pens. For details, see Locking/Unlocking Pens.

Add Pane

Adds a new pane to the view. For details, see Configuring Chart Panes.

Remove Pane

Removes the pane of the primary selected pen. A dialog confirms the
delete. For details, see Configuring Chart Panes.

Autoscale Vertical Axis for


Analog Pens

Toggles autoscaling for the selected pen on a per-pen basis. For details,
see Scaling the Chart.

Lock/Unlock Vertical Axis Scrolling

Toggles interactive scrolling of the vertical axis and disables autoscaling.


For details, see Scrolling the Chart.

Chapter: 13 Operator Command Reference

See Also
View Commands | Zoom Commands | Navigation Commands | Export Commands |
General Commands

General Commands
The Process Analyst has the following general commands by default:
Icon

Tooltip

Description

Add Pen

Displays the add pen dialog. For details, see Adding Pens.

Remove
Pen

Removes the selected pen from the display. For details, see Deleting Pens.

Toggle
Object
View

Toggles the display of the Object View. For details, see Using the Object View.

Print

Displays the print dialog, allowing the user to print the current state of the Process Analyst. For details, see Printing and Exporting.

Refresh
Data

Refreshes the data for the selected pen, or every pen (if locked).

Show
Properties

Displays the Process Analyst Properties dialog box. For details, see Using the
Process Analyst Properties Dialog Box.

Help

Displays the Process Analyst Help.

See Also
View Commands | Zoom Commands | Navigation Commands | Export Commands |
Interface Commands

363

Chapter: 13 Operator Command Reference

364

Glossary

Glossary
1
10base2
Ethernet implementation on thin coaxial cable. Typically uses a BNC connection.
10base5
Ethernet implementation on thick coaxial cable.
10baseT
Ethernet implementation on unshielded twisted pair. Typically uses as RJ45 connection.

A
Accredited - Level 1
Drivers developed under the CiTDriversQA96 Driver Quality and Accreditation System, which
ensures the driver was designed, coded, and tested to the highest possible standards.
Accredited - Level 2
Drivers developed using the CiTDriversQA92 Driver Quality and Accreditation System.
accumulator
A facility that allows you to track incremental runtime data such as motor run hours, power consumption, and downtime.
active alarm
An active alarm is an alarm in one of the following states: ON and unacknowledged; ON and
acknowledged; OFF and unacknowledged.
advanced alarm
Triggered when the result of a Cicode expression changes to true. Use advanced alarms only when
alarm functionality cannot be obtained with the other alarm types. If you configure too many
advanced alarms, your system performance can be affected.
alarm categories
You can assign each alarm to a category, and then process each category as a group. For example, for
each category, you can specify the display characteristics, the action to be taken when an alarm in the
category is triggered, and how data about the alarm is logged. You can also assign a priority to the
category, which can be used to order alarm displays, filter acknowledgments, and so on.

365

Glossary

alarm display page


The alarm display page displays alarm information in the following format: Alarm Time, Tag Name,
Alarm Name, Alarm Description.
alarm summary page
Displays alarm summary information in the following format: alarm name, time on, time off, delta
time, comment.
Alarms Server
Monitors all alarms and displays an alarm on the appropriate control client(s) when an alarm condition becomes active.
analog alarms
Triggered when an analog variable reaches a specified value. supports four types of analog alarms:
high and high high alarms; low and low low alarms; deviation alarms; and rate of change alarms.
animation number files (.ANT)
ASCII text files that contain a list of animation points (ANs) and the coordinate location (in pixels) of
each point.
animation point
The points on a graphics page where an object displays. When you add an object to your page, automatically allocates a number (AN) to the animation point, (i.e., the location of the object).
area
A large application can be visualized as a series of discrete sections or areas. Areas can be defined
geographically (where parts of the plant are separated by vast distances) or logically (as discrete processes or individual tasks).
arguments
Values (or variables) passed in a key sequence to a keyboard command in runtime (as operator
input). Arguments can also be the values (or variables) passed to a Cicode function when it executes.
Association
An association is the name or number you use when defining a Super Genie substitution, the value
or values of which are dynamically generated at runtime.
attachment unit interface (AUI)
Typically used to interface to a transceiver through what is often known as a drop cable.
automation component (ActiveX object)
ActiveX objects typically consist of a visual component (which you see on your screen) and an automation component. The automation component allows the interaction between the container object
and the ActiveX object.

366

Glossary

B
baud rate
The number of times per second a signal changes in a communication channel. While the baud rate
directly affects the speed of data transmission, the term is often erroneously used to describe the data
transfer rate. The correct measure for the data rate is bits per second (bps).
BCD variable (I/O device)
BCD (Binary Coded Decimal) is a two-byte (16-bit) data type, allowing values from 0 to 9,999. The
two bytes are divided into four lots of four bits, with each lot of four bits representing a decimal
number. For example the binary number 0010 represents decimal 2. Thus the BCD 0010 0010 0010
0010 represents 2,222.
bottleneck
A bottleneck occurs when too many requests are being sent to a PLC communication link/data highway. It can occur with all types of protocols, and is dependent on several factors, including the
frequency of requests, the number of duplicated (and hence wasteful) requests, whether the protocol
supports multiple outstanding requests, as well as other network traffic.
browse sequence
A series of graphics pages linked by a browse sequence, which is a linear navigation sequence within
your runtime system that uses Page Previous and Page Next commands.
byte variable (I/O device)
Byte is a one-byte data type, allowing values from 0 to 255. One byte consists of 8 bits. Each ASCII
character is usually represented by one byte.

C
cache (I/O device data cache)
When caching is enabled, all data read from a I/O device is stored temporarily in the memory of the
I/O server. If another request is made (from the same or another control client) for the same data
within the cache time, the I/O server returns the value in its memory, rather than read the I/O device
a second time.
callback function
A function that is passed as an argument in another function. Callback functions must be userwritten functions.
Cicode
Programming language designed for plant monitoring and control applications. Similar to languages
such as Pascal.

367

Glossary

Cicode blocking function


A Cicode function that blocks, or waits, for an asynchronous event to complete before returning.
CiNet
CiNet is no longer supported. CiNet was designed as a low speed wide area network (for remote monitoring applications). If you have a widely-distributed application where computers are separated by
vast distances, using a LAN to connect your control clients can be expensive. To connect control
clients in this instance, use Microsoft's remote access server (RAS) or a Microsoft-approved solution,
such as Shiva LanRover.
citect.ini file
A text file that stores information about how each computer (servers and control clients) operates in
the configuration and runtime environments. The Citect.INI file stores parameters specific to each
computer and therefore cannot be configured as part of the project.
CiUSAFE
CiUSAFE is the application used to manage the hardware key that authorizes use of your software
within the agreed limitations.
client
A computer that accesses shared network resources provided by another computer called a server. 's
client-server based architecture is designed to distribute the processing tasks and optimize performance.
cluster
A discrete group of alarms servers, trends servers, reports servers, and I/O servers. It would usually
also possess local control clients. For a plant comprising several individual sections or systems, multiple clusters can be used, one cluster for each section.
command
A command performs a particular task or series of tasks in your runtime system. A command is built
from Cicode and can consist of just a function or a statement.
communications link
A connection between computers and peripheral devices, enabling data transfer. A communications
link can be a network, a modem, or simply a cable. .
communications port
PC port used for sending and receiving serial data (also called serial or COM ports).
computer
A computer running . Other common industry terms for this computer could be node, machine or
workstation.

368

Glossary

Control Client
The interface between the runtime system and an operator. If you are using on a network, all computers (on the network) are control clients.
control inhibit mode
Prohibits writing to the Field VQT tag element of a tag extension.
custom alarm filter
Custom alarm filters provide a way to filter and display active alarms. Up to eight custom filter
strings can be assigned to a configured alarm. In conjunction with a user-defined query function, the
custom filters enable operators to identify and display active alarms of interest.

D
data acquisition board
Data acquisition boards communicate directly with field equipment (sensors, controllers, and so on).
You can install a data acquisition board in your server to directly access your field equipment.
data bits
Group of binary digits (bits) used to represent a single character of data in asynchronous transmission.
data communications equipment (DCE)
Devices that establish, maintain, and terminate a data transmission connection. Normally referred to
as a modem.
data terminal equipment (DTE)
Devices acting as data source, data sink, or both.
data transfer
Transfer of information from one location to another. The speed of data transfer is measured in bits
per second (bps).
data type (I/O device)
Type of I/O device variable. I/O devices may support several data types that are used to exchange
data with . You must specify the correct data type whenever I/O device variables are defined or referenced in your system.
DB-15
Often called a `D' type connector due to the vague D shape of the casing. Has 15 pins arranged in
two rows of 8 and 7 pins. While not as common as DB-9 or DB-25 they may be found on some computers and data communication equipment. Comes in both male (pins protruding) and female (pin
sockets) configurations.

369

Glossary

DB-25
Often called a `D' type connector due to the vague D shape of the casing. Has 25 pins arranged in
two rows of 13 and 12 pins. This kind of connection is a part of the standard for RS-232-D and is
found on many computers, modems and other data communication equipment. Comes in both male
(pins protruding) and female (pin sockets) configurations.
DB-9
Often called a `D' type connector due to the vague D shape of the casing. Has 9 pins arranged in two
rows of 5 and 4 pins. This kind of connection is common and is often used as the serial (com) port in
computers. Often used in modems and other data communication equipment. Comes in both male
(pins protruding) and female (pin sockets) configurations.
debug.log
The debug.log file stores information about an unexpected system shut down or other internal issues.
If an unexpected shutdown occurs, it will identify the version and path of each DLL being used at
the time.
deviation alarm
Triggered when the value of a variable deviates from a setpoint by a specified amount. The alarm
remains active until the value of the variable falls (or rises) to the value of the deadband. .
dial-back modem
Only returns calls from remote I/O devices.
dial-in modem
Only receives calls from remote I/O devices, identifies the caller, then hangs up immediately so it can
receive other calls. then returns the call using a dial-back modem.
dial-out modem
Makes calls to remote I/O devices in response to a request; e.g., scheduled, event-based, operator
request, and so on. Also returns calls from remote I/O devices.
Digiboard
A high-speed serial board manufactured by the Digiboard Corporation.
digital alarms
Triggered by a state change in a digital variable. Use these alarms when a process has only one of
two states. You can use either the on (1) state or off (0) state (of a digital variable) to trigger the alarm.
digital variable (I/O device)
Usually associated with discrete I/O in your I/O device, a digital variable can only exist in one of two
states: on (1) or off (0). Allowed values for the digital data type are therefore 0 or 1. Discrete inputs

370

Glossary

(such as limit switches, photoelectric cells, and emergency stop buttons) and discrete outputs are
stored as digital variables.
disk I/O device
A disk file that resides on the hard disk of a computer and emulates a real I/O device. The value of
each variable in the disk I/O device is stored on the computer hard disk. The disk I/O device is not
connected to any field equipment in the plant.
display period
Defines the rate at which trend data is displayed on the trend page.
distributed processing
For large applications with large amounts of data, you can distribute the data processing to reduce
the load on individual computers.
distributed servers
If your plant consists several sections or systems, you can assign a cluster to each individual section,
and then monitor all sections using one control client.Note: Don't use distributed servers to split up a
single section or process into discrete areas. A single cluster system with distributed processing
would be better used here since it would not be hampered by the maintenance overhead of a distributed server system (such as extra project compilations, and so on).
dither (imported bitmaps)
A method of approximating colors in imported or pasted bitmaps that involves combining pixels of
different or colors from a color palette.
domain name server (DNS)
Database server that translates URL names into IP addresses.
dot notation
Used for Internet addresses. Dot notation consists of four fields (called octets), each containing a decimal number between 0 and 255 and separated by a full stop (.).
driver
A driver is used to communicate with control and monitoring devices, allowing the run-time system
to interact directly with different types of equipment. Communication with an I/O device requires a
device driver which implements the communication protocol(s).
driver logs
Driver logs relate to the operation of a particular driver and are named accordingly. For example, the
OPC driver is logged in 'OPC.dat'.
duplex
The ability to send and receive data over the same communication line.

371

Glossary

dynamic data exchange (DDE)


A Microsoft Windows standard protocol set of messages and guidelines that enables communication
between Windows applications on the same Windows computer.
dynamic data exchange (DDE) Server
A Windows standard communication protocol supported by . The I/O server communicates with the
DDE server using the Windows standard DDE protocol. DDE servers are appropriate when data communication is not critical as DDE servers are not designed for high-speed data transfer.

E
empty value
Indicates that the variant has not yet been initialized (assigned a value). Variants that are empty
return a VarType of 0. Variables containing zero-length strings (" ") aren't empty, nor are numeric variables having a value of 0.
Ethernet
Widely used type of local area network based on the CSMA/CD bus access method (IEEE 802.3).
Event data displayed by time
As an alternative to viewing event trend data by event number, it is possible to see event trends
across a timeline. When event trends are shown by time, the trend graph includes a start and end
time and enables operators to see both the time of a triggered event, and the elapsed period between
events. This data can also be displayed on the same graph as a periodic trend.
event trend/SPC
To construct an event trend/SPC, takes a sample when a particular event is triggered (in the plant).
This sample is displayed in the window. The event must then reset and trigger again, before the next
sample is taken. Events are identified by the event number. .
expression
A statement (or group of statements) that returns a value. An expression can be a single variable, a
mathematical formula, or a function.

F
Field element
The latest tag field data received from a device.
file server
A computer with a large data storage capacity dedicated to file storage and accessed by other client
computers via a network. On larger networks, the file server runs a special network operating system.
On smaller installations, the file server may run a PC operating system supplemented by peer-to-peer
networking software.

372

Glossary

full duplex
Simultaneous two-way (in both directions) independent transmission (4 Wires).

G
generic protocol
A pseudo-protocol supported by disk I/O devices that provides a convenient way to represent disk
data. The generic protocol is not a real protocol (communicates with no physical I/O device).
Genie
If you have numerous devices of the same type (e.g., 100 centrifugal pumps), the display graphics for
each will behave in much the same way. Using Genies, you only have to configure common behavior once. The graphics can then be saved as a Genie and pasted once for each device.
global Cicode variable
Can be shared across all Cicode files in the system (as well as across include projects).
global client
A control client used to monitor information from several systems or sections (using clusters).
graphics bounding box
A faint (grayed) dotted rectangular box outline defining the exterior boundary region of a graphic
object. Only visible and active when the graphics object is selected and being resized. Contains sizing
handles in each corner and (if sized large enough to display) one in the centre of each side.
graphics page
A drawing (or image) that appears on a workstation to provide operators with control of a plant, and
display a visual representation of conditions within the plant.
group (of objects)
allows you to group multiple objects together. Each group has a unique set of properties, which determine the runtime behavior of the group as a whole.

H
half duplex
Transmission in either direction, but not simultaneously.
hardware alarm
A hardware alarm indicates that an error has been detected in your system. Typically displayed on a
dedicated hardware alarms page, this type of alarm may indicate that a loss of communication has
occurred, that Cicode can not execute, that a graphics page is not updating correctly, or that a server
has become inoperative. A description and error code are provided to help decipher the cause of the
problem.

373

Glossary

histogram
A bar graph that shows frequency of occurrence versus value. Quite often the data is fitted to a distribution such as a normal distribution. .

I
I/O Device
An item of equipment that communicates with plant-floor control or monitoring equipment (sensors,
controllers, and so on). The most common I/O devices are PLCs (programmable logic controllers);
however, supports a wide range of I/O devices, including loop controllers, bar code readers, scientific
analyzers, remote terminal units (RTUs), and distributed control systems (DCS). can communicate
with any I/O device that has a standard communications channel or data highway.
I/O device address
The (logical) location of the I/O device in the system. Each I/O device must have a unique address in
the system, unless the I/O device is defined in other servers (to provide redundancy). If redundancy
is used, the I/O device must then have the same I/O device name, number, and address for each
server.
I/O device variable
A unit of information used in . Variables are stored in memory registers in an I/O device. exchanges
information with an I/O device by reading and writing variables. refers to I/O device variables by
their register addresses. I/O devices usually support several types of variables; however, the most
common are digital variables and integer variables.
I/O server
A dedicated communications server that exchanges data between I/O devices and control clients. No
data processing is performed by the I/O server (except for its local display). Data is collected and
passed to the control clients for display, or to another server for further processing. All data sent to
an I/O device from any computer is also channelled through the I/O server. If data traffic is heavy,
you can use several I/O servers to balance the load.
imestamp (T)
The timestamp of when the element was last updated on a tag extension.
include file (.CII)
There is a maximum number of characters that you can type in a Command or Expression field
(usually 128). If you need to include many commands (or expressions) in a property field, you can
define a separate include file that contains commands or expressions. An include file is a separate
and individual ASCII text file containing only one sequence of commands or expressions that would
otherwise be too long or complicated to type into the command or expression field within . The
include file name is entered instead, and the whole file is activated when called.

374

Glossary

integer variable (Cicode)


A 4-byte (32-bit) data type allowing values from 2,147,483,648 to 2,147,483,647.
integer variable (I/O device)
A 2-byte data type, allowing values from -32,768 to 32,767, that is used to store numbers (such as temperature or pressure). Some I/O devices also support other numeric variables, such as real (floating
point) numbers, bytes, and binary-coded decimals.
Internet Display Client
Allows you to run projects over the Internet from a remote location. It is basically a "runtime-only"
version of : you can run your project from that computer, just as you would from any normal client.
interrupt
An external event indicating that the CPU should suspend its current task to service a designated
activity.
IP address
A unique logical address used by the Internet Protocol (IP). Contains a network and host ID. The format is called dotted decimal notation, and is written in the form: w.x.y.z.

K
Kernel
The Kernel allows you to perform low-level diagnostic and debugging operations for runtime analysis of your system. A set of diagnostic windows display low-level data structures, runtime databases, statistics, debug traces, network traffic, I/O device traffic and so on.
keyboard command
Consist of a key sequence that an operator enters on the keyboard, and an instruction (or series of
instructions) that executes when the key sequence is entered. Keyboard commands can be assigned to
an object or page, or they can be project-wide.
knowledge base
Provides high-level technical information beyond the scope of standard technical documentation that
is updated regularly and available at http://www.citect.com.
kurtosis
An index indicating the degree of peakedness of a frequency distribution (usually in relation to a normal distribution). Kurtosis < 3 indicates a thin distribution with a relatively high peak. Kurtosis > 3
indicates a distribution that is wide and flat topped.

375

Glossary

L
language database
When a project is compiled, creates a language database (dBASE III format) consisting of two fields:
native and local. Any text marked with a language change indicator is automatically entered in the
native field. You can then open the database and enter the translated text in the local field.
link
A copy of a library item, possessing the properties of the library original. Because it is linked, the
copy is updated whenever the original is changed.
local area network (LAN)
A system that connects computers to allow them to share information and hardware resources. With
real-time LAN communication, you can transfer data, messages, commands, status information, and
files easily between computers.
local Cicode variable
Only recognized by the function within which it is declared, and can only be used by that function.
Local variables must be declared before they can be used. Any variable defined within a function (i.e.,
after the function name) is a local variable, therefore no prefix is needed. Local variables are
destroyed when the function exits and take precedence over global and module variables.
local language
The language of the end user. Runtime display items such as alarm descriptions, button text, keyboard/alarm logs, graphic text, Cicode strings and so on can be displayed in the local language, even
though they may have been configured in the language of the developer (native language).
local variable
Local variables allow you to store data in memory when you start your runtime system. They are
created each time the system starts, and therefore do not retain their values when you shut down.
log files
Log files are a record of time-stamped system data that can be analyzed to determine the cause of a
problem. The available log files include syslog.dat, tracelog.dat, debug.log, kernel.dat, and dedicated
driver logs.
long BCD variable (I/O device)
A 4-byte (32-bit) data type, allowing values from 0 to 99,999,999. The four bytes are divided into eight
lots of four bits, with each lot of four bits representing a decimal number. For example the binary
number 0011 represents decimal 3. Thus the BCD 0011 0011 0011 0011 0011 0011 0011 0011 represents 33,333,333.

376

Glossary

long variable (I/O device)


A 4-byte (32-bit) data type allowing values from 2,147,483,648 to 2,147,483,647.
low and low low alarms
Defined by specifying the values of the variable that trigger each of these alarms. As a low alarm
must precede a low low alarm, the low alarm no longer exists when the low low alarm is triggered.
Note that the variable must rise above the deadband before the alarm becomes inactive. .

M
maximum request length
The maximum number of data bits that can be read from the I/O device in a single request. For example, if the maximum request length is 2048 bits, the maximum number of integers that can be read is:
2048/16 = 128.
Metadata
Metadata is a list of names with corresponding values that is attached to an objects animation point.
millisecond trending
Allows you to use a trends sample period of less than one second.
mimic
A visual representation of a production system using an organised set of graphical pages. .
minimum update rate
A pre-defined period of time after which tag update value notifications are sent to subscription
clients
module Cicode variable
Specific to the file in which the variable is declared. This means that it can be used by any function
in that file, but not by functions in other files. By default, Cicode variables are defined as module,
therefore prefixing is not required (though a prefix of MODULE could be added if desired). Module
variables should be declared at the start of the file.
multi-digital alarms
Use combinations of values from three digital variables to define eight states. For each state, you specify a description (e.g., healthy or stopped), and whether or not the state triggers an alarm.

N
native language
Generally the language of the project developer. Display items such as alarm descriptions, button
text, keyboard/alarm logs, graphic text, Cicode strings and so on can be configured in the native language, and displayed, at runtime, in the language of the end-user (local language).

377

Glossary

network
A group of computers and peripheral devices, connected through a communications link. Data and
services (e.g., printers, file servers, and modems) can be shared by computers on the network. A local
network of PCs is called a LAN.
network computer
A computer running that is connected to a LAN through a network adaptor card and network software. .
Network Dynamic Data Exchange (NetDDE)
Enables communication between Windows applications on separate computers connected across a
common network.
nodes
A structural anchor point for a graphic object, usually visible as a small square box superimposed
over a graphic. Nodes will be located separately at the start, at the end, and at every change in direction within a graphic object. .
normal distribution
Also known as a `bell' curve, the normal distribution is the best known and widely applicable distribution. The distribution is symmetrical and popularly represents the laws of chance. 68.27% of the
area lies between -1 sigma and +1 sigma, 95.45% between -2 sigma and+2 sigma, and 99.73%
between -3 sigma and +3 sigma. The values of skewness and kurtosis are used to provide quantitative measures for normality. Assuming that at least 20 samples are used to construct a distribution, a good rule of thumb is to accept the data as a normal distribution when, -1.0 = skewness =
1.0 2 = kurtosis = 4.
null value
Indicates that a variant contains no valid data. Variants that are null return a VarType of 1. Null is
not the same as empty, which indicates that a variant has not yet been initialized. It is also not the
same as a zero-length string (" "), which is sometimes referred to as a null string. Null is not equivalent to zero or blank. A value of null is not considered to be greater than, less than, or equivalent to
any other value, including another value of null. A boolean comparison using a null value will
return false.

O
object
Basic building blocks of a graphics page. Most objects possess properties that allow them to change
dynamically under user-definable runtime conditions allowing them to provide animated display of
conditions within the plant.

378

Glossary

object ID (OID)
An object ID associated with every tag in a project that uniquely identifies the tag for use by tagbased drivers, automatically generated at compile. It is used instead of the actual address of the register (which is what most other drivers use to read from and write to I/O devices).
object variable (Cicode)
An ActiveX control that can only be declared with local, module, or global scope.
open database connectivity (ODBC)
Allows applications to access data in database management systems using structured query language (SQL) to access data.
override mode
A state where an invalid tag quality value is overridden by a manually added value.

P
pack
Packing a database re-indexes database records and deletes records marked for deletion. If you edit
your databases externally to , you should pack the database afterwards.
page environment variable
A read-only variable associated with a particular page When you make the association, you name
the variable, and assign it a value. When the page is opened during runtime, creates the variable. Its
value can then be read. When the page is closed, the environment variable memory is freed (discarded).
parity
A communications error-checking procedure. The number of 1's must be the same (even or odd) for
each group of bits transmitted without error.
periodic trend
A trend that is sampled continuously at a specified period. You can also define a trigger (an event) to
stop and start the trend (when a specified condition occurs in the plant).
persistence cache
Cache data saved to a computer hard disk that allows an I/O server to be shut down and restarted
without having to re-dial each I/O device to get its current values. This cache consists of all the I/O
device's tag values.
PLC interface board
You can sometimes install a PLC interface board in your server. A proprietary interface board is
usually supplied by your PLC manufacturer, and you can connect it to a PLC or a PLC network. You
can only use proprietary interface boards with the same brand of PLC.

379

Glossary

point limit
An individual digital (or analog) variable read from an I/O device. only counts physical points (and
counts them only once, no matter how many times they are used). The point limit is the maximum
number of I/O device addresses that can be read and is specified by your license. When you run the
point count of your project is checked against the point limit specified by your Hardware Key.
port(s)
Provide the communication gateway to your I/O device(s).
primary Alarms Server
The server that normally processes alarms.
primary Reports Server
The server that normally processes reports.
primary Trends Server
The server that normally processes trends.
Privileges
Level of access applied to system elements within your project. A user assigned a role that possesses
the matching privilege can control it.
project
The elements of a monitoring and control system, such as graphics pages, objects, and so on. These
elements are stored in files of various types; for example, graphics files for graphics pages, databases
for configuration records, and so on. You use the compiler to compile the project into a runtime system.
properties, object
Describes the appearance of an object (size, location, color, and so on.) and its function (the command
or expression executed by the object, the privilege required to gain access to the object, and so on).
protocol
Messaging format consisting of a set of messages and guidelines used for communication between
the server and an I/O device. The communication protocol determines how and the I/O device communicate; the type of data to exchange; rules governing communication initiation and termination;
and error detection.
proxi/proxy server
Caches internet transactions to improve performance by reducing the average transaction times by
storing query and retrieved information for re-use when the same request is made again. When an
Internet display client (IDC) connects to a proxy server, that server provides the TCP/IP addresses necessary to access report server session information.

380

Glossary

PSTN
A public switched telephone network is the network of all the world's public switched telephone networks. It is now primarily digital and includes mobile as well as fixed telephones.

Q
qualified tag reference
Referencing tag data by using the tag name, element name and the item name.
Quality (Q)
The quality of the value of a tag extension.
QualityTimestamp (QT)
The timestamp of when the quality last changed on a tag extension

R
rate of change alarms
Triggered when the value of the variable changes faster than a specified rate. The alarm remains
active until the rate of change falls below the specified rate. Deadband does not apply to a rate of
change alarm.
real variable (Cicode)
Real (floating point) is a 4-byte (32-bit) data type allowing values from 3.4E38 to 3.4E38. Use a real
variable to store numbers that contain a decimal place.
real variable (I/O device)
Real (floating point) is a 4-byte (32-bit) data type, allowing values from 3.4E38 to 3.4E38. Use a real
variable to store numbers that contain a decimal place.
record name
Usually the primary property of a database record, referenced in system through its name. Database
record names must be unique for each type of database record. Sometimes you can use identical
names for different record types. However, to avoid confusion, you should use a unique name for
each database record in your application.When you specify a name for a database record, the name
must begin with an alphabetic character (A-Z, a-z) and cn only include alphanumeric characters (AZ, a-z, 0-9) and the underscore character (_). For example, "Pressure," "Motor_10," and "SV122_Open"
are all valid database record names. Each database record name can contain up to 16 characters.Database record names are not case-sensitive, so "MOTOR_1," "Motor_1" and "motor_1" are all
identical database record names. For this reason use a meaningful name for any database record as
well as the necessary naming conventions.

381

Glossary

redundancy
A method of using the hardware in a system such that if one component in the system becomes
inoperative, control of the system is maintained, and no data is lost.
remote communications
Interaction between two computers through a modem and telephone line.
remote terminal
A terminal remote from the computer that controls it. The computer and remote terminal communicate via a modem and telephone line.
report
A statement or account of plant-floor conditions. reports can be requested when required, on a periodic basis, or when an event occurs.
report format file
Controls the layout and content of reports. The format file is edited using a text editor and can be in
either ASCII or RTF format.
Reports Server
Controls report processing. You can request reports at any time or when specific events occur.
reserved words
Words that cannot be used as a name for any database record or Cicode function.
RJ11
A type of IDC plug commonly used in data communications. Recognizable as the style of data plug
used in phone line and handset connectors. RJ11 is a 6/4 plug with 6 contacts but only 4 loaded.
RJ12
A type of IDC plug commonly used in data communications. Recognizable as the style of data plug
used in phone line and handset connectors. RJ12 is a 6/6 plug with 6 contacts.
RJ45
A type of IDC plug commonly used in data communications. Recognizable as the style of data plug
used in phone line and handset connectors. RJ45 is often used with 10baseT and is an 6/8 plug with
8 contacts.
Roles
A defined set of permissions (privileges and areas) that are assigned to users.
RS-232
An industry standard for serial communication. The standard specifies the lines and signal characteristics that are used to control the serial transfer of data between devices.

382

Glossary

RS-422
An industry standard for serial communication. The standard specifies the lines and signal characteristics that are used to control the serial transfer of data between devices. RS-422 uses balanced
voltage interface circuits.
RS-485
An industry standard for serial communication. The standard specifies the lines and signal characteristics that are used to control the serial transfer of data between devices. RS-485 uses balanced
voltage interface circuits in multi-point systems.
runtime system
The system that controls and monitors your application, process, or plant. The runtime system is
sometimes called the Man-Machine Interface (MMI), and is compiled from a project.

S
scalable architecture
A system architecture that can be resized without having to modify existing system hardware or software. lets you re-allocate tasks as more computers are added, as well as distribute the processing
load.
schedule period
Determines how often the I/O server contacts a scheduled I/O device to read data from it. .
serial communication
Uses the communication port on your computer or a high speed serial board (or boards) installed
inside your computer.
server
A computer connected to an I/O device (or number of I/O devices). When is running, the server
exchanges data with the I/O device(s) and distributes information to the other control clients as
required. A local area network (LAN) computer that perform processing tasks or makes resources
available to other client computers. In , client-server architecture distributes processing tasks to optimize performance.
simplex transmission
Data transmission in one direction only.
skewness
An index indicating the degree of asymmetry of a frequency distribution (usually in relation to a normal distribution). When a distribution is skewed to the left (for example), then the tail is extended on
that side, and there is more data on the left side of the graph than would be expected from a normal

383

Glossary

distribution. Positive skew indicates the distribution's mean (and tail) is skewed to the right. Negative skew indicates the distribution's mean (and tail) is skewed to the left.
slider control
Allow an operator to change the value of an analog variable by dragging an object (or group) on the
graphics page. Sliders also move automatically to reflect the value of the variable tag.
soft PLC
A pure software (virtual) PLC created by software and existing only within the computer memory.
Usually provides a software interface for communication (READ and WRITE) operations to take
place with the soft PLC. Also known as a `virtual field unit' or `virtual I/O device'.
software protection
uses a hardware key that plugs into the printer port of your computer to protect against license
infringement. The hardware key contains the details of your user license. When you run , the point
count in your project is checked against the point limit specified in the hardware key.
staleness period
Represents the total number of seconds that will elapse after the last update before extended quality
of the tag element is set to Stale.
standby Alarms Server
The Server that processes alarms if the primary alarms server is unavailable.
standby Reports Server
The server that processes reports if the primary reports server is unavailable.
standby Trends Server
The server that processes trends if the primary trends server is unavailable.
stop bits
The number of bits that signals the end of a character in asynchronous transmission. The number is
usually 1 or 2. Stop bits are required in asynchronous transmissions because the irregular time gaps
between transmitted characters makes it impossible for the server or I/O device to determine when
the next character should arrive.
substatus value
The underlying details of a QUALITY tag.
Substitution
A Super Genie substitution is comprised of the data type (optional) and association that you use to
define an object or group of objects properties when creating a Super Genie.

384

Glossary

Super Genies
Dynamic pages (usually pop-ups), to which you pass information when the page displays at runtime. You can use Super Genies for pop-up type controllers (to control a process, or a single piece of
plant floor equipment).
symbol
An object (or group of objects) stored in a library for later retrieval and use. By storing common
objects in a library, you reduce the amount of disk space required to store your project, and reduce the
amount of memory required by the run-time system.
syslog.dat
Syslog.dat is the primary log file. It contains useful system information, from low-level driver traffic
and Kernel messages, to user defined messages. Trace options (except some CTAPI traces) are sent to
this file.

T
tag extension
Additional information for a tag that represents data as a collection of elements, and a collection of
items in a tag.
task
Includes operations such as I/O processing, alarm processing, display management, and Cicode
execution. Any individual `instance' of Cicode is also a `task'.
template
A base drawing or time-saving pattern used to shape a graphics page. Each template contains base
information for the page, such as borders and common control buttons. provides templates for all
common page types.
text box
When text is added to a graphics page, it is placed in a text box. A text box has a number of handles,
which can be used to manipulate the text object.
thread
Used to manage simultaneous execution of tasks in multitasking operating systems, enabling the
operating system to determine priorities and schedule CPU access.
timeout
The period of time during which a task must be completed. If the timeout period is reached before a
task completes, the task is terminated.

385

Glossary

time-stamped alarms
An alarm triggered by a state change in a digital variable. Time-stamped alarms have an associated
register in the I/O device to record the exact time when the alarm changes to active. Use timestamped alarms when you need to know the exact order in which alarms occur.
time-stamped analog alarms
Time stamped analog alarms work in the same way as analog alarms except that they are time
stamped (with the Alarm On and Alarm Off times) using millisecond precision from the time kept by
the field device (i.e. the RTU or PLC). The configuration details for time stamped analog alarms are
exactly the same as for analog alarms.
time-stamped digital alarms
Time stamped digital alarms work in the same way as digital alarms except that they are time
stamped (with the Alarm On and Alarm Off times) using millisecond precision from the time kept by
the field device (i.e. the RTU or PLC). The configuration details for time stamped digital alarms are
exactly the same as for digital alarms.
tool tip
A help message that displays in a pop-up window when an operator holds the mouse stationary
over an object.
touch (object at runtime)
An object is considered touched if an operator clicks it.
Touch command
Can be assigned to objects on graphics pages. Touch commands allow you to send commands to the
runtime system by clicking an object.
tracelog.dat
The tracelog.dat file contains managed code logging, mainly in relation to data subscriptions and
updates. Note that field traces and requests to native drivers go to the syslog.dat or a specific driver
log file.
trend
A graphical representation of the changing values of a plant-floor variable (or expression), or a
number of variables. .
trend line
The actual line on a trend that represents the changing values of a plant-floor variable (or expression). .
trend plot
Consists of a trend (or a number of trends), a title, a comment, scales, times and so on.

386

Glossary

Trends Server
Controls the accumulation and logging of trend information. This information provides a current and
historical view of the plant, and can be processed for display on a graphics page or printed in a
report.

U
UAC
User Account Control. Security technology introduced in Windows Vista to enable users to run with
standard user rights more easily. .
unqualified tag reference
Reference to tag data by using only the tag name.
unsigned integer variable (I/O device)
A 2-byte (16 bit) data type, representing an integer range from 0 to 65,535. This is supported for all
I/O devices that can use INT types. This means you can define any integer variable as an unsigned
integer to increase the positive range.
Users
A person or group of persons that require access to the runtime system

V
Valid element
The last field data which had Good quality in a tag extension.
Value (V)
The value of the extension of a tag.
ValueTimestamp (VT)
The timestamp of when the value last changed on a tag extension
variable type (Cicode)
The type of the variable (INT (32 bits), REAL (32 bits), STRING (256 bytes), OBJECT (32 bits)).
view-only client
A computer configured with manager-only access to the runtime system. No control of the system is
possible, but full access to data monitoring is permitted.
virtual
Behavioral identification rather than a physical one. For example, Windows 95 is a virtual desktop.

387

Glossary

W
wizard
A facility that simplifies an otherwise complex procedure by presenting the procedure as a series of
simple steps.

388

Index

Index
A
acknowledgement, alarm
Add Cursor command
Add New Pens dialog box
Add Pane command
Add Pen command
adding
panes
pens
toolbar commands
alarm acknowledgement
alarm label value
alarm pen types
alarm pens
alarm states
alarm types
AlarmType enumeration
analog pens
automation model
Autoscale Vertical Axis command
autoscaling
Autoscroll command
autoscrolling
axis
configuring
horizontal
vertical
AxisLabelType enumeration

298
313
317
342, 363
363
342
317
32, 353
298
315
299
297, 345
297
297
41
295
39
363
363
309
309
347
292
294
43

B
Back Half a Span command
Back One Span command
background color, configuring
boolean terms during searches

361
361
340, 342
317

C
columns, configuring Object View
command system
CommandExecuted event

354
37
37, 53

389

Index

commands
Add Cursor
Add Pane
Add Pen
adding new
Autoscale Vertical Axis
Autoscroll
Back Half a Span
Back One Span
Copy to Clipboard
Copy to File
Edit Span
Edit Vertical Scale
editing
export
Forward Half a Span
Forward One Span
general
Help
interface
Load View
Lock/Unlock Cursor Labels
Lock/Unlock Pens
Lock/Unlock Vertical Axis Scrolling
navigation
Print
Refresh Data
Remove Pane
Remove Pen
Reset to Default Span
Save View
Show Properties
Show/Hide Cursor
Show/Hide Cursor Labels
Show/Hide Points
Synchronize to Now
Toggle Auto-Scrolling
Toggle Box Zoom
Toggle Object View
Toggle Span Lock
Undo Last Zoom
view
zoom
Zoom in 50%

390

313
342, 363
363
32
363
309
361
361
332, 362
332
311, 360
312, 360
33
362
361
361
363
363
363
357, 359
315, 363
302-303, 363
363
361
363
363
363
319, 363
312, 360
357, 359
363
313, 363
315, 363
363
308, 361
309, 361
310, 360
325, 363
308, 361
309, 360
359
360
360

Index

Zoom In 50%
Zoom out 50%
Zoom Out 50%
compaction, data
comparison, trend
configuring
appearance of pens
axes
chart-wide properties
chart panes
columns in Object View
cursor labels
cursors
data connection
defaults
design time properties
general properties
gridlines
pen quality
refresh rate
report options
server paths
toolbars
connection, data
context menu. See right-click menu
Copy to Clipboard command
Copy to File command
copying data
Create method
creating custom commands
cursor labels
CursorMoved event
cursors
configuring
custom commands
custom commands, adding

309
360
309
290
303
343
347
338
342
354
350
351
349
351
31
340
346
348
340
329, 331
341
352
349
315
332, 362
332
332-333
37
37
313, 350
54
313
351
37
32

D
data
copying
exporting
data compaction
data connection, configuring
data request mode

332
332
290
349
349

391

Index

data request rate, configuring


date/time axis
daylight savings
Daylight Savings time
defaults, configuring
deleting
pens
design time properties, configuring
digital pens
display, time

340
292
306
292
351
319
31
296
292

E
Edit Command dialog box
Edit Span command
Edit Span dialog box
Edit Vertical Scale command
Edit Vertical Scale dialog box
editing commands
effect, halo
end time, specifying
enumerations, automation model
Error event
ErrorNotifyCode enumeration
execution result
export commands
exporting data

33
311, 360
311
312, 360
312
33
302
304
41
55
44
39
362
332

F
FileLocation enumeration
filtering pens
Fit to unit
fixed height for panes, specifying
Forward Half a Span command
Forward One Span command

45
317
307
342
361
361

G
general commands
general properties, configuring
GetCommandSystem() property
graphics page, inserting onto
gridlines

363
340
37
18
294, 346

H
halo effect
HatchStyle enumeration
Help command
HorizontalAxisChanged event

392

302
45
363
56

Index

I
IAlarmPen interface
IAlarmPen.AlarmType property
IAlarmPen.GetFillColor method
IAlarmPen.GetHatchColor method
IAlarmPen.GetHatchStyle method
IAlarmPen.LineColor property
IAlarmPen.LineWidth property
IAlarmPen.SetFillColor method
IAlarmPen.SetHatchColor method
IAlarmPen.SetHatchStyle method
IAnalogPen interface
IAnalogPen.LineColor property
IAnalogPen.LineInterpolation property
IAnalogPen.LineWidth property
ICommand interface
ICommand.ButtonType property
ICommand.CommandId property
ICommand.Enabled property
ICommand.Pressed property
ICommand.Privilege property
ICommand.Tooltip property
ICommandSystem interface
ICommandSystem._NewEnum property
ICommandSystem.Count property
ICommandSystem.Create method
ICommandSystem.Execute method
ICommandSystem.Item property
ICommandSystem.ItemById property
ICommandSystem.Remove method
icons, custom
ICursors interface
ICursors._NewEnum property
ICursors.Count property
ICursors.Create method
ICursors.Item property
ICursors.ItemByName property
ICursors.RemoveAll method
IDigitalPen interface
IDigitalPen.Fill property
IDigitalPen.FillColor property
IDigitalPen.LineColor property
IDigitalPen.LineWidth property

69
70
71
72
73
74
75
76
77
78
78
79
80
81
82
83
84
85
86
87
83
88
88
89
90
91
92
93
93
38
94
95
95
96
97
98
99
99
100
101
102
103

393

Index

inherit security settings


Insert ActiveX dialog box
interface commands
interfaces, automation model
interpolation
IObjectView interface
IObjectView.BackgroundColor property
IObjectView.Columns property
IObjectView.ForeColor property
IObjectView.Height property
IObjectView.Items property
IObjectView.SelectedItem property
IObjectView.Visible property
IObjectViewColumn interface
IObjectViewColumn.Name property
IObjectViewColumn.Text property
IObjectViewColumn.Width property
IObjectViewColumns interface
IObjectViewColumns._NewEnum property
IObjectViewColumns.Add method
IObjectViewColumns.Count property
IObjectViewColumns.Hide method
IObjectViewColumns.Item property
IObjectViewColumns.ItemByName property
IObjectViewColumns.Remove method
IObjectViewColumns.Show method
IObjectViewItem interface
IObjectViewItem.Expanded property
IObjectViewItem.GetField method
IObjectViewItem.Items property
IObjectViewItem.PutField method
IObjectViewItem.Tag property
IObjectViewItems interface
IObjectViewItems._NewEnum property
IObjectViewItems.Count property
IObjectViewItems.Item property
IObjectViewPenItem interface
IObjectViewPenItem.BlockColor property
IObjectViewPenItem.Checked property
IObjectViewPenItem.Selected property
IPane interface
IPane.BackgroundColor property
IPane.Collection property
IPane.Delete method

394

340
18
363
68
296, 344
104
105
105
106
108
108
109
110
111
111
112
113
113
114
115
116
117
117
118
119
120
121
122
123
124
125
126
126
127
127
128
129
129
131
131
132
133
134
134

Index

IPane.FixedHeight property
IPane.Height property
IPane.Name property
IPane.Pens property
IPanes interface
IPanes._NewEnum property
IPanes.Count property
IPanes.Create method
IPanes.Item property
IPanes.ItemByName property
IPanes.RemoveAll method
IPen interface
IPen.AddSample method
IPen.AxisBackgroundColor property
IPen.BlockRepaint property
IPen.Clear method
IPen.Collection property
IPen.DataPoint property
IPen.DataServer property
IPen.Delete method
IPen.GetDefaultSpan method
IPen.GetHorizontalAxisTimeSpan method
IPen.GetInformation method
IPen.GetStatistic method
IPen.GetVerticalAxisSpan method
IPen.GoToNow method
IPen.Height property
IPen.HorizontalAxisColor property
IPen.HorizontalAxisResize property
IPen.HorizontalAxisScroll property
IPen.HorizontalAxisWidth property
IPen.HorizontalGridlinesColor property
IPen.HorizontalGridlinesStyle property
IPen.HorizontalGridlinesWidth property
IPen.HorizontalMinorGridlinesColor property
IPen.HorizontalMinorGridlinesStyle property
IPen.HorizontalScrollBy method
IPen.HorizontalZoom method
IPen.InstantTrend property
IPen.IsDeleted property
IPen.IsSelected property
IPen.LocalTime property
IPen.Name property
IPen.PointsVisible property

136
137
138
139
139
139
140
141
142
143
144
145
147
148
149
149
150
151
152
153
155
156
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
173
174
175
176
177
178

395

Index

IPen.PutHorizontalAxisTimeSpan method
IPen.PutVerticalAxisSpan method
IPen.RefreshData method
IPen.RequestMode property
IPen.ResetToDefaultSpan method
IPen.SamplePeriod property
IPen.Select method
IPen.SetDefaultSpan method
IPen.SetQualityCompactionPointType method
IPen.SetQualityLineStyle method
IPen.SetVerticalAxisLabelValue method
IPen.Stacked property
IPen.TrendCursorLabelFillColor property
IPen.TrendCursorLabelLineColor property
IPen.TrendCursorLabelTextColor property
IPen.VerticalAxisAutoscale property
IPen.VerticalAxisColor property
IPen.VerticalAxisLabelType property
IPen.VerticalAxisResize property
IPen.VerticalAxisScroll property
IPen.VerticalAxisWidth property
IPen.VerticalGridlinesColor property
IPen.VerticalGridlinesStyle property
IPen.VerticalGridlinesWidth property
IPen.VerticalMinorGridlinesColor property
IPen.VerticalMinorGridlinesStyle property
IPen.VerticalScrollBy method
IPen.VerticalZoom method
IPen.Visible property
IPens interface
IPens._NewEnum property
IPens.Count property
IPens.Create method
IPens.Item property
IPens.ItemByName property
IPens.Pane property
IPens.RemoveAll method
IProcessAnalyst interface
IProcessAnalyst.AdminPrivilegeLevel property
IProcessAnalyst.AutoScroll property
IProcessAnalyst.BackgroundColor property
IProcessAnalyst.BlockUpdates method
IProcessAnalyst.CommandSystem property
IProcessAnalyst.ContextMenu property

396

180
181
181
183
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
207
208
209
210
211
212
212
213
37, 213
228
229
230
215
231
232

Index

IProcessAnalyst.CopyToClipboard method
IProcessAnalyst.CopyToFile method
IProcessAnalyst.Cursors property
IProcessAnalyst.DataRequestRate property
IProcessAnalyst.DisplayRefreshRate property
IProcessAnalyst.Language property
IProcessAnalyst.LastSelectedPen property
IProcessAnalyst.LoadFromFile method
IProcessAnalyst.LockedPens property
IProcessAnalyst.ObjectView property
IProcessAnalyst.Panes property
IProcessAnalyst.PrimaryPath property
IProcessAnalyst.PrintAll method
IProcessAnalyst.SaveToFile method
IProcessAnalyst.SecondaryPath property
IProcessAnalyst.ShowProperties method
IProcessAnalyst.SubscribeForPropertyChange method
IProcessAnalyst.SynchroniseToNow method
IProcessAnalyst.Toolbars property
IProcessAnalyst.UnBlockUpdates method
IProcessAnalyst.UnsubscribePropertyChange method
IProcessAnalyst.WritePrivilegeLevel property
IProcessAnalyst.ZoomMode property
IToolbar interface
IToolbar.Buttons property
IToolbar.Visible property
IToolbarButton interface
IToolbarButton.CommandId property
IToolbarButtons interface
IToolbarButtons._NewEnum property
IToolbarButtons.Add method
IToolbarButtons.Count property
IToolbarButtons.Item property
IToolbarButtons.Remove method
IToolbarButtons.RemoveAll method
IToolbars interface
IToolbars._NewEnum property
IToolbars.Count property
IToolbars.Item property
ITrendCursor interface
ITrendCursor.Collection property
ITrendCursor.Color property
ITrendCursor.Delete method
ITrendCursor.GetValue method

217
218
232
234
235
236
237
220
238
241
242
243
221
222
244
223
225
225
245
216
227
246
247
247
248
249
252
252
253
253
254
255
256
257
257
249
251
251
250
258
259
260
260
262

397

Index

ITrendCursor.LabelsLocked property
ITrendCursor.Name property
ITrendCursor.PenLabelHeight property
ITrendCursor.PenLabelVisible property
ITrendCursor.PenLabelWidth property
ITrendCursor.PenLabelX property
ITrendCursor.PenLabelY property
ITrendCursor.Position property
ITrendCursor.Visible property
ITrendCursor.Width property

263
264
265
266
267
268
269
270
271
272

L
label value, alarm
legends, report
line styles
LineStyle enumeration
LineType enumeration
Load dialog box
Load View command
loading views
Lock pens check box
Lock/Unlock Cursor Labels
Lock/Unlock Cursor Labels command
Lock/Unlock Pens command
Lock/Unlock Vertical Axis Scrolling command
locked pens

315
329
291
46
47
357
357, 359
357
340
363
315
302-303, 363
363
302-303

M
main page (Properties dialog)
main toolbar
menu, right-click
mode, request
model, automation
mouse, using for interaction
MouseClick event
MouseDoubleClick event
multi-language support
multiple samples

336
288
315
290
39
316
56
57
20
290

N
navigating time
navigation commands
navigation toolbar
New Command dialog box
Now indicator
number of samples

398

308
361
304
32
293
340

Index

O
Object View
basic functions
configuring columns
creating columns
default columns for
editing columns
Object View (Properties dialog)
OVColumnAdded event
OVColumnRemoved event
overlaying pens
OVItemAdded event
OVItemChecked event
OVItemRemoved event
OVItemSelected event

324
325
354
34
324
34
337
58
59
295
59
60
61
62

P
panes
adding
configuring
paths, server, configuring
Pen Details box
PenCreated event
PenDeleted event
PenNameMode enumeration
PenRenamed event
pens
adding
alarm
analog
appearance
axes, configuring
deleting
digital
filtering
gridlines, configuring
locked
overlaying
quality, configuring
selecting
stacking
unlocked
viewing details
PenSelectionChanged event

342
342
341
320
62
63
47
64
317
297
295
343
347
319
296
317
346
302-303
295
348
302
295
302-303
320
65

399

Index

PenType enumeration
permissions
persistence
point styles
pointer, mouse
PointType enumeration
primary file server
Print command
Print dialog box
printing reports
privilege level, configuring
Process Analyst button
Properties dialog box
property tree
PropertyChanged event

48
18
38
290
316
49
341
363
329
328
340
18
335
336
66

Q
quality
configuring pen
QualityCompactionType enumeration
QualityType enumeration

348
49
50

R
Refresh Data command
refresh rate, configuring
Remove Pane command
Remove Pen command
removing
chart panes
toolbar commands
report legends
report options, configuring
reports
configuring
printing
request mode, data
RequestMode enumeration
Reset to Default Span command
result, execution
right-click menu

363
340
363
319, 363
342
353
329
329, 331
328
329
328
290, 349
51
312, 360
39
315, 337

S
samples, number of
Save Process Analyst View dialog box
Save View command
saving views

400

340
357
357, 359
357

Index

scaling
scrolling
security
selecting
pens
time span
server paths, configuring
Shift by unit
Show Properties command
Show/Hide Cursor command
Show/Hide Cursor Labels command
Show/Hide Points command
Span Picker
stacked pens
standby file server
start time, specifying
states, alarm
statistical analysis options (reports)
stepped interpolation
straight interpolation
styles
line
point
Synchronize to Now command
system, command

303
303
18
302
307
341
307
363
313, 363
315, 363
363
307
295
341
304
297
329
296, 344
296, 344
291
290
308, 361
37

T
tag properties, viewing
time display
time format
time span
editing
term defined
time, navigating
Toggle Auto-scrolling command
Toggle Auto-Scrolling command
Toggle Box Zoom command
Toggle Object View command
Toggle Span Lock command
toolbar, navigation
ToolbarButtonType enumeration
toolbars
adding commands to
changing order of commands

320
292
304
311
307
308
309
361
310, 360
325, 363
308, 361
304
51
353
353

401

Index

configuring
removing commands from
toolbars (Properties dialog)
Tooltip text
tree, property
types, alarm
types, alarm pen

352
353
337
32
336
297
299

U
Undo Last Zoom command
universal time coordinate (UTC) format
unlocked pens
unstacked pens
UpdateCommand event
Using Instant Trends with Process Analyst

309, 360
347
302-303
295
38, 67
320

V
value, alarm label
variable height for panes, specifying
vertical (value) axis
VerticalAxisChanged event
view commands
viewing
pen details
views
loading
saving

315
342
294
67
359
320
356
357
357

Z
zoom commands
Zoom in 50% command
Zoom In 50% command
Zoom out 50% command
Zoom Out 50% command

402

360
360
309
360
309

Das könnte Ihnen auch gefallen