Screen Painter Specifications

Several basic concepts have changed in the newer version of Screen Painter. The Screen Painter application can no longer retrieve information about forms from those forms at runtime as it is no longer an integrated part of OPERA. As a standalone application, available only with the Thick Client, Screen Painter can rely only on information stored in the database.

Note: Due to those design differences, forms in Screen Painter will always look slightly different from the forms in the actual OPERA Application. Changes on forms are not immediately reflected in the new Screen Painter, and depending on the change several (new) tables may need to be updated. For the purpose of the Screen Painting application not every function is keyboard accessible.

Data Extraction Prevention

Data Execution Prevention (DEP) is a set of hardware and software technologies that perform additional checks on memory to help prevent malicious code from running on a system. The primary benefit of DEP is to help prevent code execution from data pages. Typically, code is not executed from the default heap and the stack. Hardware-enforced DEP detects code that is running from these locations and raises an exception when execution occurs. Software-enforced DEP can help prevent malicious code from taking advantage of exception-handling mechanisms in Windows. Screen Painter can be set to bypass DEP (See Data Extraction Prevention for details).

Technical Overview

Screen Painter requires Oracle 8.1.7.x client installed and a valid connection to the Database the PMS schema resides on. To support form trigger manipulation the forms compiler (currently needs to be installed on that computer as well.

It is recommended to configure the NT/Win2000 user account with permissions to update the registry.

Note: A mouse or other pointing device is required, some of the functions are not keyboard accessible. The new Screen Painter cannot be invoked from OPERA Thin Client. Any change made in Screen Painter is reflected on the actual form only after the form is closed and reopened.

Whenever the Screen Painter is started it will first query the database API version. If the API (package) version does not match, the application cannot continue and will terminate at this point. In this case the Database and/or Client need to be updated.

Once successfully connected the application will query the SCR_PAINT_FORMMODES table to retrieve information on all forms that should be displayed as a selection for screen painting (including supported modes).

User Selects Form/FormMode

Using the internal ID (here PROFILE 0) the Screen Painter loads all related Canvases and updates the Designer Window with all visible canvases.

Once the canvases are loaded, all the visible elements such as fields and labels are loaded from DYNAMIC_FIELDS and painted on the respective canvases.

To support the required functionality three tables have been added:

If you select a Form/Mode, the Screen Painter first retrieves the canvases that need to be displayed and initializes the Designer window with all the visible canvases. If a canvas resides on a popup window this canvas is shown on a separate tab on the Designer window.

Note: The Forms extractor tool will generate scripts that update DYNAMIC_FIELDS, DYNAMIC_FIELDS_SID and SCR_PAINT_CANVASES with any change released in a new build/patch. The extractor does not handle new created canvases. If a new canvas was added and needs to be screen paintable then the insert script must be built manually.

Context Menus

Screen Painter makes extensive use of context menus. Right mouse button clicking on a canvas in Designer, for example, displays a popup menu with available functions; right mouse button clicking on an active/selected element displays the property dialog.

Screen Painter will "remember" the position of all its windows as long as the logged on user has write permissions to the ..\micros\opera\tools) directory where the screen painter executable is located.

For this application a screen resolution of 1024 x 768 or higher is recommended.

Configuration and Updates


Elements that cannot be changed, usually function buttons, are identified right now by the following criteria.

Configuration Tables

Form and Form-Mode Configuration

The new Screen painter relies on information in SCR_PAINT_FORMMODES to display forms and form modes that are paintable. If a form supports multiple modes then for each of those modes all required canvases have to be defined (see table scr paint canvases).

Note: If a form or a form mode is added or deleted this table needs to be updated accordingly.

Table Column



Name of the actual form


Form mode if supported


Internal form id linked to scr paint canvases - usually form name +  n where n is 0,1,& depending on the number of modes that are defined for this form


Description of the form - displayed in the main form


Description of the form mode


Indicates to which functionality group the form belongs - SC, PMS


Flag to indicate if a license check is enforced


Grouping indicator to group multiple form and form modes into one display category (PROFILE for example)


Sort order within the display mode - for display


Sort order within a form mode - for display


Show multi select box to allow save of changes for multiple form / form modes (RESERVATIONS)


Underlying view/table - used for LOV lookup


Display option only if license for application is active

Canvas Configuration

The new Screen painter relies on information in SCR_PAINT_CANVASES to display canvases on the designer window.

Note: If a canvas is removed, added or changed (in size) this table needs to be update accordingly.

Table Column



Internal form id - linked with scr paint formmodes


Name of the canvas as in the actual form


Name of the parent canvas (that is the canvas this canvas resides on) - if the parent canvas is read only then all contained canvases are as well!


Coordinates of top left corner in pixels (relative to parent canvas if defined)


Height of the canvas in pixels


Width of the canvas in pixels


Indicates if and how the canvas should be displayed, supported values are SHOW, EDIT, HIDDEN and the combination SHOW,EDIT see below for details


Indicates if the canvas is to be placed on a separate pop up or tab sheet


Information on non paintable areas on otherwise paintable canvases, special graphical elements, etc.

Display Model

Canvases that cannot be displayed are indicated with a value of "SHOW" in scr paint canvases>display mode, other values and value combinations are "EDIT", "SHOW, EDIT", "HIDDEN" with:

Definition of Special Areas/Rectangular Graphical Elements in "Appearance"

In the Appearance field, special areas or graphical elements can be defined for each canvas. Each area-element contains of the following:

Appearance definition ::= <area element>(;<area element> &)

Area element ::= <area token>(,<area token> &)

Area Token ::= [ integer type ('X1', 'Y1', 'X2', 'Y2', 'LWIDTH', 'COLOR'), char type('SOLID', 'NAVIGABLE')]

Refer also to the Special Options and Canvas Editor sections in this topic.

Example: x1=10,y1=10,x2=100,y2=100,lwidth=1,color=$00C0C0C0,solid=n,navigable=n this will create a pattern filled non navigable (non paintable) area in a dark gray color.

Note: Canvas definitions and special "appearance" elements may need to get updated with each form change in the OPERA application. Those elements are defined to enhance the visual representation of the Designer window and are not required for the Screen Painter to function correctly.

Dynamic Fields and Dynamic Fields SID Configuration

The new Screen painter relies on information in DYNAMIC_FIELDS and DYNAMIC_FIELDS_SID to display fields on the designer window.

Table Column



Stores the modes of each form


Status possible values - AVAIL - means the UserDefinable field is available to create a new field in the form, CHANGED - means properties of this field are changed, NULL - means the field remains as it is


Related to Navigation of the Items in the Screen. Next Navigation Item


Related to Navigation of the Items in the Screen. Previous navigation item


Primary Key for this table. Sequence no. dynamic_fields_seqno is used to fill this value


Name of the form which is being screen painted


Item Block name


Item name in the form which is being screen painted


X position of the item at which it is displayed


Y position of the item at which it is displayed


Height of the item displayed on the screen


Displayed Item width on the screen in that particular mode


Possible Values Y - displayed , N - not displayed in that form mode


Possible Values Y - Navigable , N - not navigable in that form mode


Visual Attribute group name assigned to that item. group contains details related to visual attributes like FONT, COLOR, FONT SIZE, etc.


Table column name if that item is a Database column value is null if that is any temporary item in the form


Pre-Text-Item trigger PL/SQL code of that particular item to be fired. This code is entered by the user dynamically at runtime using ScreenPainter features


When-Validate-Item-trigger PL/SQL code of that particular item to be fired. This code is entered dynamically at runtime using ScreenPainter features. Fires when the user enters some value into a field and moves to next item


POST-Text-Item Trigger PL/SQL code of that particular item to be fired. This code is entered by the user dynamically at runtime using Screenpainter features. Fires when the user navigates to this field on the screen and then uses TAB to move to the next item even though he doesn't enter any value for this field


Exclusively for PRFORM00. Type of the profile I-INDIVIDUAL SSource G-Group T-Travel Agent C-Company


Initial Value of the item defined in the form. For Display Items and Buttons value label is saved. For few buttons value of the item name is saved for which this button acts as a list button to show an LOV


Tab order in the screen


If the item is a TEXT ITEM and has an LOV attached then the SQL statement for that LOV is stored in this field. Only for UDF user definable fields


Purpose of the UDF created


Name of the canvas on which this field is displayed


If the canvas is a tabbed canvas then the name of the tab on which this item is placed


Allowable values Y column is mandatory and N column may be null


Type of the item DISPLAY ITEM - LabelTEXT ITEM - Can store value if editable,navigable.BUTTON - Push ButtonCHECK BOX IMAGE - For displayLIST ITEM - field with list of values


Dynamic_Fields_ID of the actual item is stored in this new record for the same item if that item is changed in current form mode for back tracking to find out the actual item in null mode.


Item Prompt




Bubble Help (if applicable) for the item


Build / Revision of item created


Length of the Item


Type of the item (Varchar2, Number, Date)


Parent Item Information


Should UDF be validated across an LOV


Is UDF Multi select LOV (Y,N)


Indicates if the value is a numeric field and if it should be formatted with an amount format


Property this record belongs to


Links to Field ID in dynamic_fields_sid / Used to restore original values in multi property environment


Screen Painter flags to indicate whether an item is changeable/movable, etc.


Prompt Visual Attribute


Timestamp of last extraction

Other Database Information

The Visual Attribute Sets used in forms need to be defined to be available in the new Screen Painter. This information is stored in table sp syntax.

Table Column



Primary key. System Generated. Gets value from sequence number SP_SYNTAX_ID


Explanation of the Syntax Value


Types of Syntax: 1. FIELD - Form fields of PROFILE and RESERVATION 2. OPERATORS - <,>,>=,...etc. 3. BUILT - Functions, Procedures calls 4. EXAMPLE - Examples of how to use the built-ins, operators


Actual Syntax value


Internal field used to store indication of what that field belongs to, etc., with keywords required for query in the form

For visual attributes the Comments column contains a visual attribute definition

Visual attribute definition ::= <attribute element>(;< attribute element> &)

Attribute element ::= <attribute token>=<value>


 NAME: name of the attribute set (same name as in forms!)

 DESC: Description (shown in pick box)


Database Packages

At startup Screen Painter will check the version of the database package, and only if the version matches the application will it continue. The new Screen Painter application also has all required SID data included in the executable file. To force an update of scr paint formmodes and/or scr paint canvases, delete all records from those tables and start the Screen Painter. The application will insert all the required rows. This should not be required.

Special Options

When the program is started with the command line switch "debug," additional options for testing and debugging purposes are available.

Extended Context-Menu in Designer

Edit Canvases: Allows you to review and edit details of the Canvas Configuration. It also allows you to generate and update scripts and to update the current configuration.

Changes/Undo List: Tracks all changes and displays a list of all changes currently in the undo buffer, mainly for debugging purposes.

Canvas Editor

This functionality is provided only for internal use. The forms extractor will update all positional information necessary from the actual form. The forms extractor does not update information on

You can use the Canvas Editor to:

Position: Define the position of a canvas relative to the parent/containing canvas (if one is defined - otherwise relative to the window/form).

Properties: Set properties like Visible and Enabled, Visible and Enabled: a canvas is screen paintable, Visible and not Enabled: a canvas is displayed but cannot be painted.

Protected Areas: Use only on visible canvases. Used to define special graphical elements to enhance the visual image on the designer and/or to protect areas from screen painting on otherwise paintable canvases. Do not use protected areas to disable complete canvases - use the DISPLAY MODE = 'SHOW' instead.

Note: To make changes permanent you have to generate the update script and run it from SQL-Plus, SQL-Navigator or directly from the Canvas Editor. If there are multiple form- modes defined, you will need to repeat this for ALL MODES!

Debug Information

When the Debug functionality is active, then the Settings/Debug Information can be viewed by the user.


Show Timings

Selecting the Show Timings button displays information pertaining to the user and parameters that are being used. The following displays a breakdown of the supported parameters:

USER=<connect string>  or  URL for screen painter, has to start with HTTP://
SCHEMAID  references the internal ID for the app server login (most likely SCHEMA_0 "Production")
APPUSRPASS  are optional if not specified the program will assume NA_REPORTS
APPUSER=<opera application user id>
RESORT=<opera resort id>
FORMSCOMP=<forms compiler to use>
PLL=<screen painting pll to recompile>
DEBUG  <run in debug mode>
DUPROWS  <check and remove duplicate rows>

App Server Log

Selecting the App Server Log button displays all of the past activity that has taken place on the application server. To delete all of the information, just select the Clear Log check box and all of the activity information is erased.

Show Me

Adding/Modifying New UDF Field

See Also