Graphical Screens ActiveX Component
This section describes how graphical screens are processed when your application is executing. See Graphical Screen Designer for editing graphical screens and Screen Converter for converting 3.21 screens to 4.01.
VIP 4.01 includes an ActiveX control (ScrControl.ocx) that both generates default graphical screens and interfaces with the VIP GUI server for processing your screens at run time. If a graphical screen does not exist on the workstation or if the workstation screen definition last change date and time do not match the last change date and time of the screen definition on the host, a default graphical screen will be generated. A default screen definition is composed of two files:
The naming convention for both these file types is the 'screen name - language code - last change date and time (from the host).
If you are using your graphical screens generated in VIP 3.21 (see Screen Converter), you might find that these are being replaced by new default screens. Since the 3.21 graphical screens would of been generated some time ago, the date stamp from the host might not match the date stamp on the workstation, causing VIP to generate a new screen. At this time there is little that can be done to aid in this. However if you can identify which character screens have not changed significantly (no data names added or deleted) you can rename the graphical screen .msg and .frm files on the workstation to match the last change date and time in the character screen definition. If you do this, and the screen definitions are not in sync, VIP will work properly.
The default screen is generated based on the character screen definition.The default screen template and the screen filter file provide you with tools to control the look of the default screens generated by the screen control. If you are use to working with screens in 3.21, you will notice a difference in 4.01 where the graphical screen more closely resemble its character screen counter part. In addition, no grid is applied when generating the default screen in 4.01. See Graphic Screen Editor, Snap To Grid and Align.
The default font is the Tbred font. This can be changed in the WorkStation Manager Options Tab.
Default Line Offset screens are now being generated, eliminating the need to present line offset screens as grids. The graphical line offset screens will resemble your character based line offset screens.
To support clicking the mouse on a row or column in a line offset screen, some special functionality has been added for VIP 4.01. The following is an excerpt from an internal document describing special F10 GOTO logic for graphical line offset screens.
Standard Graphical ScreensOn the host side, after the standard input is an additional input that gets executed only if graphical screens are enabled and initial input was terminated with an F10.
The first input always receives the field contents and a <F10>.
If the F10 came from either the keyboard or the toolbar, VIP will also send a field number 0 + <CR>. The F10 global is then populated with 0 (field number 0). Internally we use this to know that normal F10 processing should be executed.
If the user clicked on a field, VIP will send to the host the field number + <CR>. The F10 global is then populated with that field number. Internally we use this to know that special F10 processing should be executed. We then do a F10 GOTO to the requested field number.Line Offset Graphical Screens
The application developer must code to handle any special F10 line offset logic in their post process routines. The VIP has been modified to support this, with the addition of a new message type, the XG15. This is used by the application programmer to tell VIP if a graphical line offset screen is being processed and if VIP should return the ROW,COL back to the host.
If the user clicks on a field and VIP had previously received an XG15 "on", VIP will send back to the host the ROW,COL. The F10 global, CGV("F10"), is then populated with the ROW,COL. Internally we use this to know that we should NOT perform standard line offset processing since the F10 global does not contain field number 0. The F10 global will pass through to the applications post process routine. The post process routine should scan the F10 global variable for the presence of a comma (","). This indicates that the F10 global contains ROW,COL because the user has clicked on a field in a line offset graphical screen. It is now their responsibility to process that F10 appropriately.
If the user clicks on a field and VIP had NOT previously received an XG15 "on" , processing will continue exactly as described above for standard screens. There is no difference between standard graphical screens and line offset screens.
If the F10 came from either the keyboard or the toolbar, things work exactly as described above for standard screens. There is no difference between standard graphical screens and line offset screens in this case.
The following enables line offset F10 processing by the VIP GUI Server
CALL "VIPCOM", "XG151"
The following disables line offset F10 processing by the VIP GUI Server
Templates allow you to achieve a standard look to all your graphical screen. A template allows you to define the various properties such as font style, font size, font color, font bold, background color, etc. to be applied to the objects on a screen. Different properties can be set for: data descriptions, input fields, formula fields, header panel, data panel and file (footer) panel. In addition, the template allows you to add the IDOL-IV special screen controls (/D, /d, /I etc), command buttons, and images to all your screens.
Templates are maintained by the Graphic Screen Designer. A default template is distributed with VIP and placed in <vip_install_path>\Tsi\ObjectCache\Screenst. When a default template is specified in the WorkStation Manager Options Tab it will be applied when the default screen is created. This means if you change your template or create another template, the new template will not be applied to your screens when the default screen already exists on your workstation. If this is a requirement, it can be accomplished in one of two ways:
The screen filter allows you to remove or replace characters in the character screen definition prior to generating a default graphical screen. This can be used to remove the "...:" typically found in character screen designs. The screen filter can also be used to clear entire rows from the character screen when generating a default graphical screen. This is useful if in your graphical screen (through the use of a template) you want the screen codes such as the installation name, date, operator code, etc. to appear in a header panel and do not want them in the body of the screen. The screen filter can clear these rows of text in the character screen for the purposes of generating the default graphical screen.
A default screen filter is distributed with VIP and placed in <vip_install_path>\Tsi\Scripts\Scrfilter.txt. This file contains the following options (explained later in this document). To disable the screen filter simply rename or erase Scrfilter.txt.
A screen filter file must be located in the <vip_install_path>\Tsi\Scripts directory. The screen filter file does not have to be named Scrfilter.txt however at this time there is no facility to specify (in the WorkStation Manager) a screen filter file name. To accomplish this you must edit the Tbred.ini file using any text file editor such as Notepad. In your Tbred.ini file you will find the following entry, simply replace Scrfilter.txt with the desired screen filter file name.
If you intend to use screen filters, please take the time to read the following technical write up. This is an excerpt from an internal document describing screen filters.
Screen filters allow Vip4 to modify the text portion of a screen before it is passed to the screen control. The type of editing to be done to the screen text is controlled by a screen filter file. Screen filters are optional. If a screen filter file does not exist, no screen text editing is performed. Screen filters are global. That is, they apply to all screens. There is currently no provision to apply a screen filter to individual screens. Once a screens text is altered by a screen filter, the text is saved on the workstation and reused each time the screen is displayed on the workstation. Any overhead imposed by a screen filter is incurred one time when the initial screen is loaded (created).
Building a Screen Filter File
A screen filter file is a text file that can be created with Notepad or any text editor. The Windows INI API calls are used to read the screen file, so the file must conform to the rules for a standard INI file. Comment lines begin with ; or "#" and may appear anywhere in the file. The first non-comment line must be: [LABELEDIT]
Specifying a delimiter
A delimiter is a single character that is used to separate label text. In all most all cases this should be a space. To specify the delimiter to be used in a screen filter file add this line:
Replacing characters in a text line
In order to replace characters in a text line you must have previously specified a delimiter. The character defined as a delimiter is used to replace specified characters. To indicate what characters are to be replaced, add line:
Vip4 will never remove a line from a screen, that is, make the screen shorter. However, the screen filter file can designate lines to be blanked out or cleared. The screen filter file allows for two clear line commands:
Normally Vip4 will delimit labels in a text line by a single space. For example, the line "Customer Name" will contain two labels "Customer" and "Name". A filter file can change the way Vip4 parses labels with this line:
How Vip4 Processes a Screen Filter File
Vip4 will process the ClearLinStr commands before any characters are replaced in the text string. If the Delimiter command is missing the Replace command has no effect.
Integration in the Tbred.ini file
If a screen filter file is to be used it must be specified in the Tbred.ini file. Add the following line to the [SCREENS] section of the Tbred.ini file:
Sample Screen Filter File