Developer Demos


About the demos

The demos illustrate the power and productivity of Oracle Forms.  These demos contain many tips and techniques that you can copy and use in your own applications.

The demos have been tested against Oracle8, including Personal Oracle8 and Oracle Lite.

Also included are a number of reusable components that allow you to easily and rapidly build applications that provide power and performance, while conforming to GUI standards.  These components include frameworks for customizing, such as an outline standard menu in the Windows style; image and icon files; and graphical standards to provide a consistent look and feel across your applications.

Note:  If you try to run a demo and you see a warning that certain packages are 'invalid', this means your version of the database does not support the feature.


Installing the demos

The demos require that certain tables, views, and stored procedures be installed in a Demo schema in your database.  If you do not have the necessary CREATE privileges on the database, you will need to ask your database administrator to install the database objects for you.

To install the demos:

1	Install the demo database objects.

2	Install Report Builder demo fonts.


Installing the demo database objects

Run SQL*Plus and connect to the schema and database you wish to use.  Locate and run the script DEMO60.SQL from the directory ORACLE_HOME\TOOLS\DEVDEM60\ADMIN.  See the SQL*Plus documentation for detailed instructions on running scripts.


Installing Report Builder demo fonts

To run the Barcode Reporting demo report, you need to have a suitable barcode font installed on your system.  We provide a demo 3 of 9 barcode font in the file 3OF9.TTF in the directory ORACLE_HOME\TOOLS\DEVDEM60\BIN.  Consult your operating system documentation for instructions on installing fonts.


Modifying the demos

To help you modify or reuse the demos, a Project Builder project file is provided containing all of the modules used in the demos.  To use this project file, you must first customize it to correspond to your local environment:

1	Start Project Builder.

2	If the Welcome dialog appears, choose Open an Existing Project, then click OK.  If the Welcome dialog does not display, choose File [image] Open Project.

3	Locate and open the project ORACLE_HOME\TOOLS\
DEVDEM60\ADMIN\BENEFEAT.UPD.

4	Click the Benefits and Features project.

5	In the Property Palette, set the Project Location property of the project to the directory where the demos are located, i.e.  ORACLE_HOME\TOOLS\DEVDEM60\DEMO.  This location will be inherited by all the entries in the project.  See the online help for Project Builder for detailed instructions on setting properties and an explanation of inheritance in Project Builder.

6	Set the Connection properties of the project to the account that will be used to recompile and run the demos.  This connection will be inherited by all the entries (except one) in the project.  The account you specify here will normally be the same account into which you installed the demo database objects.  See Installing the Demo Database Objects for details on installing.

7	Locate the Form Builder demo DEV2KPRJ.FMB and its corresponding executable, DEV2KPRJ.FMX.  This demo requires a connection to a Forms Developer repository to compile and run.  Set the Connection properties of these two entries to a user account on the Oracle Designer repository.  If you do not have access to a Oracle Designer repository, you will not be able to recompile or run this demo.

You can now use all of Project Builder’s capabilities to edit, customize, and rebuild the Benefits and Features project.

Hint: To extend the demo set with new demos of your own, use the template form DEMOTEMP.FMB.


Reusing the demos

Many of the demos contain objects and techniques that you may wish to copy.  You may freely reuse the icons, images, ActiveX controls, menus, and all other files provided in the demos in your own applications.  You may also include the components within a product of your own, including a commercial product that you sell to third parties.  There is no license or fee required for any such reuse.

These components are provided as is.  Oracle Corporation makes no warranty as to their correctness or their fitness for any particular purpose.  If you reuse any of these components in your own applications, whether modified or unmodified, you do so entirely at your own risk.  Oracle Corporation does not provide any support for these components.

The disclaimer above includes the supplied ActiveX (OCX) controls.  These controls are provided solely for demonstration purposes.  Oracle does not support these controls and makes no guarantee as to their reliability.  For your own applications, we strongly recommend that you purchase supported, commercial controls such as those supplied by  our Open Tools Initiative partners.

Oracle Corporation retains all copyright on these demos, components, icons, ActiveX controls, and images.


Basing a block on a stored procedure

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

In this demo, two data blocks appear on the pages of a tab canvas.  In the first block, the records are queried directly from a database table containing employees.  The lookups of the corresponding Department names are performed in a POST-QUERY trigger.  In the second block, the records are queried from a stored procedure that opens and returns a cursor.  The lookups are performed in the stored procedure on the server.

The demo shows how an application's performance can be improved while reducing the number of network round trips.  This scalability is critically important for applications that will be deployed to a large number of end users.


Running this demo: Basing a block on a stored procedure
Basing a block on a stored procedure

To run this demo:

1	Next to Number of rows, type the number of rows you want to create for the test.  It is best to start with a small number of rows, for example 100, to avoid long waits.  Once you know how fast your network and database are, you can try larger numbers of rows.

2	Click the From Table tab.

3	Click Start Test.  The form will create test rows in the table and then fetch them into the block from the table.  Finally it will delete the test rows from the table.

4	Notice the number of network round trips and the elapsed processing time.

5	Click the From Stored Procedure tab.

6	Click Start Test.  The form will again create test rows and then fetch them from the table.  Finally it will delete the test rows from the table.

7	Notice that there are far fewer network round trips and the elapsed processing time is much less.  The exact time difference will depend on the number of rows requested, the speed of your client machine, your network, and your database.  (If you are running against a local Personal Oracle, and no network is involved, the time difference may be very small.)


Building this demo: Basing a block on a stored procedure
Basing a block on a stored procedure

To build this demo:

1	Create the tab pages.

2	Create the first data block.

3	Create the second data block.


Creating the tab pages: Basing a block on a stored procedure
Basing a block on a stored procedure:  Creating the tab pages

To create the tab pages:

1	In the Object Navigator, choose Tools [image] Layout Editor to display the Layout Editor.

2	Click the Tab Canvas tool in the tool palette.

3	Click and drag to draw the tab pages to the size desired.

  Next step


Creating the first data block: Basing a block on a stored procedure
Basing a block on a stored procedure:  Creating the first data block

To create the first data block, based on a table:

1	In the Object Navigator, choose Tools [image] Data Block Wizard.

2	When the Data Block Wizard asks whether to base the block on a Table or on a Stored Procedure, choose Table.

3	Follow the prompts in the Data Block Wizard to create your block.

4	When the Data Block Wizard is complete, run the Layout Wizard.

5	When the Layout Wizard asks you for the canvas for this block, choose the tab canvas and the first tab page.

  Next step


Creating the second data block: Basing a block on a stored procedure
Basing a block on a stored procedure:  Creating the second data block

To create the second data block, based on a stored procedure:

1	Create a stored procedure in the database that will return the data that you want to display in the block.  The procedure can return either a Ref Cursor or a Table of Records.  In this demo, we return a Ref Cursor.  See the PL/SQL User's Guide and Reference for more information about writing stored procedures.

2	In the Object Navigator, choose Tools [image] Data Block Wizard.

3	When the Wizard prompts whether to base the block on a Table or on a Stored Procedure, choose Stored Procedure.

4	Follow the prompts in the Data Block Wizard to create your block.

5	When the Data Block Wizard is complete, run the Layout Wizard.

6	When the Layout Wizard prompts for the canvas for this block, choose the tab canvas and the second tab page.


Reducing network traffic with array DML

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

In this demo, three data blocks appear on the pages of a tab canvas.  The data blocks are identical except for the setting of the data block property Array DML Size.  This property determines the number of DML operations (insert, update or delete) that are performed in each network round trip.

The demo shows how an application's performance can be improved while reducing the number of network round trips.  This is an example of scalability, which is critically important for applications that will be deployed to a large number of end users.


Running this demo: Reducing network traffic with array DML
Reducing network traffic with array DML

To run this demo:

1	Next to Number of rows, type the number of rows you want to create for the test.  It is best to start with a small number of rows (e.g., 100), to avoid long waits.  Once you know how fast your network and database are, you can try larger numbers of rows.

2	Click the Array Size 1 tab.

3	Click Start Test.

4	Note the number of network round trips and the elapsed processing time.

5	Click the Array Size 10 tab.

6	Click Start Test.

7	Notice the number of network round trips and the elapsed processing time.  These will be considerably smaller than for the first test.

8	Click the Array Size 100 tab.

9	Click Start Test.

10	Notice the number of network round trips and the elapsed processing time.  These will be smaller than the second test.  Depending on your network packet size, however, the difference may not be very large.  Once the array size is large enough to fill a network packet, there is no advantage to specifying a larger array size.

The exact time difference in these tests will depend on the speed of your client machine, your network, and your database.  If you are running against a local database and no network is involved, the time difference may be very small.


Building this demo: Reducing network traffic with array DML
Reducing network traffic with array DML

To build this demo:

1	Create the tab pages.

2	Create the first data block.

3	Create the other data blocks.


Creating the tab pages: Reducing network traffic with array DML
Reducing network traffic with array DML:  Creating the tab pages

To create the tab pages:

1	In the Object Navigator, choose Tools [image] Layout Editor to display the Layout Editor.

2	Click the Tab Canvas tool in the tool palette.

3	Click and drag to draw the tab pages to the size desired.

4	In the Object Navigator, select one of the tab pages.  Click the Create button in the toolbar to add a third tab page.

  Next step


Creating the first data block: Reducing network traffic with array DML
Reducing network traffic with array DML:  Creating the first data block

To create the first data block:

1	In the Object Navigator, choose Tools [image] Data Block Wizard.

2	When the Data Block Wizard asks whether to base the block on a Table or on a Stored Procedure, choose Table.

3	Follow the prompts in the Data Block Wizard to create your block.

4	When the Data Block Wizard is complete, run the Layout Wizard.

5	When the Layout Wizard asks you for the canvas for this block, choose the tab canvas and the first tab page.

  Next step


Creating the other data blocks: Reducing network traffic with array DML
Reducing network traffic with array DML:  Creating the other data blocks

To create the other data blocks:

1	In the Object Navigator, select the first data block.

2	While holding down the Control key, drag and drop the block under the Data Blocks node.

3	In the dialog box, click Subclass.

4	In the Object Navigator, select the new data block.  In the Property Palette, set the property DML Array Size to 10.  The icon adjacent to the property will change to indicate that the property is no longer inherited from the first data block.

5	Select all the items in the new data block.  In the Property Palette, set the Tab Page property to the name of the second tab page created above.

6	Repeat the above steps to create the third data block with a DML Array Size of 100 on the third tab page.

7	In the Object Navigator, drag and drop the data blocks so that they appear in the correct order.


Computing formulae and summaries

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

In this demo, information about departments and employees is presented in the DEPT and EMP data blocks.  Summaries and formulae are computed on these blocks showing the number of employees in each department, the total salary of each employee (base salary plus commission), and the sum of salaries of the employees in each department.  As the data is modified, Form Builder automatically recomputes the summaries and formulae.  No trigger code is required.  By recomputing the changing values on the client, Form Builder eliminates the need for SELECT statements to maintain the summaries and formulae, thus reducing network traffic.


Running this demo: Computing formulae and summaries
Computing formulae and summaries

To run this demo:

1	Click Next Dept and Previous Dept to move from department to department.  Note the summary and formula items highlighted in yellow.  No trigger code was required to calculate these values.

2	Modify the salary and commission of an employee.  Note the total salary and departmental total salary are automatically updated.

3	Add or remove employees from a department.  Note that the summary and formula items are automatically updated.


Building this demo: Computing formulae and summaries
Computing formulae and summaries

To build this demo:

1	Create the DEPT and EMP data blocks.

2	Create the summary and formula items.


Creating the DEPT and EMP data blocks
Computing formulae and summaries:  Creating the DEPT and EMP data blocks

To create the DEPT and EMP data blocks:

1	In the Object Navigator, choose Tools [image] Data Block Wizard.

2	When the Data Block Wizard asks whether to base the block on a Table or on a Stored Procedure, choose Table.

3	Follow the prompts in the Data Block Wizard to create the DEPT block.

4	When the Data Block Wizard is complete, run the Layout Wizard.

5	Repeat these steps to create the EMP data block.

6	In the Object Navigator, select the EMP data block.  In the Property Palette, set the Query All Records property to Yes.

  Next Step


Creating the summary and formula items
Computing formulae and summaries:  Creating the summary and formula items

To create the summary and formula items:

1	In the Layout Editor, click the Block pop-list in the toolbar and select EMP.

2	Click the Text Item tool in the tool palette.  Create the Headcount item.

3	In the Property Palette, set the following properties of the Headcount item:

Calculation Mode to Summary

Summary Function to Count

Summarized Block to EMP

Summarized Item to EMPNO

4	Click the Text Item tool in the tool palette.  Create the Fullsal item.

5	Set the following properties of the Fullsal item:

Calculation Mode to Formula

Formula to :emp.sal + nvl(:emp.comm,0)

6	Click the Text Item tool in the tool palette.  Create the Totalsal item.

7	Set the following properties of the Totalsal item:

Calculation Mode to Summary

Summary Function to Sum

Summarized Block to EMP

Summarized Item to FULLSAL


Project Builder and Oracle Designer integration

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

If you are using Oracle Designer to generate Form Builder, Report Builder, or Graphics Builder modules, you may want to create a Project Builder project to manage the generated forms.  This example shows how you can use the Oracle Designer API to extract information from an Application System in a form that can be imported into Project Builder.

Note:  This demo requires that you have a logon to a Oracle Designer repository.


Running this demo: Project Builder and Oracle Designer integration
Project Builder and Oracle Designer integration

To run this demo:

1	Click the Repository tab.

2	Type the name, password and database that you normally use when connecting to the Oracle Designer repository.  Click Connect.

3	From the Application Systems Owner pop-list, select the owner of the application system where the modules you want to export are defined.

4	From the Application Systems pop-list, select the application system where the modules you want to export are defined.

5	Click the Modules tab.  Here you will select the modules to include in the project.

6	Click the check box to the left of each module that you want to export.  Click Select All to include all the listed modules.

7	Click the Project Settings tab.  Here you will set properties associated with the project itself.

8	In the Scope group, click Create Entries only if you intend to import these modules directly into an existing project.  Click Create as Subproject of an existing project if you intend to import these modules as a separate subproject within an existing project.

9	In the Project Connection group, enter the connection information that you want to appear in the Connection properties of the subproject.  This information is only enabled if you clicked Create as Subproject of an existing project.

10	In the Properties group, enter the author name, comment, title and default directory that you want to associate with the subproject.  This information is only enabled if you clicked Create as Subproject of an existing project.  If you don’t specify values here, the Author is defaulted from the Application System Owner, the Comment is defaulted from the Application System Display Title, and the Title is defaulted from the Application System Name.

11	Click the Module Settings tab.  Here you will set properties associated with each module.

12	In the Entry Author group, click Set Author if you want each entry in the project to have the author name set from the name of the creator in Oracle Designer.  Otherwise it will be inherited from the project.  in the  Entry Name group, choose the source of the name of each entry.  In the Entry Comments group, choose the source of the entries’ comments.

Note: The filename of the entry is derived from the Module Short Name.

13	Click the Project Creation tab.

14	Enter the name of the export file to create.  Export files normally have an extension of .UPX.

15	Click Create File.  The export file will be created.

16	Click View Results to see the output file.

17	Using Project Builder, import the file into a project.  For detailed instructions, see the Project Builder online help.


Building this demo: Project Builder and Oracle Designer integration
Project Builder and Oracle Designer integration

To build this demo:

1	Create the tab pages.

2	Create the Options data block.

3	Create the Module List data block.

4	Create the export file.


Creating the tab pages: Project Builder and Oracle Designer integration
Project Builder and Oracle Designer integration:  Creating the tab pages

To create the tab pages:

1	In the Object Navigator, choose Tools [image] Layout Editor to display the Layout Editor.

2	Click the Tab Canvas tool in the tool palette.

3	Click and drag to draw the tab pages to the size desired.

4	In the Object Navigator, select one of the tab pages.  Click the Create button in the toolbar to add the subsequent tab pages.

  Next Step


Creating the Options data block:
Project Builder and Oracle Designer integration:  Creating the Options data block

To create the Options data block:

1	In the Object Navigator, click Data Blocks, then click the Create tool.

2	In the dialog box, click Build a new data block manually, then click OK.

3	Create items to represent the options available to the user.  Using the Property Palette, assign the items to appropriate tab pages.  Set other properties as appropriate.  See the data block B_OPTIONS for more details.

  Next Step


Creating the Module List data block:
Project Builder and Oracle Designer integration:  Creating the Module List data block

To create the Module List data block:

1	In the Object Navigator, click Data Blocks, then click the Create tool on the toolbar.

2	In the dialog box, click Build a new data block manually, then click OK.

3	In the Property Palette, set the Query Data Source Type to FROM Clause Query.

4	Set the Query Data Source Name to the query to retrieve the modules from the Oracle Designer repository.  For example:

SELECT M.SHORT_NAME, M.NAME, M.MODULE_TYPE,
       A.ID APP_ID, M.ID MODULE_ID
FROM CI_APPLICATION_SYSTEMS A, CI_APP_SYS_MODULES X, CI_MODULES M WHERE A.ID = X.APPLICATION_SYSTEM_REFERENCE
  AND M.ID = X.MODULE_REFERENCE)

5 	Set the WHERE Clause to restrict the list to only the application system that the user has selected.  For example, if the block you created is called B_OPTIONS and the application system is in an item called APP_SYS:

APP_ID = To_Number(:B_OPTIONS.APP_SYS)

6 	In the Object Navigator, expand the Modules data block.  Click Items, then click the Create tool on the toolbar.

7 	Change the name of the item to correspond to the first selected item in the FROM Clause Query of the block.  Set other properties as appropriate.

8 	Repeat the above steps to create the remaining items in the block.

  Next Step


Creating the export file:
Project Builder and Oracle Designer integration:  Creating the export file

To create the export file:

1	Create a PL/SQL procedure.  Using the TEXTIO package, create a text file.

2	Using the information specified on the Project Settings page, create the header section of the file.

3	Loop through each selected module, creating the appropriate entry section of the file.  See the demo code for details of these sections of the file.


Reusing the Navigator item and Wizard class

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows a native forms item and a sophisticated reusable object (class) that can be used to enhance the end user interface.  The native item is an Explorer or Navigator object, similar to that used in many Windows applications, including the Forms Developer Builders.  The Navigator includes a tree data window and a vertical Edit toolbar.

The class is a Wizard style dialog.  In this demo, the Wizard is used to create new employees.  The Wizard is also re-entrant; that is,  it can be used to modify an existing employee.

This class is built entirely using Form Builder and PL/SQL native capabilities, so it is portable to all Form Builder supported platforms.


Running this demo: Reusing the Navigator item and Wizard class
Reusing the Navigator item and Wizard class

To explore the capabilities of the Object Navigator:

•	Expand and collapse nodes in the Navigator’s tree by clicking the toolbar buttons, or by choosing options from the View menu.

•	Display the data either by Hierarchy or by Department using the View menu.  Note that the data is not re-queried when switching views, thus minimizing network traffic.

To explore the capabilities of the Wizard:

•	Click the Add button on the vertical Edit toolbar.  Follow the prompts in the Wizard to create a new employee.  The new employee appears in the hierarchy.

•	Select an existing employee in the navigator’s tree, then click the Edit button on the vertical Edit toolbar.  Follow the prompts in the Wizard to modify an employee.  If you change the employee’s manager or department, the tree will be updated accordingly.

Note: This demo does not allow you to add or modify departments.


Building this demo: Reusing the Navigator item and Wizard class
Reusing the Navigator item and Wizard class

To build this demo:

1	Create an application using the Wizard class.


Creating an application using the Wizard class:
Reusing the Navigator item and Wizard class:  Creating an application using the Wizard class

To create an application using the Wizard class:

1	Open the Object Library STNDRD20.OLB.  Click the Components tab.

2	Select the Wizard object group.  Drag it to the Object Groups node in your module and release it.

3	The Subclass dialog box appears.  If you click Copy, your module will contain a local copy of the component.  If the component in the Object Library is later changed, those changes will not be inherited by your module.  If you click Subclass, your module will contain a subclassed component.  If the component in the Object Library is later changed, those changes will be inherited by your module.

4	Attach the PL/SQL library WIZARD.PLL to your module.

5	Customize the wizard as necessary to define the pages that will appear in your wizard dialog.  For complete details, see Reusable Components in the Form Builder Help.

If you want to display many different wizards in your application, you need only copy or subclass the Wizard component once.  Any number of different wizard dialog boxes can be displayed using a single Wizard object.


Reusing the Picklist class

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows a reusable object (class) that can be used to enhance the end user interface.  The class is a Picklist, similar to that used in many Windows applications.  A picklist allows the end user to make selections using two lists, one showing the objects available and the other showing the objects already selected.

This class is built entirely using Form Builder and PL/SQL native capabilities, so it is portable to all Form Builder supported platforms.


Running this demo: Reusing the Picklist class
Reusing the Picklist class

To run this demo:

•	Select items in the left-hand list.  You can select individual items, or use the control and shift keys in conjunction with the mouse to select multiple items.

•	Click > to move the selected items from the left-hand list to the right-hand list.  Click >> to add all items from the left-hand list to the right-hand list.

•	Click < to move the selected items from the right-hand list to the left-hand list.  Click << to add all items from the right-hand list to the left-hand list.

•	Click Info to see information about the state of the picklist, such as the number of items currently selected.

•	Click Values to see the values associated with the items in the right-hand list.


Building this demo: Reusing the Picklist class
Reusing the Picklist class

To build this demo:

1	Open the Object Library STNDRD20.OLB.  Click the Components tab.

2	Select the Picklist object group.  Drag it to the Object Groups node in your module and release it.

3	The Subclass dialog box appears.  If you click Copy, your module will contain a local copy of the component.  If the component in the Object Library is later changed, those changes will not be inherited by your module.  If you click Subclass, your module will contain a subclassed component.  If the component in the Object Library is later changed, those changes will be inherited by your module.

4	Attach the PL/SQL library PICKLIST.PLL to your module.

5	Customize the navigator as necessary for your application, including code to populate the picklist.  For complete details see Reusable Components in the Form Builder Help.

A single picklist can be used to show different picklists at different times.  However, each form module can have only one picklist object.  If your application requires multiple picklists in different windows, create multiple forms and open them using the CALL_FORM, OPEN_FORM, and GO_FORM built-ins.


Reusing the Calendar class

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows a reusable object (class) that can be used to enhance the end user interface.  The class is a calendar or date picker that allows the end user to choose a date from a calendar rather than typing it in from the keyboard.

This class is built entirely using Form Builder and PL/SQL native capabilities, so it is portable to all Form Builder supported platforms.


Running this demo: Reusing the Calendar class
Reusing the Calendar class

To run this demo:

1	Click the iconic button to the right of Start Date.

2	In the Calendar window, click < and > to change the month.  Click  << and >> to change the year.  Click a day to change the date selected.

3	Click OK or double-click a day to return the selected date.  Click Cancel to close the calendar without changing the date.


Building this demo: Reusing the Calendar class
Reusing the Calendar class

To build this demo:

1	Open the Standard object library STNDRD20.OLB.  Click the Components tab.

2	Select the Calendar object group.  Drag it to the Object Groups node in your module and release it.

3	The Subclass dialog appears.  If you click Copy, your module will contain a local copy of the component.  If the component in the Object Library is later changed, those changes will not be inherited by your module.  If you click Subclass, your module will contain a subclassed component.  If the component in the Object Library is later changed, those changes will be inherited by your module.

4	Attach the PL/SQL library CALENDAR.PLL to your module.

5	Add a KEY-LISTVAL trigger to each date item where you want to provide a pop-up calendar.  See the example and Reusable Components in the Form Builder Help for details.


Saving a block to a text file

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how you can write the contents of a data block to an operating system file.  This can be useful if you want to examine the data in another tool or editor.  The demonstration can be easily extended to create simple text-only reports.


Running this demo: Saving a block to a text file
Saving a block to a text file

To run this demo:

1	Click the check boxes below each column to hide or show selected columns.

2	Click Options.  Enter the output file name.  Click the radio buttons to select whether to overwrite the file or append to it.

3	Choose the separator character used to align columns in the output file.  If you check Column Align, the output columns will be aligned using multiple characters.  Otherwise a single separator will be used.  If the separator is a tab character, this option is not available: a single tab character is always used to align to the next tabstop.

4	Choose the records to write: all records in the table, only records that have been fetched and viewed so far in the block, or only the records currently visible in the block.

5	Choose the items to write: all items or only displayed items.

6	Click OK to close the window.

7	Click Write Block to create the output file.  An alert will appear when the file has been completely written.


Building this demo: Saving a block to a text file
Saving a block to a text file

To build this demo:

1	Attach the PL/SQL library F60UTIL.PLL to your module.

2	Create a button to allow the user to write a block.  Create a WHEN-BUTTON-PRESSED trigger on the button.  In the trigger code, call the function WRITE_BLOCK from the F60UTIL package.  See the example and Reusable Components in the Form Builder Help for details.


Open API access to Forms documents
Open API access to Form Builder documents

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo is used to demonstrate the power and flexibility available through the Open API.  In this particular instance, a form is used as the interface to the C program written with the Open API.  The form is used to obtain the module name and the desired options that are used as parameters to the program. Output is written to a text file in the current working directory.  The Open API can be used for either creating or modifying form modules.  This is an example of modifying form modules.

In this example, two separate programs were created:  frmpath.exe and mrmpath.exe.  frmpath.exe removes the subclassed path from a form module.  mrmpath.exe removes the subclassed path from a menu module.  Each programs traverses the list of all object types, checks to see if the object is subclassed, and sets the path to NULL if it is subclassed.  Though you can run both programs from the command line, a form interface is used to show how program parameters can be obtained from a form.

This demo can be easily modified to create your own API utilities.  The source code can be found in ORACLE_HOME\TOOLS\DEVDEM60\DEMO\C.


Running this demo: Open API access to Forms documents
Open API access to Form Builder documents

To run this demo:

1	Choose a module type that determines which program to run.

2	Check the desired options.

3	Locate the appropriate module.

4	Click the Run Program button to execute the program.

5	Click the View Output button to view the output from the program.


Building this demo: Open API access to Forms documents
Open API access to Form Builder documents

To build this demo:

1	Create a C program that includes all the Open API header files.

2	Make calls to the desired Open API functions in your C source code.

3	Link your source code against the Open API library (ifd2f60.lib).

4	Compile your source code to create an executable.


Drag and Drop

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

Using Mouse events, you can build a direct manipulation (drag and drop) user interface that allows the end user to interact directly with objects in a natural and intuitive way.  This example illustrates the principles of coding direct manipulation in a Form Builder application.


Running this demo: Drag & Drop
Drag and Drop

To run this demo:

1	Click Start a New Game.  Five new questions and answers will appear.

2	To match an answer to a question, click the right half of the jigsaw piece, drag it and drop it on the corresponding left half.  If the question and answer match, both pieces will be replaced with a completed jigsaw.  You can also drag the right half and drop it on the left, if you prefer.


Building this demo: Drag & Drop
Drag and Drop

To build this demo:

1	Attach the PL/SQL library DRAG.PLL to your form.

2	For each item that you want to allow the user to drag, create a WHEN-MOUSE-DOWN trigger, a WHEN-MOUSE-MOVE trigger and a WHEN-MOUSE-UP trigger.

3	In the WHEN-MOUSE-DOWN trigger, include the following statement:

MOUSE.CLICK;

You might also include code here to change the cursor to indicate to the end user that a drag operation is occurring.

In the WHEN-MOUSE-MOVE trigger, include the following statement:

MOUSE.MOVE;

In the WHEN-MOUSE-UP trigger, add your application-specific code.  This code should check where the object has been dropped, and take appropriate action.


Highlights and animation

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows the versatility of Forms Developer applications.  You can include a wide variety of user interface features, including color and font changes, animations, tooltips, and pop-up menus.


Running this demo: Highlights and animation
Highlights and animation

To run this demo:

1	Click the Tooltips and Menus tab.

2	Position the mouse over any of the items, such as Deptno.  Click the right mouse button.  A pop-up menu will appear.  Click a command, or click outside the menu to dismiss the menu without performing any of the commands.  No code is required to display the pop-up menu.

3	Move the mouse over the iconic buttons.  The tooltip, or microhelp, for each button appears.  No code is required to display tooltips.

4	Click the Visual Attributes tab.

5	Click any cell, for example click WARD under Name.  Click the red, blue, or green button to change the background color of the selected cell.

6	Click the B or I button to change the font to a bold or italic font for all items in the column.  Notice that visual attributes can be added together: if you set a cell to blue and its column to italic, the cell acquires both the blue and italic attributes.

7	Click the Animation tab.

8	Click Traffic Lights.  In the dialog box, click Change to change the traffic lights.  This technique can be used with any image to provide a changing visual indication of status, for example.  Click Close to dismiss the dialog.

9	Click Progress Bar.  In the dialog box, click Start to see the three flood-fill indicators slowly fill.  This technique can be used to indicate progress during a long running operation.  Click Close to dismiss the dialog.

10	Click Spin Wheels.  In the dialog box, click Spin to make the wheel appear to spin.  This technique can be used to animate an image.  This can be used to indicate progress during a long running operation where you cannot determine how long the operation will take to complete.  The animation reassures the end user that the application has not frozen.  Click Close to dismiss the dialog box.


Building this demo: Highlights and animation
Highlights and animation

To build this demo:

1	Add a tooltip to an item.

2	Add a pop-up menu to an item.

3	Set the visual attributes of an item.

4	Create the traffic lights status display.

5	Create a progress bar.

6	Create the spinning wheel animation.


Addinga tooltip to an item
Highlights and animation:  Adding a tooltip to an item

To add a tooltip to an item:

1	In the Object Navigator, click the item for which you want to specify a tooltip.  In the Property Palette, set the following attributes:

Tooltip	The text you want to display
Tooltip Visual Attribute Group	Defines the appearance of the tooltip
Hint: for a standard Windows style tooltip, use the Std_Tooltip Visual Attribute Group from the Standard object library.

2	Run the form.  The text you specified will now appear automatically whenever the end user positions the mouse over this item.

  Next Step


Adding a popup menu to an item:
Highlights and animation:  Adding a pop-up menu to an item

To add a pop-up menu to an item:

1	In the Object Navigator, create a Popup Menu.  Add menu items for the commands that you want to appear in the menu.  For details on creating menus, see the Form Builder help.

Hint:  For a standard Windows style pop-up menu, use the Std_Menu_Item Popup Menu from the Standard object library as your starting point.  Customize this menu by adding commands specific to your application.

2	In the Object Navigator, click the item that you want to associate the menu with.  In the Property Palette, set the property Popup Menu to the name of the menu you created.

3	Run the form.  Click the right mouse button on this item to display the pop-up menu.\

  Next Step


Setting the visual attributes of  an item:
Highlights and animation:  Setting the visual attributes of an item

To set the visual attributes of an item:

1	In the Object Navigator, create a Visual Attribute Group.

2	In the Property Palette, set the Font and Color properties of the Visual Attribute Group.  Leave the default value of <Unspecified> for properties that you want to leave unchanged.  For example, to create a Visual Attribute Group that will change the Font Weight to bold while leaving all other visual attributes unchanged, set only the Font Weight property.

3	Create further Visual Attribute Groups for the other visual attributes that you want to change programmatically.

4	Add code to appropriate triggers to change the Visual Attribute Group of an item.  To change a single cell, or instance, of an item, your code would look like this:

Set_Item_Instance_Property(‘myblock.myitem’, recnum,
  VISUAL_ATTRIBUTE, ‘RED');

Replace recnum with the record number of the instance you want to change.  Replace ‘RED’ with the name of the Visual Attribute Group that you want to apply.

To change an entire column, your code would look like this:

Set_Item_Property(‘myblock.myitem’, VISUAL_ATTRIBUTE,
  'BOLD');

Replace 'BOLD' with the name of the Visual Attribute Group that you want to apply.

  Next Step


Creating the traffic lights status display:
Highlights and animation:  Creating the traffic lights status display

To create the traffic lights status display:

1	Using a drawing tool such as Microsoft Paint, create an image file containing all of the different pictures, or frames, that you want to show for the status display.  For this demo, we used four frames showing a set of traffic lights in four different states, but you can use any pictures that are appropriate for your application, and as many or as few frames as you need.  Place the frames alongside each other, ensuring that all of the frames are evenly spaced and equally sized.  To avoid distortions from resizing the image, it is best to create the image with the actual size that it will be displayed in your form.

Tip:  Choose the size of each frame so that it converts easily from the coordinate system of the drawing tool to the coordinate system that you use in your module.  For example, if your drawing tool is Microsoft Paint and your module’s coordinate system is Real Points, then a height of 40 pels will convert to exactly 30 points.  This will avoid rounding errors when you change from one viewed frame to another.

2	In the Layout Editor, display the content canvas where you want the status to be displayed.

3	Click the Stacked Canvas tool in the tool palette.  Click on the content canvas to create and position the stacked canvas.

4	In the Property Palette, under the Physical node, set the Width and Height of the stacked canvas to the size of the image or larger, and set the Viewport X Position on Canvas and Viewport Y Position on Canvas to show the initial frame.  Under the Viewport node, set the Viewport Width and Viewport Height to the size of each frame.

5	In the Layout Editor, display the stacked canvas.  Choose File [image] Import to import the image file.  The image will appear in the upper left corner of the canvas.

Tip:  Depending on your display capabilities and settings, an image file with a gray background created in Microsoft Paint may have a slightly different background color from the standard canvas background color.  You can disguise this difference by adding a rectangle as a border to the image.  If you want your image to blend seamlessly with the canvas without a border, you may need to adjust the background color of either the image or the canvas.

6	Add trigger code to show each frame as appropriate.  Change the frame by programmatically adjusting the Viewport X Position on Canvas and Viewport Y Position on Canvas properties to position the viewport visible on the content canvas over the desired frame.  For example:

Set_View_Property(‘TRAFFIC_LIGHTS’, X_POS_ON_CANVAS, 40);

  Next Step


Creating a progress bar:
Highlights and animation:  Creating a progress bar

To create a progress bar:

1	In the Layout Editor, click the Text Item tool.  Drag to create a text item of the maximum size of the progress bar.  For a raised style bar, set the Bevel property of the item to raised.

2	Click the Rectangle tool and create a rectangle slightly larger than the maximum size of the progress bar.  For a flood style bar, set the Bevel property of the rectangle to Lowered.

3	Add trigger code to set the size of the progress bar as appropriate.  Change the size by programmatically adjusting the Width property.  Depending on your application you might do this within a PL/SQL loop, or in a WHEN-TIMER-EXPIRED trigger.  For example, use the Set_Item_Property built-in:

DECLARE
   x NUMBER := Set_Item_Property(‘PROGRESS.PLAIN’, WIDTH);
BEGIN
  if x <  120 then
    Set_Item_Property(‘PROGRESS.PLAIN’, WIDTH, x+5);
  else
    Delete_Timer(‘PROGRESS’);
  end if;
END;

Tip: Form Builder does not normally update the display while a trigger is executing.  To update the progress bar while a PL/SQL loop is executing, use the Synchronize built-in.

  Next Step


Creating the spinning wheel animation:
Highlights and animation:  Creating the spinning wheel animation

To create the spinning wheel animation:

1	Using a drawing tool such as Microsoft Paint, create an image file containing all of the different pictures, or frames, that you want to show for the animation.  To create a smooth animation, use at least four and preferably six frames.

2	In the Layout Editor, display the content canvas where you want the animation to be displayed.

3	Click the Stacked Canvas tool in the tool palette.  Click on the content canvas to create and position the stacked canvas.

4	In the Property Palette, under the Physical node, set the Width and Height of the stacked canvas to the size of the image or larger, and set the Viewport X Position on Canvas and Viewport Y Position on Canvas to show the initial frame.  Under the Viewport node, set the Viewport Width and Viewport Height to the size of each frame.

5	In the Layout Editor, display the stacked canvas.  Choose File [image] Import to import the image file.  The image will appear in the upper left corner of the canvas.

Tip:  If you have boilerplate images that you use frequently, such as a company logo, add them to your object library by dragging the boilerplate image object from the Canvas node in the Object Navigator and dropping it on the appropriate page of the object library.  To reuse a boilerplate image from an Object Library, simply drag it to the Object Navigator and drop it under the canvas where you want the image to appear.  This is faster and simpler than importing a file.  See the Gallery page in the DEMO20.OLB object library for an example.

6	Add trigger code to show each frame as appropriate.  Depending on your application you might do this within a PL/SQL loop, or in a WHEN-TIMER-EXPIRED trigger.  Change the frame by programmatically adjusting the Viewport X Position on Canvas and Viewport Y Position on Canvas properties to position the viewport visible on the content canvas over the desired frame.


Playing and recording sound clips

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

Sound items allow you to integrate sound clips into your applications without depending on operating system-specific calls.  Sound clips can be read from or written to the file system in a variety of formats, and can be stored in the database.


Running this demo: Playing and recording sound clips
Playing and recording sound clips

To run this demo:

1	Click the Filesystem Sounds tab.

2	Click a Speaker button to hear a sound played from a WAV format file stored in the file system.  Use the controls on the sound player to adjust the volume.

3	Click the Database Sounds tab.

4	Enter a description for a sound to be stored in the database.

5	Click the Record control on the sound player to begin recording.  Speak into the microphone of your PC.  Click the Stop control to stop recording.

6	Click Save to store the sound and its description in the database.

7	Repeat these steps to create more recordings.


Building this demo: Playing and recording sound clips
Playing and recording sound clips

To build this demo:

1	Play sound clips from the file system.

2	Store sound clips in the database.


Playing sound clips from the file system:
Playing and recording sound clips:  Playing sound clips from the file system

To play sound clips from the file system:

1	In the Layout Editor, click the Sound Item tool in the tool palette.  Click on the content canvas to create and position the sound item.

2	Add trigger code to call the Read_Sound_File built-in to read a sound file into the item.  Use the Play_Sound built-in to play the sound clip.  For example:

Read_Sound_File(‘myfile.wav’, 'WAVE', 'myblock.sound_item');
Go_Item('myblock.sound_item ');
Play_Sound('myblock.sound_item ');

  Next Step


Storing sound clips in the database:
Playing and recording sound clips:  Storing sound clips in the database

To store sound clips in the database:

1	Create a table to hold the sound clips.  This table needs a column of type Long Raw to hold the sound, plus any other columns that your application needs, such as Description.

2	In the Object Navigator, choose Tools [image] Data Block Wizard.

3	When the Data Block Wizard asks whether to base the block on a Table or on a Stored Procedure, choose Table.

4	Follow the prompts in the Data Block Wizard to create your block based on the table you created above.

5	When the Data Block Wizard is complete, run the Layout Wizard.

6	When the Layout Wizard asks you to choose which items will be displayed in this block, be sure to include the Long Raw column.  On this page of the wizard, select the Long Raw column and change its type from Image to Sound.

7	Follow the remaining steps in the wizard to define the layout.


Displaying & manipulating images
Displaying and manipulating images

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

Image items allow you to integrate images or pictures into your applications without depending on operating system-specific calls.  Images can be read from or written to the file system in a variety of formats, and can be stored in the database.


Running this demo: Displaying & manipulating images
Displaying and manipulating images

To run this demo:

1	Click the Filesystem Images tab.

2	Click an Image button to load an image file stored in the file system.

3	Click the Database Images tab.

4	Enter a description for an image to be stored in the database.

5	Click the Load Image from Filesystem button.  Choose an image file and click OK

6	Click Save to store the image and its description in the database.

7	Repeat these steps to store more images in the database.


Building this demo: Displaying & manipulating images
Displaying and manipulating images

To build this demo:

1	Load images from the file system.

2	Store images in the database.


Loading images from the file system
Displaying and manipulating images:  Loading images from the file system

To load images from the file system:

1	In the Layout Editor, click the Image Item tool in the tool palette.  Click on the content canvas to create and position the image item.

2	Add trigger code to call the Read_Image_File built-in to read an image file into the item.  For example:

Read_Image_File(‘myfile.bmp’, 'ANY', 'myblock.image_item');

  Next Step


Storing images in the database
Displaying and manipulating images:  Storing images in the database

To store images in the database:

1	Create a table to hold the images.  This table needs a column of type Long Raw to hold the image, plus any other columns that your application needs, such as Description.

2	In the Object Navigator, choose Tools [image] Data Block Wizard.

3	When the Data Block Wizard asks whether to base the block on a Table or on a Stored Procedure, choose Table.

4	Follow the prompts in the Data Block Wizard to create your block based on the table you created above.

5	When the Data Block Wizard is complete, run the Layout Wizard.

6	When the Layout Wizard asks you to choose which items will be displayed in this block, be sure to include the Long Raw column.

7	Follow the remaining steps in the wizard to define the layout.


Calling operating system services

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

The ORA_FFI interface allows you to call functions in Windows DLLs directly from PL/SQL.  This interface allows you to integrate platform-specific features into your applications.  This demo shows how you can call services in the Windows operating system itself.


Running this demo: Calling operating system services
Calling operating system services

To run this demo:

1	From the list, click one of the function calls.

2	In the dialog box, enter the parameters for this function.  A different dialog box will appear for each function.

3	Click the button to execute the function.  A complete description of the functions is in the Reusable Components section of this help file.

4	To see the code that is executed to call this function, choose Information [image] Generated Code.

5	To see any errors returned by this function, choose Information [image] Errors.

6	To see a description of this function, choose Information [image] Function Description.


Building this demo: Calling operating system services
Calling operating system services

To build this demo:

1	From the Object Navigator, attach the library D2KWUTIL.PLL.

2	Add trigger code to call the function that you want to use.  A complete description of the functions is in the Reusable Components section of this help file.

3	Verify that the file D2KWUTIL.DLL is in a directory in the Windows search path.

4	To call other foreign functions that are not included in D2KWUTIL.PLL, use the FFIGEN utility to generate a PL/SQL library to access the function.  The FFIGEN utility is described in detail in ORACLE_HOME\TOOLS\DOC60\US\ffigen.wri.


Controlling an OLE server (demo)
Controlling an OLE server

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

Forms Developer applications can be readily integrated with OLE servers such as spreadsheets and word processors.  The OLE2 built-in package allows your programs to access any functions or properties exposed by the object model of the OLE container.  In this example, a Microsoft Excel spreadsheet is embedded in a form.  The form is able to interact with and control the spreadsheet programmatically, as well as allowing the end user to activate the OLE container and interact directly with Excel.


Running this demo: Controlling an OLE server
Controlling an OLE server

To run this demo:

1	To copy the spreadsheet cell values from Excel to the form, click Excel to Form.

2	Modify any of the values in the form.

3	To copy the modified cell values from the form to Excel, click Form to Excel.  You will see the Excel spreadsheet recalculate its formulae and totals.

4	To edit the spreadsheet in place, double-click anywhere in the spreadsheet.  To deactivate the spreadsheet and return to the form, click anywhere outside of the spreadsheet.


Building this demo: Controlling an OLE server
Controlling an OLE server

To build this demo:

1	Create a spreadsheet containing the initial data and formulae that you want to appear in your form.

2	In the Layout Editor, click the OLE container tool and drag out the area where you want to display the spreadsheet.

3	From the pop-up menu on the OLE container, click Insert Object.

4	Click Create from File.  Enter the name of the spreadsheet.  Click OK.

5	In the Object Navigator, attach the library EXCEL.PLL.

6	To get the value of a cell, call the function GETCELL from the SPREADSHEET package contained in the EXCEL library.  To get the value of a cell, call the procedure SETCELL from the same package.

7	To add other interactions with the spreadsheet, use the OLE2 built-in package.  Consult the Excel documentation for details of Excel’s object model.


Using an ActiveX spreadtable control (demo)
Using an ActiveX spreadtable control

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

Forms Developer applications can be readily integrated with ActiveX (OCX) such as a spreadtable control.  The OLE Importer tool creates PL/SQL packages that allow your programs to access any functions or properties exposed by the object model of the ActiveX control extremely easily from PL/SQL triggers and program units.  In this example, a spreadtable control is embedded in a form.  The form is able to get and set values from the spreadtable as well as responding to events in the spreadtable such as mouse clicks.


Running this demo: Using an ActiveX spreadtable control
Using an ActiveX spreadtable control

To run this demo:

1	To add rows to the spreadtable, click Add Row.

2	To add columns to the spreadtable, click Add Column.

3	Click a cell of the spreadtable and enter a value.  To copy the value to the form, click Get Cell.

4	Change the value in Cell Value.  To copy the value back to the spreadtable, click Set Cell.

5	Double-click a row header or column header to change the background color of the row or column to red.


Building this demo: Using an ActiveX spreadtable control
Using an ActiveX spreadtable control

To build this demo:

1	In the Layout Editor, click the ActiveX Control tool and drag out the area where you want to display the spreadtable.

2	From the pop-up menu on the ActiveX Control, click Insert Object.

3	Click Create Control.  Select the spreadtable control.  Click OK.

4	In the Object Navigator, click Program [image] OLE Importer.

5	In the list of controls, select the Oracle Spreadtable control.  Select all of the listed methods and events packages.  Click OK.  PL/SQL packages to interface to the methods and events of the control will be created.

6	Create pushbuttons to perform the add row, add column, get cell, and set cell actions.  Add When-Button-Pressed triggers to the pushbuttons.  In the triggers, call the functions in the methods packages to implement these functions.

7	In the Program Unit Editor, modify the ORACLESPREADTABLE_EVENTS package to respond to the events that you want to respond to.  Add code to the ColumnDblClickByColIndex procedure and the RowDblClickByRowIndex procedure to change the background color of the clicked column or row.


Using an ActiveX video control (demo)
Using an ActiveX video control

  Run this demo 	   Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

Forms Developer applications can be readily integrated with ActiveX (OCX) such as a video control.  The OLE Importer tool creates PL/SQL packages that allow your programs to access any functions or properties exposed by the object model of the ActiveX control extremely easily from PL/SQL triggers and program units.  In this example, a video player control is embedded in a form.  The form is able to control the operation of the video player and to snapshot video frames from the control and copy them to image items.


Running this demo: Using an ActiveX video control
Using an ActiveX video control

To run this demo:

1	Click Load AVI to select an AVI file to display in the video control.

2	Click the check boxes to hide or show the video control’s own controls and status information.

3	Click Play to begin playing the video.


Building this demo: Using an ActiveX video control
Using an ActiveX video control

To build this demo:

1	In the Layout Editor, click the ActiveX Control tool and drag out the area where you want to display the video.

2	From the pop-up menu on the ActiveX Control, click Insert Object.

3	Click Create Control.  Select the video control.  Click OK.

4	From the Object Navigator, click Program [image] OLE Importer.

5	In the list of controls, select the MMVX (Multimedia Video ActiveX) control.  Select the listed methods and events packages.  Click OK.  PL/SQL packages to interface to the methods and events of the control will be created.

6	Create pushbuttons and check boxes to interact with the video control.  Add When-Button-Pressed triggers to the pushbuttons.  In the triggers, call the functions in the methods packages to implement these functions.  Add When-Checkbox-Changed triggers to the check boxes.  In the triggers, call the functions in the methods packages to set the corresponding properties of the video control.


Connecting to multiple datasources (demo)
Connecting to multiple datasources

  Run this demo	  Build this demo	    Open oca_info.pdf

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

In this demo, there are three tabbed canvases, each connected to a database on a separate connection.  In the first canvas, records are queried from the database table containing employees using the standard Forms Developer connection.  In the second canvas, records are queried from the database table on a secondary connection using transactional triggers written with the EXEC_SQL package.  The third canvas allows the user to enter arbitrary SQL against a database, and fetch any results.

This demo shows how multiple connections can be managed within one Forms Developer instance using EXEC_SQL, a client-side built-in package. It also demonstrates how a user can execute dynamic SQL against a database and fetch results.  The demo will work against Oracle, and against any ODBC data sources you have configured with the Oracle Open Client Adapter.

For more information about connecting to multiple datasources, refer to the OCA documentation (oca_info.pdf).


By default, information about using Forms Developer with foreign or multiple datasources is installed in ORACLE_HOME\TOOLS\DOCnn\<language>\oca_info.pdf where nn is the version number and <language> is the language code (e.g., US, JP etc).  If you have the Adobe Acrobat Reader installed in the default directory, click the [image] button at the top of this topic to display this document on Windows.  Otherwise, start your PDF viewer and open oca_info.pdf.


Running this demo:  Connecting to multiple datasources
Connecting to multiple datasources

To run this demo:

1	If you are connecting to any non-Oracle datasources, create an ODBC datasource to access the dBASE Employee and Department Tables.

2	Click the Connection 1 tab.

3	Query, insert, remove, and update records as you would for a normal block.

4	Click the Connection 2 tab.

5	Query, insert, remove, and update records as you would for a normal block.  Note:  When you query on this block, all qualifiers are ignored and all records are fetched.

6	To connect to another database (which has an EMP table with the same structure), click Connection.  Once connected, repeat Step 4.

7	Click the Dynamic SQL tab.

8	(Optional) To change the connection, cllick Connection.

9	Type the SQL statement you want in the SQL Statement text box.

10	Click Execute to display results in the SQL Results list box.


Building this demo:  Connecting to multiple datasources
Connecting to multiple datasources

To build this demo:

1	Create the tab pages.

2	Create the first data block.

3	Create the second data block.

4	Create the dynamic SQL block.


Connecting to multiple datasources:  Creating the tab pages

To create the tab pages:

1	In the Object Navigator, choose Tools [image] Layout Editor to display the Layout Editor.

2	Click the Tab Canvas tool in the tool palette.

3	Click and drag to draw the tab pages to the size desired.

4	In the Object Navigator, click one of the tab pages.

5	Click the Create button in the toolbar to add a third tab page.

  Next Step


Connecting to multiple datasources:  Creating the first data block

To create the first data block, based on a table:

1	In the Object Navigator, choose Tools [image] Data Block Wizard.

2	When the Data Block Wizard prompts whether to base the block on a Table or on a Stored Procedure, choose Table.

3	Follow the prompts in the Data Block Wizard to create your block.

4	When the Data Block Wizard is complete, run the Layout Wizard.

5	When the Layout Wizard prompts for the canvas for this block, choose the tab canvas and the first tab page.

  Next Step


Connecting to multiple datasources:  Creating the second data block

To create the second data block, based on EXEC_SQL transactional triggers:

1	In the Object Navigator, click the first data block.

2	While holding down the Control key, drag and drop the block under the Data Blocks node.  When the dialog prompts  whether you want to Subclass or Copy the block, click Subclass.

3	In the Object Navigator, click the new data block.

4	In the Property Palette, under the Database node, set the Query Data Source Type property to Transactional Triggers.  The icon adjacent to the property will change to indicate that the property is no longer inherited from the first data block.

5	In the Property Palette, under the Advanced Database node, set the property DML Data Target Type to Transactional Triggers.  The icon adjacent to the property will change to indicate that the property is no longer inherited from the first data block.

6	Select all the items in the new data block.  In the Property Palette, set the Tab Page property to the name of the second tab page created earlier.

7	In the Object Navigator, click the Attached Libraries node.  Click the Create button in the toolbar to add an attached Library.  Type EXEC_SQL in the Library text box and click Attach.

8	In the Object Navigator, click the block-level triggers for the new data block.

9	Create new triggers for ON-SELECT, ON-FETCH, ON-DELETE, ON-INSERT, ON-UPDATE, ON-LOCK, and ON-CHECK-UNIQUE.  For each trigger, write EXEC_SQL code to perform the appropriate tasks.  See the CON2 Package in the demo file for an example of how to write this code.

10	In the Object Navigator, click the form-level triggers.

11	Create an ON-COMMIT trigger, and write EXEC_SQL code to commit changes to the second connection.  See the CON2 Package in the demo file for an example of how to write this code.

12	In the Object Navigator, click the form-level triggers.

13	Create a WHEN-NEW-FORM-INSTANCE trigger.

14	Add EXEC_SQL code to connect to the new datasource in the WHEN-NEW-FORM-INSTANCE trigger.  In the demo form, the connection handle EXEC_SQL returns are saved in the package variable CON2.conHandle.

15	In the Object Navigator, click the form-level triggers.

16	Create a POST-FORM trigger.

17	Add EXEC_SQL code to disconnect from the new data source in the POST-FORM trigger.

18	In the Object Navigator, drag and drop the data blocks so that they appear in the correct order.

  Next Step


Connecting to multiple datasources:  Creating the dynamic SQL block

To create the dynamic SQL block, using the EXEC_SQL package:

1	In the Object Navigator, click one of the data blocks.  Click the Create button in the toolbar to add a third data block.  When prompted, select Build a new data block manually.

2	In the Object Navigator, choose Tools [image] Layout Editor to display the Layout Editor.

3	Select the third page of the tabbed canvas, and add all the buttons, text boxes, labels and list boxes, making sure the new items belong to the data block built in Step 1.

4	In the Object Navigator, double click the WHEN-NEW-FORM-INSTANCE trigger, and add PL/SQL code to connect to a new data source.  See the DYNAMIC package in the demo form for an example.

5	In the Object Navigator, add a WHEN-BUTTON-PRESSED trigger to the Connection button.  Write PL/SQL code for the trigger than connects to a new data source.  Again, see the demo form for an example.

6	Add a WHEN-BUTTON-PRESSED trigger to the Execute SQL button that opens a new EXEC_SQL cursor on the connection, executes a statements, and fetches the result.  See the DYNAMIC package and the EXEC_SQL documentation for more examples.  Each result fetched should be added to the SQL Results list box.  The EXEC_SQL cursor should be closed before the trigger exits.

7	In the Object Navigator, double click the POST-FORM trigger, and add PL/SQL code to disconnect from the new data source.  See the DYNAMIC package in the demo form for an example.


PDF document

If you have the Adobe Acrobat Reader and the PDF document installed in the default directories on Windows, the PDF document will display on your screen.  Otherwise, you will need to start your PDF viewer and open the PDF document from the directory in which it is installed.


Connecting to foreign datasources (demo)
Connecting to foreign datasources

  Run this demo 	  Build this demo	  Open oca_info.pdf

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

In this demo, there are two tabbed canvases.  The first canvas was created by modifying the Computing formulae and summaries demo.  The second canvas shows information about the datasource currently connected to, and allows the user to change connections.

This demo shows how easily a form may be modified to work with against any connection type, Oracle or ODBC.  The user can query data from the database (assuming the DEPT and EMP tables exist), and get up-to-date totals of the salary and commissions of each employee, as well as the headcount in each department.

It also demonstrates some functionality of the Open Client Adapter OPENDB PL/SQL library, such as retrieving information about the ODBC datasource connected to, and the ODBC driver being used.

For more information about connecting to foreign datasources, refer to the OCA documentation (oca_info.pdf).


Run:  Connecting to foreign datasources
Connecting to foreign datasources

To run this demo:

1	Create an ODBC datasource to access the dBASE Employee and Department Tables.

2	Click Next Dept and Previous Dept to move from department to department.  Note the summary and formula items highlighted in yellow.  No trigger code was required to calculate these values.

3	Modify the salary and commission of an employee.  Note the total salary and departmental total salary are automatically updated.

4	Add or remove employees from a department.  Note that the summary and formula items are automatically updated.

5	Click the Datasource tab.

6	Click Reconnect, and type connection information for the ODBC datasource you set up in Step 1.  You should use the connection string odbc:demodbase.  Note that after a successful connection, the information for the new datasource is displayed in the Datasource information text boxes.

7	Click the Calcform tab.

8	Repeat Steps 2-4.  Notice that the same form runs against Oracle and ODBC.


Connecting to foreign datasources:  Creating a dBASE ODBC datasource

To create a dBASE ODBC datasource:

1	Make sure you have installed the INTERSOLV ODBC Driver for dBASE provided with your Forms Developer installation CD.  If not, rerun setup from the CD and install them.

2	Run the ODBC Administrator.  You can usually find this icon in your Microsoft Windows Control Panel.

3	Click Add to add a new ODBC datasource.

4	Double-click INTERSOLV OEM 2.12 32-BIT dBASE File (*.dbf) to display the ODBC dBASE Driver Setup dialog box.

5	Type demodbase in the Data Source Name text box.

6	(Optional)  Type a suitable description in the Description text box.

7	Type ORACLE_HOME\TOOLS\DEVDEM60\BIN in the Database Directory text box.  For example, if your Oracle Home directory is C:\ORAWIN95, type C:\ORAWIN95\TOOLS\DEVDEM60\BIN.

8	Click OK.

9	In the ODBC Data Source Administrator, click OK.


Build:  Connecting to foreign datasources
Connecting to foreign datasources

To build this demo:

1	Build the Computing formulae and summaries demo.

2	Create the tabbed canvas.

3	Modify the DEPT and EMP data blocks.

4	Create the second tab page.


Connecting to foreign datasources:  Creating the tabbed canvas

To create the tabbed canvas:

1	In the Layout Editor, create a tabbed canvas on the DEMO_CANVAS.

2	In the Object Navigator, select all text items in the DEPT and EMP blocks.  In the Property Palette, under the Physical node, set the Canvas property to the new canvas and set the Tab Page property to the first page of that canvas.

  Next Step


Connecting to foreign datasources:  Modifying DEPT and EMP data blocks

To modify DEPT and EMP blocks to work with any datasource:

  Click the DEPTNO text item in the DEPT data block and the EMPNO text item in the EMP data block.  In the Property Palette, under the Database node, set the Primary Key property to Yes.

  Next Step


Connecting to foreign datasources:  Creating the second block
Connecting to foreign datasources:  Creating the second tab page

To create the second tab page:

1	In the Object Navigator, click the EMP block and click the Create button in the toolbar to add a new data block.

2	In the Layout Editor, add all GUI items that are needed, such as text items for the datasource information, and the Reconnect button.  Make sure all new items are on the second tab page, and belong to the block you created in Step 1.

3	In the Object Navigator, click the Attached Libraries node.  Click the Create button in the toolbar.

4	Type OCA in the Library text field and click Attach.

5	Create a PL/SQL package that reconnects to the database using Forms built-ins, and displays Datasource information using the OCA PL/SQL library.  See the DBCONNECTION package in the demo form for examples.

6	Create a PL/SQL function that uses the DBINFO package to get information about the connection being used.  See the procedure SHOW_DBINFO in the demo form for an example.

7	In the Object Navigator, click the Reconnect button in the block you created in Step 2.  Add a WHEN-BUTTON-PRESSED trigger that connects to a new datasource.  See the demo form for example PL/SQL code.

8	Modify the Form level WHEN-NEW-FORM-INSTANCE trigger to call SHOW_DBINFO when the form is first launched, and to save the currently used username, password and connection string so the Form can restore the original connection before exiting.

9	Add a POST-FORM trigger than restores the original connection used when the form is exiting.  See the DBCONNECTION package in the demo form for examples.


Chart to Form Builder items graphical drill-down

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This type of drill-down involves clicking on a chart to see details listed in a Form Builder text item group.  It offers an intuitive point-and-click interface for users to browse data by navigating from summary information to detail information.


Running this demo:  Chart to Form Builder items graphical drill-down
Chart to Form Builder items graphical drill-down

To run this demo:

Click on a pie slice to select a department and watch the text items update to show information about employees working in the selected department.

What’s happening?

When you click on the embedded Graphics Builder chart object, Form Builder passes mouse event information directly to Graphics Builder.  Graphics Builder determines which pie slice received the mouse click and immediately sets a parameter.  The parameter is set to the number of the department represented by the selected pie slice.  Form Builder then retrieves this parameter value and executes a block query to show information pertaining strictly to the selected department.

Note:  Form Builder can receive data back from Graphics Builder as well as pass data to Graphics Builder.  Take advantage of bidirectional data passing between Form Builder and Graphics Builder to achieve tighter integration in your applications!


Building this demo:  Chart to Form Builder items graphical drill-down
Chart to Form Builder items graphical drill-down

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, DRILL2.OGD.

In Graphics Builder:

1	Create a parameter.

Information can be passed back from Graphics Builder to Form Builder via parameters.  In the DRILL2.OGD example, we created a parameter called DNO to store the department number of the currently selected department.

2	Create a chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a Pie chart in the Chart property dialog.  We also used the Chart Property Categories tab folder to specify the labels for each pie slice.  In this example, we chose the Dept and Salary columns.

3	Specify a Drill-down Relationship in the Chart Object.

Using the Graphics Builder Drill-down tab folder, you can specify chart drill-down relationships without writing any code.

You can bring up the Object property dialog for the pie-slice group by first selecting the chart object, then clicking on a pie slice. You should see all the slices selected on the Layout canvas.  Invoke the right mouse menu over the pie-slice group to bring up its property dialog.  Navigate to the Drill-down tab folder and specify the appropriate drill-down parameters. In our DRILL2.OGD example, we specified settings such that when the user clicks on a pie slice, Graphics Builder will automatically set the value of the DNO parameter to the value of the current row’s DEPTNO column.

In Form Builder:

1	Create a block with a WHERE clause.

Using the Form Builder Default Block dialog, create a block that will contain the detail information.  In this example, we created a block based on the DEPT table.

Be sure to specify a WHERE clause for the new block.  In our example, the DEPT block has the clause where deptno = :GLOBAL.deptno.  This WHERE clause allows the block to show only the information pertaining to the user’s choice of departments.

2	Embed the chart in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.

3	Create a WHEN-MOUSE-CLICK trigger.

To create a drill-down relationship between our embedded pie chart and the DEPT block, we created a WHEN-MOUSE-CLICK trigger that did three things -- pass the mouse event information to Graphics Builder, retrieve the DNO parameter, and execute the DEPT block query.  To see the actual trigger text, open the module OGDEMOS.FMB in Form Builder and navigate to the WHEN-MOUSE-CLICK trigger of the Pie_Chart item.

4	Pass the mouse event information to Graphics Builder.

Anytime you need to be able to click on an embedded Graphics Builder chart, you need to create a WHEN-MOUSE-CLICK trigger that calls the OG.MouseDown procedure.  OG.MouseDown passes event information from Form Builder to Graphics Builder.  Graphics Builder processes this information just as if it had received the mouse click directly.  Thus, all mouse sensitive objects on the Graphics Builder layout canvas will remain mouse sensitive when embedded within Form Builder.

5	Retrieve the DNO Parameter

In our example, Graphics Builder sets the value of the DNO parameter to be the department number pertaining to the pie slice over which the mouse click occurred.  Form Builder can retrieve the value of the DNO parameter from Graphics Builder using the OG.GetNumParam procedure.  This current department number is then assigned to the :GLOBAL.deptno variable.

6	Execute the DEPT Block Query

The DEPT block query has a where clause that uses a global variable called :GLOBAL.deptno.  Once :GLOBAL.deptno is set, we execute the query to get information pertaining strictly to the current department.


Chart to Chart graphical drill-down

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This type of drill-down involves clicking on a summary chart and seeing related information displayed in a detail chart.


Running this demo:  Chart to Chart graphical drill-down
Chart to Chart graphical drill-down

To run this demo:

Click on a pie slice to select a department and watch the bar chart update to show salaries of employees working in the selected department.

What’s happening?

We created an automatic drill-down relationship between the pie chart and the bar chart.  The drill-down was set up such that Graphics Builder updates the bar chart with data specific to the selection on the pie chart.

Note:  You can establish a drill-down relationship between two charts without writing a single line of code!


Building this demo:  Chart to Chart graphical drill-down
Chart to Chart graphical drill-down

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, DRILL1.OGD.

In Graphics Builder:

1	Create a parameter.

In the DRILL1.OGD example, we created a parameter called DNO to store the department number of the currently selected department.  This is important because the DNO parameter is set when the user clicks on a slice of the pie chart (more details given in Step 4).  This parameter is then used in the WHERE clause of the query SQL statement of the detail chart.  This is the means by which the detail query retrieves data only for the department specified in the DNO parameter.

2	Create the Master chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

We first created a pie chart that showed total salaries of each department

3	Create the Detail chart.

Next, we used the Chart Genie to create a bar chart.  When creating the query, we made sure to use the DNO parameter in the WHERE clause of the SQL statement

4	Specify a Drill-down Relationship between the two charts.

Using the Graphics Builder Drill-down tab folder, you can specify chart drill-down relationships without writing any code.

When examining this demo, you can bring up the Object property dialog for the pie-slice group by first selecting the pie chart, then clicking on a pie slice.  You should see all the slices selected on the layout canvas.  Invoke the right mouse menu over the pie-slice group to bring up its property dialog.  On the Drill-down tab folder, you should see that when the user clicks on a pie slice, Graphics Builder will automatically set the value of the DNO parameter to the value of the current row’s DEPTNO column.  Lastly, you should see that Graphics Builder executes the query used by the detail chart.  Because this query select statement has a WHERE clause that uses the DNO parameter, only rows pertaining to the current DEPTNO will be retrieved.  After the detail query is executed, the detail chart will automatically update.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by DRILL1.OGD.  This particular embedded Graphics Builder object contains two charts--a pie chart and a bar chart.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart was shown.

2	Create a WHEN-MOUSE-CLICK trigger.

Anytime you need to be able to click on an embedded Graphics Builder chart, you need to create a WHEN-MOUSE-CLICK trigger that calls the OG.MouseDown procedure.  OG.MouseDown passes event information from Form Builder to Graphics Builder.  Graphics Builder processes this information just as if it had received the mouse click directly.  Thus, all mouse sensitive objects on the Graphics Builder layout canvas will remain mouse sensitive when embedded within Form Builder.

To see the actual trigger text, open the module OGDEMOS.FMB in the Form Builder and navigate to the Pie_to_Bar item’s WHEN-MOUSE-CLICK trigger.


Item to chart graphical drill-down

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This type of drill-down involves a Form Builder item and a Graphics Builder chart.  Use the item to select a set of data to be displayed in the Graphics Builder chart.


Running this demo:  Item to Chart graphical drill-down
Item to chart graphical drill-down

To run this demo:

Select a manager by clicking on a text item in the text item group.  The embedded Graphics Builder SmartChart will respond to your selection by showing you a chart of salaries for employees reporting directly to the selected manager.

What’s happening?

Form Builder communicates the selected manager’s employee number to Graphics Builder.  Form Builder also tells Graphics Builder to update the salary chart whenever a new manager is selected in the text item group.  Graphics Builder uses the information about the currently selected manager to filter the query results.  Therefore, the chart only shows salaries of employees reporting directly to the specified manager.


Building this demo:  Item to Chart graphical drill-down
Item to Chart graphical drill-down

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, DIRREP1.OGD.

In Graphics Builder:

1	Create a parameter.

In the DIRREP1.OGD example, we created a parameter called MGRID to store the employee number of the currently selected manager.  The MGRID parameter gets set by Form Builder when a manager is chosen from the Form Builder text item group.

2	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.  We also used the MGRID parameter in the query select statement.

Note: In this salary chart, you may notice that the bars have a raised 3D bevel effect.  You can get a 3D bevel effect on the chart bars by selecting the bars and choosing Format [image] Bevel from the menus.  (On Microsoft Windows, you will need to have at least a 2-pt. line width on the bars in order for the bevel effect to be visible.)

3	(Optional)  Create a PL/SQL procedure to update the chart.

In this demo, we created a PL/SQL procedure called update_chart (not to be confused with OG_update_chart).  This procedure contains one line that executes the query of the salary chart (thereby causing the chart to update automatically).  The update_chart procedure is the one that gets called from Form Builder (see below) when Form Builder instructs Graphics Builder to update the salary chart.  We could have had Form Builder pass Graphics Builder this one line of PL/SQL directly, obviating the need for another PL/SQL procedure on the Graphics Builder side.  However, when passing PL/SQL source from Form Builder to Graphics Builder using the OG.Interpret package built-in, it is often more convenient (and sometimes more efficient) to make the PL/SQL string as concise as possible.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by DIRREP1.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create a WHEN-NEW-RECORD-INSTANCE trigger for the managers block.

This trigger fires whenever input focus moves to a new item.  Thus, it will fire whenever a new manager is selected.

In our example, OGDEMOS.FMB, you can see that this trigger calls UPDATE_DIRREP_CHART, a PL/SQL procedure that sets up a call to OG.Interpret.  In the call to OG.Interpret, UPDATE_DIRREP_CHART specifies the current manager’s employee number by passing the MGRID parameter.  The PL/SQL string passed to OG.Interpret is a call to update_chart, the procedure described in Step 3 above.  Thus, each time a new manager is selected, Form Builder instructs Graphics Builder to update the salary chart with respect to the selected manager.


Item to chart elements graphical drill-down

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This type of drill-down involves a Form Builder item and a Graphics Builder chart.  Click on an item and select a set of data to be highlighted in the Graphics Builder chart.


Running this demo:  Item to Chart Elements graphical drill-down
Item to chart elements graphical drill-down

To run this demo:

Click on a manager in the text item group and watch the chart update to highlight the employees who report directly to the selected manager.  Direct reports have their salary bars highlighted in red.

What’s happening?

Each time a new manager is selected, Form Builder communicates the employee number of the selected manager and instructs Graphics Builder to update the salary chart.  There is a chart format trigger on the salary bars that checks to see if an employee reports directly to the currently selected manager.  If so, that particular salary bar is colored red.

Note:  You can use Graphics Builder chart format triggers to automatically highlight important information!


Building this demo:  Item to Chart Elements graphical drill-down
Item to chart elements graphical drill-down

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, DIRREP2.OGD.

In Graphics Builder:

1	Create a parameter.

In the DIRREP2.OGD example, we created a parameter called MGRID to store the employee number of the currently selected manager. The MGRID parameter gets set by Form Builder when a manager is chosen from the Form Builder text item group.

2	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.  Unlike Item to Chart graphical drill-down demo, we did not need to use the MGRID parameter in the query select statement.

3	Specify a format trigger on the chart bars.

You can select the chart bars by first selecting the chart, then clicking directly on a chart bar.  Once you see that the chart bars are selected, you can use the right mouse menu to bring up the property dialog for the SAL_bars.  On the bottom of the dialog, there is a field for specifying the format trigger.

In this example, the PL/SQL procedure we use as a format trigger is called COLOR_BARS_BY_MGR.  It performs a simple check to see if each employee reports to the manager identified by the parameter MGRID.  If an employee does report to the current manager, their salary bar is colored red.

4	(Optional)  Create a PL/SQL procedure to update the chart.

In this demo, we created a PL/SQL procedure called update_chart (not to be confused with OG_update_chart).  This procedure contains one line that executes the query of the salary chart (thereby causing the chart to update automatically).  The update_chart procedure is the one that gets called from Form Builder (see below) when Form Builder instructs Graphics Builder to update the salary chart.  We could have had Form Builder pass Graphics Builder this one line of PL/SQL directly, obviating the need for another PL/SQL procedure on the Graphics Builder side.  However, when passing PL/SQL source from Form Builder to Graphics Builder using the OG.Interpret package built-in, it is often more convenient (and sometimes more efficient) to make the PL/SQL string as concise as possible.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by DIRREP2.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create a WHEN-NEW-RECORD-INSTANCE trigger for the managers block.

This trigger fires whenever input focus moves to a new item.  Thus, it will fire whenever a new manager is selected.

In our example, OGDEMOS.FMB, you can see that this trigger calls UPDATE_DIRREP2_CHART, a PL/SQL procedure that sets up a call to OG.Interpret.  In the call to OG.Interpret, UPDATE_DIRREP2_CHART specifies the current manager’s employee number by passing the MGRID parameter.  The PL/SQL string passed to OG.Interpret is a call to update_chart, the procedure described in Step 4 above.  Thus, each time a new manager is selected, Form Builder instructs Graphics Builder to update the salary chart with respect to the selected manager.  By updating the salary chart, the format trigger (described in Step 3 above) fires and colors the bars appropriately.


More item to chart elements graphical drill-down

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This is another example of a drill-down relationship involving a Form Builder item and a Graphics Builder chart.  This example demonstrates the use of radio buttons to drill down on specific information


Running this demo:  More Item to Chart Elements graphical drill-down
More item to chart elements graphical drill-down

To run this demo:

Select a department from the radio group.  The embedded chart updates automatically to highlight the names of employees who work in the selected department.

What’s happening?

Each time a department is selected, Form Builder communicates the department number of the selected department and instructs Graphics Builder to update the salary chart.  There is a format trigger on the category labels that checks to see if an employee works in the currently selected department.  If so, that particular employee’s label is colored red.

Note:  You can use chart format triggers to change any graphical attribute and highlight important information!


Building this demo:  More Item to Chart Elements graphical drill-down
More item to chart elements graphical drill-down

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, DEPTS.OGD.

In Graphics Builder:

1	Create a parameter.

In the DEPTS.OGD example, we created a parameter called DNO to store the employee number of the currently selected department. The DNO parameter gets set by Form Builder when a department is chosen from the Form Builder radio group.

2	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

3	Specify a format trigger on the category tick labels.

You can select the tick labels by first selecting the chart, then clicking directly on a category label.  Once you see that the labels are selected, you can use the right mouse menu to bring up the property dialog for the label group.  On the bottom of the dialog, there is a field for specifying the format trigger.

In this example, the PL/SQL procedure we use as a format trigger is called COLOR_BY_DEPTNO.  It performs a simple check to see if each employee works in the department specified by DNO.  If an employee does work in the current department, their name label is colored red.

4	(Optional)  Create a PL/SQL procedure to update the chart.

In this demo, we created a PL/SQL procedure called update_chart (not to be confused with OG_update_chart).  This procedure contains one line that executes the query of the salary chart (thereby causing the chart to update automatically).  The update_chart procedure is the one that gets called from Form Builder (see below) when Form Builder instructs Graphics Builder to update the salary chart.  We could have had Form Builder pass Graphics Builder this one line of PL/SQL directly, obviating the need for another PL/SQL procedure on the Graphics Builder side.  However, when passing PL/SQL source from Form Builder to Graphics Builder using the OG.Interpret package built-in, it is often more convenient (and sometimes more efficient) to make the PL/SQL string as concise as possible.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by DEPTS.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create a WHEN-RADIO-CHANGED trigger for radio group.

This trigger fires whenever the user clicks on new radio button in the radio group.

In our example, OGDEMOS.FMB, this trigger was created for the DEPT_RADIO_GROUP item.  You can see that this trigger calls update_depts_chart, a PL/SQL procedure that sets up a call to OG.Interpret.  In the call to OG.Interpret, we specify the current department by passing the DNO parameter.  The PL/SQL string passed to OG.Interpret is a call to update_chart, the procedure described in Step 4 above.  Thus, each time a new department is selected, Form Builder instructs Graphics Builder to update the salary chart with respect to the selected department.  By updating the salary chart, the format trigger (described in Step 3 above) fires and colors the labels appropriately.


Change bar colors

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how you can use a variety of Form Builder items to change the colors of an embedded bar chart.


Running this demo:  Change Bar Colors
Change bar colors

To run this demo:

Choose a color from the color poplist or click on a colored pushbutton to select a color.  The embedded Graphics Builder SmartChart updates automatically to color the chart bars with your color selection.

What’s happening?

The Form Builder poplist item and push buttons have triggers that instruct Graphics Builder to execute a PL/SQL procedure that changes the color of the chart bars.

Note:  You can call any Graphics Builder PL/SQL procedure from within any Form Builder trigger.  Use this feature to deliver tightly integrated applications.


Building this demo:  Change Bar Colors
Change bar colors

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, EDITBAR.OGD.

In Graphics Builder:

1	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Write a PL/SQL procedure that changes the color of the chart bars.

In our example, we actually have several procedures (one for each color).  The reason for doing this is to simplify the calling interface when calling the procedure from Form Builder.  You can examine the source text for the procedure SETBARSRED to see an example of how to change the bar color programmatically.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by EDITBAR.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create a WHEN-LIST-CHANGED trigger for the color poplist.

This trigger fires whenever the user selects a new item from the poplist.

In our example, OGDEMOS.FMB, this trigger was created for the COLOR_LIST item.  You can see that this trigger calls handle_color_list_changed, a PL/SQL procedure that sets up a call to OG.Interpret.  In the call to OG.Interpret, we specify the PL/SQL procedure to call on the Graphics Builder side.  This information is actually stored as a value of the poplist item.  In other words, for each element in the poplist, the poplist item has a string that corresponds to the procedure call appropriate for that color selection.  Thus, when a new color is selected in the poplist, we pass the value of the poplist item (which is a string with the appropriate PL/SQL source text) to the OG.Interpret built-in. .  Examine the List Elements property of this poplist item to see how this was set up.

3	Create a WHEN-BUTTON-PRESSED trigger for each push button.

Each of the color push buttons sets the value of the poplist and calls the handle_color_list_changed procedure.

Note:  These push buttons are actually blank iconic buttons that were given different fill colors.


Change labels and reference line values

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how you can use a variety of Form Builder items to change chart labels and reference line values of an embedded Graphics Builder Chart.


Running this demo:  Change labels and reference line values
Change labels and reference line values

To run this demo:

Type in new values in the text fields.  When you finish entering a new value, hit return and the chart will update to show the new label.  Choose a reference line value and watch the reference line move on the chart to the value you specified.

What’s happening?

On the text fields, there are POST-TEXT-ITEM triggers that instruct Graphics Builder to update the chart with the new label.  On the poplist item, there is a WHEN-LIST-CHANGED trigger that instructs Graphics Builder to update the chart with the new reference line value.

Note:  You can change any chart attribute from within Form Builder.


Building this demo:  Change labels and reference line values
Change labels and reference line values

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, LABELS.OGD.

In Graphics Builder:

1	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Create a reference line on the chart.

To insert a reference line, invoke the right mouse menu over the chart object and choose the Reference Lines menu option.

3	Create procedures to set the labels and change the reference line value.

You can examine the following examples of procedures (found in LABELS.OGD):

•	setrefline

•	settitle

•	setxlabel

•	setylabel

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by LABELS.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create POST-TEXT-ITEM triggers for the text fields.

In our example, OGDEMOS.FMB, this trigger was created for the CHART_TITLE_TITEM, X_AXIS_LABEL_TITEM, and Y_AXIS_LABEL_TITEM items.  The trigger text is simply a call to OG.Interpret instructing Graphics Builder to execute the appropriate procedure (described above in Step 3).  In these examples, you should pay careful attention to the manner in which the PL/SQL string (that gets passed to OG.Interpret) is constructed.  This task is slightly tricky because of the need to embed quotes within a string.

3	Create a WHEN-LIST-CHANGED trigger for the poplist.

Similar to the POST-TEXT-ITEM trigger described above, this WHEN-LIST-CHANGED trigger is simply a call to OG.Interpret instructing Graphics Builder to execute the setrefline procedure.  In our example, OGDEMOS.FMB, you can navigate to the REFLINE_PICK_LIST poplist item to examine the trigger.

Note:  The list items in this poplist have values corresponding to the PL/SQL string appropriate for the selection.  For example, the list element $1,500 has a value of ‘setrefline(1500);’.  Thus, the value of the poplist item is passed directly to OG.Interpret.  Examine the List Elements property of this poplist item to see how this was set up.


Change axis settings

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how you can use a variety of Form Builder items to change the axis settings of an embedded Graphics Builder object.


Running this demo:  Change Axis Settings
Change axis settings

To run this demo:

Type in new values in the text fields.  When you finish entering a new value, hit return and the chart will update to show the new axis settings.

What’s happening?

On the text fields, there are POST-TEXT-ITEM triggers that call OG.Interpret and instruct Graphics Builder to update the chart with the new axis setting.

Note:  You can change chart axis settings dynamically to best present the current data.


Building this demo:  Change Axis Settings
Change axis settings

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, AXIS.OGD.

In Graphics Builder:

1	Create the chart.

Using the Graphics Builder Chart tool, start the Chart Genie to create a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Create a procedures to set axis scaling.

You can examine the procedure SETSCALE as an example of how to use PL/SQL to change the axis scaling on a chart.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by AXIS.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create POST-TEXT-ITEM triggers for the text fields.

In our example, OGDEMOS.FMB, this trigger was created for the MAX_AXIS_TITEM, STEP_AXIS_TITEM, and MIN_AXIS _TITEM items.  The trigger text is simply a call to a procedure called UPDATE_AXIS.  This procedure constructs a PL/SQL string to pass to OG.Interpret, instructing Graphics Builder to execute the SETSCALE procedure (described above in Step 2).  In these examples, you should pay careful attention to the manner in which the PL/SQL string (that gets passed to OG.Interpret) is constructed.  This task is slightly tricky because of the need to embed quotes within a string.


Change chart type

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how you can use a variety of Form Builder items to change the chart type of an embedded Graphics Builder object


Running this demo:  Change Chart Type
Change chart type

To run this demo:

Choose a chart type from the poplist or click on an iconic button representing the chart type you would like to see.  Graphics Builder responds by changing the chart type of the embedded SmartChart object.

What’s happening?

On the poplist item, there is a WHEN-LIST-CHANGED trigger that instructs Graphics Builder to change the chart type to match the selection.  The iconic push buttons have WHEN-BUTTON-PRESSED triggers that essentially make the same call as the poplist trigger.

Note: You can change the chart type dynamically to best present the current data.


Building this demo:  Change Chart Type
Change chart type

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, CTYPE.OGD.

In Graphics Builder:

1	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Create procedures to set the chart type.

You can examine the following examples of procedures (found in CTYPE.OGD):

•	bar

•	column

•	line

•	pie

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by CTYPE.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create a WHEN-LIST-CHANGED trigger for the poplist.

The WHEN-LIST-CHANGED trigger is simply a call to OG.Interpret instructing Graphics Builder to execute the setrefline procedure.  In our example, OGDEMOS.FMB, you can navigate to HANDLE_CHART_TYPE_LIST_CHANGED procedure to see how the call to OG.Interpret was set up.

Note:  The list items in this poplist have values corresponding to the PL/SQL string appropriate for the selection.  For example, the list element Column Bar Chart has a value of ‘column;’.  Thus, the value of the poplist item is passed directly to OG.Interpret.  You can examine the List Elements property of this poplist item to see how this was set up.


Highlight values above threshold

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how you can create a chart that automatically highlights data above a specified threshold.


Running this demo:  Highlight Values Above Threshold
Highlight values above threshold

To run this demo:

Specify a new threshold using the text field at the bottom and click on the Apply button.  The embedded Graphics Builder SmartChart will update automatically to highlight all values above the newly specified threshold.

What’s happening?

Form Builder passes the threshold value to Graphics Builder and instructs Graphics Builder to update the chart.  The chart has a format trigger on the chart bars that performs a check on each row and colors the bars red if the salary exceeds the threshold specified by Form Builder.


Building this demo:  Highlight Values Above Threshold
Highlight values above threshold

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, THRESH.OGD.

In Graphics Builder:

1	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Create a parameter to store the threshold value

In this example, the parameter used to store the threshold value is called MAX.  Form Builder can pass information to Graphics Builder using parameters, so we decided to use this parameter as a means of enabling Form Builder to communicate this information to Graphics Builder.

3	Specify a format trigger on the chart bars.

You can select the chart bars by first selecting the chart, then clicking directly on a bar.  Once you see that the bars are selected, you can use the right mouse menu to bring up the property dialog for the label group.  On the bottom of the dialog, there is a field for specifying the format trigger.

In this example, the PL/SQL procedure we use as a format trigger is called COLOR_BARS_BY_SAL.  It performs a simple check to see an employee’s salary is above the threshold specified in the MAX parameter.  If the salary is above the threshold, the chart bar is colored red.

4	(Optional)  Create a PL/SQL procedure to update the chart.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by THRESH.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create a POST-TEXT-ITEM trigger for the threshold text field.

In our example, OGDEMOS.FMB, the text field for specifying the threshold is the THRESHOLD_TITEM item.  This item’s POST-TEXT-ITEM trigger simply calls a procedure named UPDATE_THRESH_CHART.  This procedure instructs Graphics Builder to update the chart by using OG.Interpret.


Highlight increases

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how you can create a chart that automatically highlights significant increases in data.


Running this demo:  Highlight Increases
Highlight increases

To run this demo:

Using the radio buttons, choose whether you want to see salary increases above 7% or bonuses above 10%.  The embedded Graphics Builder SmartChart is automatically updated to highlight the information you specified.

What’s happening?

Using a parameter, Form Builder informs Graphics Builder how to highlight the chart bars -- whether by salary increases or by amount of bonus.  The chart has a format trigger on the chart bars that performs a check on each row and colors the highlights the bars if the specified criteria is met.  The bars are highlighted in two ways -- by changing the bevel style from lowered to raised and by changing the bar color from gray to yellow.

Note: You can change any graphical attribute (including color or bevel style) in order to highlight important information.


Building this demo:  Highlight Increases
Highlight increases

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, TLABELS.OGD.

In Graphics Builder:

1	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Create a parameter to determine the highlighting criteria

In this example, the parameter used to store this information is called WC.  Form Builder can pass data to Graphics Builder using parameters, so we decided to use this parameter as a means of enabling Form Builder to communicate this information to Graphics Builder.

3	Specify a format trigger on the chart bars.

You can select the chart bars by first selecting the chart, then clicking directly on a bar.  Once you see that the bars are selected, you can use the right mouse menu to bring up the property dialog for the label group.  On the bottom of the dialog, there is a field for specifying the format trigger.

In this example, the PL/SQL procedure we use as a format trigger is called HEMPS.  Based on the value of the WC parameter, it performs a simple check to see an employee’s salary increased by more than 7% or if the employee’s bonus was above 10%.

4	(Optional)  Create a PL/SQL procedure to update the chart.

In this demo, we created a PL/SQL procedure called update_chart (not to be confused with OG_update_chart).  This procedure contains one line that executes the query of the salary chart (thereby causing the chart to update automatically).  The update_chart procedure is the one that gets called from Form Builder (see below) when Form Builder instructs Graphics Builder to update the salary chart.  We could have had Form Builder pass Graphics Builder this one line of PL/SQL directly, obviating the need for another PL/SQL procedure on the Graphics Builder side.  However, when passing PL/SQL source from Form Builder to Graphics Builder using the OG.Interpret package built-in, it is often more convenient (and sometimes more efficient) to make the PL/SQL string as concise as possible.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by TLABELS.OGD.  This particular embedded Graphics Builder object contains a bar chart displaying employee salaries.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create a WHEN-RADIO-CHANGED trigger for the radio group item.

In our example, OGDEMOS.FMB, this radio group is called FTRIG_RADIO_GROUP.  The WHEN-RADIO-CHANGED trigger simply calls a procedure named UPDATE_HILIGHT_LABELS_CHART.  This procedure instructs Graphics Builder to update the chart by using OG.Interpret.


Highlight max value

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how you can create a pie chart that automatically highlights the largest value by exploding the pie slice.


Running this demo:  Highlight Max Value
Highlight max value

To run this demo:

Choose a department from the departments poplist and watch the pie chart update to show employees from the selected department.  In addition, the pie slice for the employee with the largest salary in the department is automatically exploded.

What’s happening?

Form Builder passes the department number to Graphics Builder and instructs Graphics Builder to update the chart.  When the chart is updated, it checks for the largest salary in the current department and explodes the slice corresponding to that salary value.


Building this demo:  Highlight Max Value
Highlight max value

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, MAX.OGD.

In Graphics Builder:

1	Create a parameter.

Form Builder can use parameters to quickly communicate information to Graphics Builder.  In this example, the department number is passed from Form Builder to Graphics Builder using the DNO parameter.

2	Create the salary chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a pie chart in the Chart property dialog.  We also used the DNO parameter in the SQL statement for the chart query.

3	Create a PL/SQL procedure to update the chart.

In this demo, we created a PL/SQL procedure called update_chart (not to be confused with OG_update_chart).  This procedure executes the chart query and checks for the largest value.  The pie slice for the largest value gets exploded using the og_set_explosion built-in.  Lastly, the chart is updated with the og_update_chart built-in.  Please refer to the update_chart procedure in MAX.OGD.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by MAX.OGD.  This particular embedded Graphics Builder object contains a pie chart displaying employee salaries for a specified department.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.

2	Create a WHEN-LIST-CHANGED trigger for the departments poplist.

In our example, OGDEMOS.FMB, the poplist for specifying the departments is the FTRIG_DEPT_PICK_LIST item.  This item’s WHEN-LIST-CHANGED trigger simply calls a procedure named UPDATE_MAX_PIE_CHART.  Using OG.Interpret, this procedure instructs Graphics Builder to update the chart.  The department number of the select department is also passed to the OG.Interpret procedure.


Picture charts ($ example)

  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how much flexibility you have to customize the appearance of your charts.

What’s happening?

Graphics Builder dynamically replaces the bars of the chart with the $ symbol.  Each $ object is sized to the same dimensions as the bar that it replaces.

Note:  You can use format triggers to customize each chart element, as well as to highlight information.


Building this demo:  Picture Charts -- "$" Example
Picture charts ($ example)

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, DOLLAR1.OGD.

In Graphics Builder:

1	Create a bar chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Create a format trigger to replace the bars with custom objects.

In this example, the format trigger .systematically replaces each bar with a clone of the object called useme, the $ object.  The clone is then sized and positioned with the dimensions and location of the bar.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by DOLLAR1.OGD.  This particular embedded Graphics Builder is a picture chart using $ symbols.

2	Call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.


Picture charts -- Headcount Example
Picture charts (headcount example)

  Build this demo

This demo is another example of a picture chart -- a chart comprised of smaller icons or drawings.

What’s happening?

Graphics Builder dynamically replaces the bars of the chart with the person objects.  Person objects are duplicated and stacked until there are enough to match the size of the bar they are replacing.

Note:  You can reuse this example and customize it by replacing the person object with anything you wish to use as a picture on the chart.


Building this demo:  Picture Charts -- Headcount Example
Picture charts (headcount example)

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, HC2.OGD.

In Graphics Builder:

1	Create a bar chart.

Using the Graphics Builder Chart tool, start the Chart Genie to create a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Create a format trigger to replace the bars with custom objects.

In this example, the format trigger .systematically replaces each bar with clones of the object called useme, the person object.  The person object is duplicated and stacked until there are enough to match the size of the bar they are replacing.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by HC2.OGD.  This particular embedded Graphics Builder is a picture chart using person symbols.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.


Break charts (bar example)

  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo provides an example of using the new Break Charting capabilities in Graphics Builder.

What’s happening?

Graphics Builder automatically generates subcategories of data when plotting data values on the chart.  Without this feature, there would be duplicate category entries on the chart for this particular set of data.


Building this demo:  Break charts (bar example)
Break charts (bar example)

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, BBREAK2.OGD.

In Graphics Builder:

1	Create a bar chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a bar chart in the Chart property dialog.

2	Specify a subcategory column.

In the Category tab folder of the Chart Properties dialog, there is a field on the bottom right for specifying a subcategory.  In our example, we specify the QUARTER column to be used for generating subcategories.  Thus, within each primary category (in this example, employee names), there are subcategories derived from the QUARTER column

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by BBREAK2.OGD.  This particular embedded Graphics Builder is a picture chart using person symbols.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.


Break charts (line example)

  Build this demo

This demo provides another example of using the new Break Charting capabilities in Graphics Builder.

What’s happening?

Graphics Builder automatically generates subcategories of data when plotting data values on the chart.  Without this feature, there would be duplicate category entries on the chart for this particular set of data.


Building this demo:  Break charts (line example)
Break charts (line example)

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, LBREAK1.OGD.

In Graphics Builder:

1	Create a line chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a line chart in the Chart property dialog.

2	Specify a subcategory column.

In the Category tab folder of the Chart Properties dialog, there is a field on the bottom right for specifying a subcategory.  In our example, we specify the SNAME column to be used for generating subcategories.  Thus, within each primary category (in this example, quarters), there are subcategories derived from the SNAME column.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by LBREAK1.OGD.  This particular embedded Graphics Builder is a picture chart using person symbols.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.


Automatic "other" pie slice
Automatic other pie slice

  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo provides an example of using the new auto other pie slice feature in Graphics Builder.

What’s happening?

Graphics Builder automatically creates an other slice for the pie chart.  All rows of data that fall below a specified threshold are lumped into the other slice.


Building this demo: Automatic "Other" Pie Slice
Automatic other pie slice

To build this demo:

To create an application similar to this demo, follow the steps below.  To fully understand all the concepts involved, feel free to use the new Graphics Builder Object Navigator to browse the objects in the sample file, POTHER.OGD.

In Graphics Builder:

1	Create a pie chart.

Using the Graphics Builder Chart tool, you can invoke the Chart Genie to help lead you step-by-step through the process of creating a chart.

In this example, we specified that we wanted a pie chart in the Chart property dialog.

2	Specify use of other slice.

The automatic other slice is specified in the Pie Frame Properties dialog.  To bring up the Pie Frame Properties dialog, you can invoke the right mouse menu over the chart object and choose Frame.  Navigate to the Pie Frame tab folder and check the checkbox Put slices smaller than ___ % as ‘Other’.  Provide a value for the percentage field.

In Form Builder:

1	Embed the Graphics Builder object in the form.

Use the Form Builder Chart tool to define the chart item on the layout canvas.  In this demo, the embedded chart item contains the Graphics Builder object specified by POTHER.OGD.  This particular embedded Graphics Builder is a picture chart using person symbols.

It is also necessary to call the OG.Open package built-in at some point to display the chart.  For simple applications, this call can be made in a WHEN-NEW-FORM-INSTANCE trigger.  However, in our example, we decided to defer chart loading until the stacked canvas containing this chart is shown.


Calendar

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows the ability to dynamically create an object, then manipulate it directly through the use of internal methods and properties.


Running this demo: Calendar
Calendar

The Calendar is dynamically generated and defaults to the current month with today’s date highlighted.  Many of the properties may be specified at runtime to manipulate the calendar object.

To run this demo:

1	To scroll through the months, click left arrow (previous month) and right arrow (next month) buttons below the calendar.

2	To scale the calendar fonts and layout, select a dimension from the Size (Inches) drop-down list.

3	To change the style:

•	Click one of the radio buttons:

Plain	Flat with a cream coloring
Embossed	Outline of days stand out from calendar
3D	3D button appearance
•	Click Rebuild Calendar with new values.

4	To highlight a range of dates:

•	Click the Show Date Ranges? check box.

•	Modify the dates in the Defined Ranges for Month area using standard DD/MM/YY format.

•	Click Rebuild Calendar with new values.


Building this demo: Calendar
Calendar

This demo makes use of an embedded Graphics Builder display that references the Calendar reusable component as defined in the CALENDAR package found in the CALWIDGT.PLL library.

Because the Calendar object is dynamically generated, use is made of ‘wrapper’ functions within the Graphics Builder display to bundle calls to the Calendar package.  These wrapper functions are then called using OG.INTEPRET within Form Builder to activate the Calendar in the specified Form Builder Chart Object.

To build the calendar:

In the Graphics Builder display:

PROCEDURE Build_Calendar(
CalendarName	IN VarChar2,
MonthYear	IN VarChar2,
CalWidth	IN NUMBER,
CalHeight	IN NUMBER,
CalStyle	IN NUMBER) IS
cal_hdl og_object;

BEGIN
Cal_Hdl := og_get_object(CalendarName);
if NOT OG_ISNULL(Cal_Hdl) then
  OG_DESTROY(cal_Hdl);
end if;
cal_hdl := calendar.make(CalendarName,MonthYear,CalWidth,CalHeight,CalStyle);

END;

In the Form Builder module:

PlSqlStr     := 'BUILD_CALENDAR(''CAL1'','''||
CurrentMonth||''','||
to_char(CalWidth)||','||
to_char(CalHeight)||','||
to_char(:control.style_rbg)||');';

OG.INTERPRET(:parameter.ogd_name,'control.calendar',PlSqlStr);

where

:parameter.ogd_name	is a reference to the Graphics Builder display

To move to the next month:

In the Graphics Builder display:

PROCEDURE next_month(CalendarName IN VarChar2)  IS
new_month varchar2(10);
BEGIN
  new_month := calendar.add_month(CalendarName,1);
END;

In the Form Builder module:

Begin
  PlSqlStr     := 'Next_Month(''CAL1'');';
  OG.INTERPRET(:parameter.ogd_name,'control.calendar',PlSqlStr);
END;


CALENDAR package

This package allows for the dynamic creation and manipulation of a calendar object through the use of a simple PL/SQL API.

The make function takes the listed arguments and returns a handle to the calendar object:

Object := Calendar.make (
CalName	IN	VarChar2,
CalMonth	IN	VarChar2,
CalWidth	IN	Number,
CalHeight	IN	Number,
CalStyle	IN	Number,
CalHStyle	IN	Number,
CalX	IN	Number,
CalY	IN	Number
);

where

CalName	is the name of the calendar object (default:  ’CAL’)
CalMonth	is the month to display (default:  Current Month)
CalWidth	is the width of created calendar in Inches (default:  4.5)
CalHeight	is the height of created calendar in Inches (default:  3.75)
CalStyle	is the draw style for Calendar (default:  1, where 1=Plain, 2=Embossed, 3=3D
CalHStyle	is the style for heading block (currently unused) (default:  1, where 1=per CalStyle)
CalX	X origin of Calendar (top left corner) (default:  0)
CalY	Y origin of Calendar (top left corner) (default:  0)
Overloaded routine to explicitly destroy the calendar object:

Calendar.destroy
Calendar.destroy (CalName	IN	VarChar2);
Calendar.destroy (Cal_Hdl	IN	OG_OBJECT);

where

CalName	is the name of Calendar object (default:  ‘CAL’)

Cal_Hdl	is the Calendar object’s handle

Routine to display a given range of days in a given color (RangeColour):

Calendar.set_range (
CalName	IN	VarChar2,
RangeName	IN	VarChar2,
StartDate	IN	Date,
Endate	IN	Date,
RangeColour	IN	VarChar2
);

Calendar days that fall between StartDate and EndDate have the defined  RangeName added to their own internal list of ranges in which they participate.

Routine to remove a given range from the current displayed calendar:

Calendar.reset_range (
CalName	IN	VarChar2,
RangeName	IN	VarChar2,
StartDate	IN	Date,
Enddate	IN	Date
);

The specified RangeName is removed from the list of ranges held within each day object.

Call back function to return information about the day clicked on within the Calendar object:

Calendar.day_clicked (
Day_Hdl	IN 	OG_OBJECT,
RangeName	OUT	VarChar2,
DayName	IN OUT	VarChar2
);

where

Day_Hdl	ButtonObj returned from Button procedure.
RangeName	Parameter or Global Variable in which to return participating Range List
DayName	Parameter or Global Variable in which to return name of day clicked.  Also used to determine if the current highlighted day is being deselected.  That is, is the current selected day the same as ‘clicked’ day?  If YES, deselect current day; if NO, select new day and deselect previous highlighted day.
Assumes the existence of a button procedure within the Graphics Builder display called ‘DAY_CLICKED’.  This procedure passes the ButtonObj information from the button procedure into the calendar function of the same name.  Visually this procedure highlights the selected day then returns the name of the day selected as well as the list of ranges in which the chosen day participates.


Interactive floor plan

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo illustrates how to map relational data onto a picture or diagram, in this case a floor plan of a familiar office building.  This demo uses layers to do object mapping.  It also shows how to associate a URL with a Graphics Builder object for use via the Graphics Builder Web Cartridge.  It is a good example of using table charts as pick lists, as well as a tutorial on dynamic object creation at runtime.  A fair amount of PL/SQL is used to make this demo function, but much of it is generic code that can be reused in your own custom relational diagrams.


Running this demo: Interactive floor plan
Interactive floor plan

To run this demo:

Before you begin, ensure that the GDEMOBLD.SQL script has been run.  If this is not the case, you will receive a SQL Query Execution Error when you try to run the floor plan demo.

There are two purposes for which the interactive floor plan is ideal.  The most common use of the floor plan is to find the physical location of a person whose first name, last name, or user ID is already known.  To do this, simply click on the desired list indexing button in the right-center portion of the screen.  The indexing options are by first name, last name, and user ID.  The list of names is sorted on the right side of the screen.  Click Next and Prev to scroll through the entries in the list.  When you have found the desired person, simply click on their entry in the list to display their office highlighted by a red rectangle and their personal information at the bottom of the screen.  If you are running this demo from the Graphics Builder Web Cartridge, you can click on the person’s user ID (colored and underlined in blue) to send them an email message via your Web browser.

The second use of this demo is as an office browsing tool.  To view the occupant of an office, just click on its region in the floor plan image.  The occupant's name appears at the bottom of the screen and is highlighted in the people list to the right.  If the office contains no occupant, the table chart at the bottom of the screen is replaced by the message “Click on an office to display its occupant(s)”.


Building this demo: Interactive floor plan
Interactive floor plan

To build this demo:

1	Import your floor plan’s image using the Import Image command found in the Graphics Builder File Menu.

2	Place the floor plan image in its own special layer and make it visible and inactive in the layer settings dialog box.

3	Create a new layer.  Make this layer visible and active.

4	Draw the floor plan regions by tracing them over the image using the Graphics Builder drawing tools (rectangle, polygon, etc.).

5	Name the objects from Step 4 with a unique key into your dataset.  In this case, use the office number the object represents, such as 832 or 828A.

6	Move the layer containing the data-mapped objects from Steps 4 and 5 below the floor plan image layer using the layer settings dialog box.

7	Create a table chart below the floor plan image to display the office occupant’s personal data.

8	Create another table chart to the right of the floor plan image to display a list of all people present in the floor plan’s offices.

9	Create buttons to index the table chart from Step 8 by categories appropriate for your data, such as first name, last name, and userid.

10	Write the drill-down button procedure on the floor plan region objects created in Step 4.

11	Write the drill-down button procedures for the table charts from Steps 7 and 8.

12	Optionally, write a format trigger on the table chart from Step 7 to attach a mailto URL to the userid of each office occupant.

13	Beautify your table charts from Steps 7 and 8 using bevels, fonts, and colors accessed through the Graphics Builder Layout Editor and through the Graphics Builder Format Menu.

Note:  Use the PL/SQL triggers found in Floorplan.ogd as templates for completing Steps 10-12.


Organizational chart

  Run this demo 	  Customize this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

An Org chart is not one of the provided chart types for graphics, but is a derived type.


Running this demo:  Organizational chart
Organizational chart

To run this demo:

1	Ensure that you have connected to username that has the demo table emp installed.

2	Run the ogd.  Three of the four levels of the emp table will appear.

3	Select the arrows to chose the navigate direction.

4	Click on the nodes to move in the indicated direction.

5	Selecting a node with the up direction set causes redrawing of the chart from one level above the node clicked.

6	Select a node with the down direction set causes redrawing of the chart from the node clicked.

7	Use the button to reset the chart to the starting point.


Customizing this demo:  Organizational chart
Organizational chart

To customize this demo:

1	Modify the query to select from a table or view of your data. Use column aliases to minimize impact on the code.

2	Set parameter TOP_EMPNO to the highest employee's (CEO) employee number.

3	Package g variable can be set from Form Builder by using an og.interpret call.  Each of the names below must be prefaced with a g. to reference the variable.  Example:

og.interpret(<ogd>,<chart item>,'g.levelmax := 4;');

Org Chart Variables:

g.yorg1	number := 0.25;  -- vertical distance between ename and job
g.levelmax	integer := 3;    -- Number of levels to display
g.ename_color	varchar2(20) := 'green';  -- ename background color
g.job_color	varchar2(20) := 'white';  -- job background color
g.text_color	varchar2(20) := 'black';  -- text color
g.line_color	varchar2(20) := 'red';    -- pointer foreground color


Television guide

  Run this demo 	 Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo shows how an existing chart type can be modified for a particular application.  In this  case the application is a TV Guide type demo, but would apply also to other scheduling applications.  The basic chart type is a Gantt and scrolling controls are provided for the date axis.


Running this demo:  Television Guide
Television guide

To run this demo:

1	Open the OGD in Graphics Builder.

2	Run the OGD.

3	Set the following parameters to pass range information:

•	:time1 to set scroll increment

•	:sh1/eh1 start/end times in 'DD-MON-YY HH24:MI:SS'

•	:sv1/ev1 start/end channel range (max = 200)

4	If you want to zoom in and scroll a portion of the display, use the left and right arrows.  They will allow you to scroll in the increment indicated in the parameter time1.

5	If you want to return to normal view click Return All Rows.

6	Click on the desired program to drill down and display more information.

Note:

•	Gdemobld.sql - creates the tv table

•	Gdemodrp.sql   - drops the tv table


Building this demo:  Television Guide
Television guide

To build this demo:

1	Start off with a gantt chart.

2	Set the X axis to channels and also set the subcategory to channels.

3	Dynamically create text objects on the chart elements.

4	Use the og_set_date_automax/min to control scaling on the date axis.

5	Use parameters in the query to control the range data displayed.

6	Use parameters to customize the look of the application.


World map

 Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This example shows both the use of Graphics Builder as a method of visually selecting information as well as use of dynamically created CUSTOM PROPERTIES of an object.


Building this demo:  World map
World map

The use of a World Map in CGM format allows for each country (or group of countries) to be treated as a separate object or button, hence allowing to drill further into each region.

To build this demo:

1	Create a base layer and import a MAP in an object based format (e.g., CGM).

2	Select then group the desired country objects into a single continent object.

3	Create a new layer for each desired continent and place a copy of the Continent group on the respective layer.  Note for ease of use name the new layer in a consistent manner; e.g., <Continent Name>_Lyr.

4	Place dot objects where cities are desired.  In this case the dots are named after the Airport Codes (where known!) found in the LOCATIONS TABLE.  Group Cities dots into a group; e.g., <Continent Name>_Cities.

5	Create a button procedure on each Continent Group to Activate the correspondingly named layer which matches the selected region.  For example:

BEGIN

   RegionName             := og_get_name(buttonobj);
   gb.CurrentRegion       := RegionName;
   gb.CurrentRegionColour := og_get_bfcolor(buttonobj);
   og_set_bfcolor(buttonobj,'red');
   LayerLyrHdl            := og_get_Layer(RegionName||'_Lyr');
   LayerObjHdl            := og_get_Object(RegionName||'_Lyr');
   If NOT og_isnull(LayerLyrHdl) then
      ActLyrName := get_active_layer;
      og_show_layer(LayerLyrHdl);
      og_activate_layer(LayerLyrHdl);
      og_set_property(LayerObjHdl,'RETURN_TO_LAYER',ActLyrName);
      name_cities(og_get_object(RegionName||'_Cities'));
   End If;
END;

6	The names of the cities are populated by returning the City name from the Query based on the AIRPORT_CODE (city dot’s name) for each member of the new active layer’s city group (e.g., ‘<continent name>_cities’  and also creates custom properties for both the dot and it’s corresponding  label to store information about the city.  The Function takes advantage of some short cut routines to create text at a given point and to subsequently centre it on that point.

BEGIN
  GrpChildCount  := og_get_childcount(CityGroup);
  GrpIndex       := 0;
  While GrpChildCount != GrpIndex
   Loop
     CityHdl   := og_get_child(CityGroup,GrpIndex);
     CityObbox := og_get_obbox(CityHdl);
     CityCode  := og_get_name(CityHdl);
     Centre.x  := CityObbox.x + (CityObbox.width/2);
     Centre.y  := CityObbox.y + (CityObbox.height + OG_INCH/20);
     Get_City_Info(CityCode, CityLocId, CityName, CampusName, MultiSiteFlag);
     og_set_property(CityHdl,'LOCATION_ID',CityLocID);
     og_set_property(CityHdl,'CITY_NAME',  CityName);
     og_set_property(CityHdl,'CAMPUS_NAME',CampusName);
     og_set_property(CityHdl,'MSF',        MultiSiteFlag);
     CityLabel_Hdl := make_label(CityName, CityCode||'_Lbl',
       Centre,'black','Arial', 8);
     centre_text_on_point(CityLabel_Hdl,Centre);
     og_set_property(CityLabel_Hdl,'LOCATION_ID',CityLocID);
     og_set_property(CityLabel_Hdl,'CITY_NAME',  CityName);
     og_set_property(CityLabel_Hdl,'CAMPUS_NAME',CampusName);
     og_set_property(CityLabel_Hdl,'MSF',        MultiSiteFlag);
     GrpIndex  := GrpIndex + 1;
  End Loop;
END;

7	To keep track of which Layer is active and where we came from, the Map OGD uses CUSTOM PROPERTIES on the layer itself to store information regarding where the user came from and to keep track of the City that may be currently selected on the new layer.  This information is subsequently used if the user exits the layer to 1) reset the selected city, 2) return to the layer from whenst they came.  The code example (see Step 5 above)  uses a common  function to return the name of the currently active layer (GET_ACTIVE_LAYER).

8	When the user Clicks on a city the Dot is scaled and the colour set to ‘red’.  If the value of the MSF (standing for Multi Site Flag ) Custom Property  is set to ‘Y’ then further drill down is expected and a new layer ‘<CITY_NAME>_Lyr’  is activated, else the relevant PARAMETERS are set with the information contained within the City Dot.  In both cases the user gets feed back on which dot is selected by it’s change of colour and subsequent scaling in size.

Determine the Bottom Right corner of object as well as Bottom Right after sizing as follows;

   oldBR.x  :=  2 * centre.x;
   oldBR.y  :=  2 * centre.y;
   newBR.x  := (ScaleFactor) * centre.x;
   newBR.y  := (ScaleFactor) * centre.y;
   og_scale(dot_hdl, centre, oldBR, newBR);
/* Set the highlight colour of chosen city */
   og_set_bfcolor(dot_hdl,Colour);


Digital clock

 Run this demo 	 Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

This demo illustrates how to use Graphics Builder for multimedia applications with real-time performance requirements.  The clock makes use of multiple windows and layers, sound, animation, timers, and dynamic creation and modification of objects at runtime.  It is a compelling reminder of how a little PL/SQL can go a long way in making your application more exciting and responsive to user input.

When you launch the clock demo, you will get a small window displaying the current time.  If you have a sound card, you will hear a ticking sound with each passing second.


Running this demo: Digital Clock
Digital clock

To run this demo:

1	Move or resize the clock display window in the usual manner.  You will find that the display window dynamically readjusts itself after a resize, scaling fonts as required.

2	Click once on the time display to switch to the date view.  Click again to return the display to the time view.

3	Shift-click on the time or date display to bring up a preferences window that allows you to select time display color as well as to toggle on or off the following options:  display time with seconds, append AM/PM to time, show day of the week, display 24 HR time, play clock sound.

4	Click OK to dismiss the preferences window.


Building this demo: Digital Clock
Digital clock

To build this demo:

This demo was built around a Graphics Builder timer that fires every second, thereby updating the clock display.  A PL/SQL trigger is executed which updates the display to reflect the current time, adjusts the clock size to fit the current window size (in case a resize has occurred since the last update), and updates the clock’s look and feel to reflect any changes in clock preferences.

Note that there are no static graphical objects in the main layer of this display.  The clock readout is created dynamically at runtime through the display’s open trigger.  The preferences dialog was created at design time and is located in a hidden layer that is revealed when the user shift-clicks on the clock readout at runtime.

Use the PL/SQL triggers found in CLOCK.OGD as templates for building your own media-rich real-time applications.


Drill-down chart demos

Chart to Form Builder

Chart to chart

Item to chart

Item to chart elements

More item to chart elements


Runtime chart editing demos

Change axis settings

Change bar colors

Change chart type

Change labels and reference line values


Conditional formatting chart demos

Highlight increases

Highlight maximum value

Highlight values above threshold


Dynamic visual and multimedia demos

Calendar

Interactive floor plan

Organizational chart

Television guide

World map

Digital clock


ActiveX controls

The following types of ActiveX controls are provided for demo purposes only:

Image	Display and image files in a variety of formats.  Similar to the Form Builder image item.
Sound	Play and record sound clips.  Similar to the Form Builder sound item.
Spreadtable	Spreadtable, or grid, control.
Tabsheet	Tab controls.  Provides more presentation options than the Form Builder tab canvas, but is more complex to implement.
Video	Play video (AVI) files.
Each of these controls has its own help file describing its properties, methods, and events.  These help files are located in the ORACLE_HOME\TOOLS\DOC60\US directory.  You can also view these help files from within Form Builder:

1	In the Layout Editor, create an ActiveX container.

2	Insert a control of one of the types above.

3	In the Property Palette, select Control Help and click More.

Note: these controls are provided for demo purposes only.  They are not supported by Oracle Corporation.


Standard Object Library
About the Standard object library

The Standard object library, STNDRD20.OLB, contains standard classes and visual attribute groups to help you build applications that conform to a standard look and feel.  The standards can be used as provided, or you may choose to extend or modify them for your own requirements.  These standards are designed to provide a Windows-style look and feel.  Where appropriate, the objects in the library are set as SmartClasses so that they can be readily applied to the objects that you create in your forms.

The classes in this object library use a set of standard visual attribute groups (VAGs).  These VAGs must be copied or subclassed to your Form Builder module.  The VAGs can be found on the VAGs page of the Standard object library.

The coordinate system of all the objects in this library is Real: Points.

Hint:  If you use STNDRD20.FMB as your template form, your module will automatically contain VAGs subclassed from the standard VAGs.

Alert classes

This page contains recommended styles and button labels for Alerts (message boxes).

Item classes

This page contains standard classes for buttons, text items, list items, check boxes and radio groups.  Specific text item classes are provided for date items and for display items.

Layout classes

This page contains standard classes for document windows, modal and modeless dialog windows, and a standard canvas for toolbars.  It also contains two standard frames, one for single row blocks and the other for multirow blocks.  These frames contain our suggested standards for layout, spacing, margins, distance between prompts and items, and so on.

Visual Attribute Groups (VAGs)

This page contains VAGs that can be used to provide a Windows style to your applications.  If you want to use these VAGs in your application, you need to copy or subclass them into your module.  If you use the STNDRD20.FMB template form, your module will automatically include these VAGs.

Components

This page contains the Object Groups to implement the classes described in the Reusable Components section of the help file.  In addition, it contains a standard pop-up menu.  If you intend to customize the standard pop-up menu, remember that Form Builder only allows you to add menu items to the end of a subclassed menu.  If you want to delete menu items or add menu items between existing items, you must copy, not subclass, this object.


Oracle Applications object library

This object library, APPSSTDS.OLB, contains property classes and visual attribute groups that enable you to build modules that have the same look and feel as Oracle Applications.  These standards have a Windows look and feel, but they have also been designed for maximum portability.

There is also a template form, APPSSTDS.FMB, that contains visual attribute groups and property classes subclassed from the object library.  This template form also includes a special color palette. We recommend that you use this template form as the basis of any forms that you create using these standards.  The coordinate system for the objects in this form and object library is Real: Inches.


Standard menus

These demos include a number of standard menus that you may wish to reuse and customize.

MENUDEF.MMB and MENUDEFS.MMB

Source versions of the default menu built into Form Builder.  MENUDEF.MMB mimics the built-in DEFAULT menu and MENUDEFS.MMB mimics the built-in DEFAULT&SMARTBAR menu.

Note: modifying these menu modules will not affect Form Builder modules that use either of the built-in DEFAULT menus.  Those menus are built in to the Form Builder runtime and cannot be modified.  Only Form Builder modules that explicitly use MENUDEFS.MMB or MENUDEF.MMB will be affected.

STNDRD20.MMB

An outline of a menu with standard Windows items and terminology.

NAVIGATE.MMB

A menu suitable for use with modules using the Navigator class.


Sample icons

Sample icons can be found in ORACLE_HOME\TOOLS\DEVDEM60\BIN.  This directory includes all of the icons used in the demos and sample menus.


About the Calendar class

This Component enables you to easily add a calendar or date list of values to an application.  The Calendar window will automatically display the calendar according to the NLS settings that are currently in effect, adjusting the start of the week (e.g.,  Sunday in the United States, Monday in Western Europe) and the month and day names accordingly.  The Component contains the following Form Builder objects:

•	A Package called Date_LOV, containing routines that the developer uses to interact with the Date List of Values window.

•	A Block named Date_Conrol_Block, containing the buttons that control which month and year is displayed.

•	A Block named Date_Button_Block, containing the buttons that represent each day of the month.

•	A Content Canvas-View named Date_Lov_Canvas, containing all the items from both blocks.

•	A Visual Attribute named Date_Normal_VA, containing the attributes for a date button that is displayed normally.

•	A Visual Attribute named Date_Selected_VA, containing the attributes for a date button that is displayed as selected.

•	A Visual Attribute named Date_Weekend_VA, containing the attributes for a date button that is displayed as a weekend day.


Creating a calendar

To create a calendar:

1	From the Components page of the STNDRD20.OLB object library, copy or subclass the Calendar object group.

2	Attach the PL/SQL library CALENDAR.PLL, which contains the Date_LOV package, to your module.

3	Create a Key-Listval trigger on the date item for which you would like to use the Date List of Values window.  Add code to display the calendar using the Date_LOV package.

4	If you want the end user to be able to close the Date List of Values window by clicking on the window close button in the title bar, create a form level When-Window-Closed trigger

The calendar will appear whenever the end user invokes a list of values for the date item.  A single calendar can be re-used on many different date items.  Simply create a Key-Listval trigger for each item.


Calendar class routines

Date_LOV.Get_Date


Date_LOV.Get_Date

Description

Displays calendar with the month and year specified in the Display_Date argument.  The day of the month is displayed with bold numbers.  The date chosen by the end user is returned to the item specified by the Return_Item argument.

Syntax

PROCEDURE Date_LOV.Get_Date
(display_date	DATE,
 return_item	VARCHAR2,
 window_x_pos	NUMBER := 0,
 window_y_pos	NUMBER := 0,
 window_title	VARCHAR2 := ‘Date List of Values’,
 ok_label	VARCHAR2 := ‘OK’,
 cancel_label	VARCHAR2 := ‘Cancel’,
 highlight	BOOLEAN := TRUE,
 autoconfirm	BOOLEAN := TRUE,
 autoskip	BOOLEAN := FALSE);

Parameters

display_date	The date to display when the Date List of Values window first appears.
return_item	The name of the block and item to return the chosen date to.
window_x_pos	Specifies the X coordinate of  the Date List of Values window.
window_y_pos	Specifies the Y coordinate of  the Date List of Values window.
window_title	Title to display in the Date List of Values window.
ok_label	Label for the OK button.
cancel_label	Label for the Cancel button.
highlight	Specifies that weekend days will appear in a different color.
autoconfirm	Specifies that the date will immediately be returned t when the end user clicks a day.
autoskip	Specifies that the input focus moves to the next item in sequence.


About the Picklist Class

This Component enables you to easily add a Picklist or Chooser style interface to an application, to provide functionality that mimics the picklists of wizards and other dialogs.  The component contains the following Form Builder objects:

•	A Package called Pick_List, containing routines that the developer uses to populate and interact with the Picklist.  These routines, described below are similar to the Form Builder built-ins to manipulate standard objects such as poplists and record groups.

•	Visual Attributes and Property Classes, described below, that the developer uses to customize the appearance of the Picklist.

•	A Block named Picklist_In, containing the items that can be selected.

•	A Block named Picklist_Out, containing the items that have been selected.

•	A Block named Picklist_Control, containing the buttons that control the movement of items.

•	A Stacked Canvas-View named Picklist_In_Canvas, containing the list of items that can be selected.

•	A Stacked Canvas-View named Picklist_Out_Canvas, containing the list of items that have been selected.

•	A Stacked Canvas-View named Picklist_Button_Canvas, containing the buttons that control the movement of items.

•	A Property Class named Picklist_Item, containing the properties for an item.

•	A Property Class named Picklist_Pushbutton, containing the properties for a pushbutton.

•	A Visual Attribute named Picklist_Element, containing the attributes for an item that is displayed as unselected.

•	A Visual Attribute named Picklist_Element_Selected, containing the attributes for an item that is display as selected.

Usage Notes

The Picklist control is populated and manipulated using two objects called Lists, named 'List_In' and 'List_Out'.  You create an instance of the Picklist with the Create_Picklist built-in in the Pick_List package.  Only one Picklist can be created in a form at any given time.

Each List contains an array of Elements; these can be populated either from a query or added and removed explicitly, one by one.  Each Element has two properties:  a Label and a Value.  The Label is displayed in the list, for example an Employee Name.  The Value is used as necessary in your application; for example, an Employee Number might be used to fetch other details of an employee.  An Element is referenced by the list, such as 'List_In' or 'List_Out', together with an Index number, representing its sequential position in the List.

After making changes to the state of the  picklist, you must always call Pick_List.Display_Picklist to display the changes.  This allows you to make a number of changes to the list without the overhead or nuisance of screen redraw.


Creating a picklist

To create a picklist:

1	From the Components page of the STNDRD20.OLB object library, copy or subclass the Picklist object group.

2	Attach the PL/SQL library PICKLIST.PLL, which contains the Pick_List package, to your module.

3	Using the Pick_List package create a Picklist, populate the Picklist with elements, and display the Picklist.

4	Add code as necessary to manipulate the Picklist control.  Remember to call Pick_List.Display_Picklist to display any changes to the picklists.


Picklist class routines

Pick_List.Create_Picklist

Pick_List.Delete_Picklist

Pick_List.Populate_Picklist_With_Query

Pick_List.Set_Picklist_Selection

Pick_List.Get_Picklist_Selection_Count

Pick_List.Get_Picklist_Selection

Pick_List.Get_Picklist_Element_Count

Pick_List.Get_Picklist_Element_Label

Pick_List.Get_Picklist_Element_Value

Pick_List.Set_Picklist_Element_Label

Pick_List.Set_Picklist_Element_Value

Pick_List.Clear_Picklist

Pick_List.Add_Picklist_Element

Pick_List.Delete_Picklist_Element

Pick_List.Display_Picklist

Pick_List.Picklist_Element_Move


Pick_List.Set_Picklist_Selection

Description

Marks the specified element as selected.  If keystate is Shift, then a range is marked as selected.  If keystate is Control, then the individual element is added to the list of selected elements.

Syntax

Pick_List.Set_Picklist_Selection
(picklist	VARCHAR2,
 picklist_index	NUMBER,
 keystate	VARCHAR2);

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_index	The index of the element to select.  The first element number is 1.
keystate	The key modifier, in the same form as :system.mouse_button_shift_state.


Pick_List.Get_Picklist_Selection_Count

Description

Returns the number of items in the specified picklist that are currently marked as selected.

Syntax

FUNCTION Pick_List.Get_Picklist_Selection_Count
(picklist	VARCHAR2);

Returns

NUMBER

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.


Pick_List.Get_Picklist_Selection

Description

Returns the sequential number of the specified selected element.  The currently selected rows are numbered starting with 1.

Syntax

FUNCTION Pick_List.Get_Picklist_Selection
(picklist	VARCHAR2,
 selection_number	NUMBER);

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_index	The index of the selected element.  The first selected element is numbered 1.
Returns

NUMBER


Pick_List.Get_Picklist_Element_Count

Description

Returns the number of items in the specified picklist.

Syntax

FUNCTION Pick_List.Get_Picklist_Element_Count
(picklist	VARCHAR2);

Returns

NUMBER

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.


Pick_List.Get_Picklist_Element_Label

Description

Returns the label of the specified element.

Syntax

FUNCTION Pick_List.Get_Picklist_Element_Label
(picklist	VARCHAR2,
 picklist_index	NUMBER);

Returns

VARCHAR2

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_index	The index of the element.  The first element number is 1.


Pick_List.Get_Picklist_Element_Value

Description

Returns the value of the specified element.

Syntax

FUNCTION Pick_List.Get_Picklist_Element_Value
(picklist	VARCHAR2,
 picklist_index	NUMBER)

Returns

VARCHAR2

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_index	The index of the element.  The first element number is 1.


Pick_List.Set_Picklist_Element_Label

Description

Sets the label for the specified element.

Syntax

PROCEDURE Pick_List.Set_Picklist_Element_Label
(picklist	VARCHAR2,
 picklist_index	NUMBER,
 label	VARCHAR2);

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_index	The index of the element.  The first element number is 1.
label	The label for this element.


Pick_List.Set_Picklist_Element_Value

Description

Sets the value for the specified element.

Syntax

PROCEDURE Pick_List.Set_Picklist_Element_Value
(picklist	VARCHAR2,
 picklist_index	NUMBER,
 value	VARCHAR2);

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_index	The index of the element.  The first element number is 1.
value	The value for this element.


Pick_List.Clear_Picklist

Description

Clears the contents of the picklist.

Syntax

PROCEDURE Pick_List.Clear_Picklist
(picklist	VARCHAR2);

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.


Pick_List.Add_Picklist_Element

Description

Adds an element to the specified picklist.

Syntax

PROCEDURE Pick_List.Add_Picklist_Element
(picklist	VARCHAR2,
 picklist_index	NUMBER,
 label	VARCHAR2,
 value	VARCHAR2);

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_index	The index of the element.  The first element number is 1.
label	The label for this element.
value	The value for this element.


Pick_List.Delete_Picklist_Element

Description

Deletes the specified element from the picklist

Syntax

PROCEDURE Pick_List.Delete_Picklist_Element
(picklist	VARCHAR2,
 picklist_index	NUMBER);

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_index	The index of the element.  The first element number is 1.


Pick_List.Populate_Picklist_With_Query

Description

Populates a picklist with the results of the specified query and returns the Oracle error if any associated with the query.

Syntax

FUNCTION Pick_List.Populate_Picklist_With_Query
(picklist	VARCHAR2,
 query	VARCHAR2);

Returns

NUMBER

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
query	Specify the query used to populate the picklist.  The query must select exactly two columns of type VARCHAR2.  The first column will be the label that will appear in the picklist and the second column will be the value.


Pick_List.Create_Picklist

Description

Creates the structures needed for the picklist reusable component.  Call this function to create the picklist before attempting to insert elements.

Syntax

PROCEDURE Pick_List.Create_Picklist;


Pick_List.Delete_Picklist

Description

Destroys the structures needed for the picklist reusable component.  Call this function to release resources associated with the picklist.

Syntax

PROCEDURE Pick_List.Delete_Picklist;


Pick_List.Display_Picklist

Description

Displays the specified picklist.  Note that the displayed state of the picklist does not change until you call this procedure.  This allows you to make numerous changes to the picklists without causing screen flicker.

Syntax

PROCEDURE Pick_List.Display_Picklist
(picklist	VARCHAR2);

Parameters

picklist	Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.


Pick_List.Picklist_Element_Move

Description

Moves elements from one list to the other.

Syntax

PROCEDURE Pick_List.Picklist_Element_Move
(from_picklist	VARCHAR2,
 to_picklist	VARCHAR2,
 picklist_option	VARCHAR2);

Parameters

from_picklist	The picklist to move from.  Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
to_picklist	The picklist to move to.  Specify the constants PICK_LIST.LIST_IN or PICK_LIST.LIST_OUT.
picklist_option	Specify whether you wish to move only the selected elements or all elements.  Use the constants PICK_LIST.PICKLIST_SELECTED or PICK_LIST.PICKLIST_ALL to specify which elements to move.


About the Wizard class

This Component enables you to easily add a Wizard style interface to an application, to provide functionality that mimics the wizards of the Forms Developer builders and other Windows products.  The component contains the following Form Builder objects:

•	A Package called Wizard, containing routines that the developer uses to interact with the Wizard.

•	A Window named Wiz_Window, containing the displayed pages of the Wizard.

•	A Block named Wiz_Bar, containing the standard buttons used to navigate through the Wizard.

•	A Block named Wiz_Bar, displaying the standard buttons of the Wiz_bar block.

Usage Notes

Create the canvases that you want to appear as the pages of your wizard.  Lay them out just as you would any other canvas.  Ensure that each canvas has type 'Stacked' and that the canvas is assigned to the window WIZ_WINDOW.  You can create many wizards in one form; just assign all the canvases to this window.  You do not need to create a separate window or wizard object for each wizard that you want to display.

The canvases that you create do not need to be all the same size.  The wizard will automatically resize itself to the size of the largest View in the canvases that you use.

If you place items from a single block on different canvases (pages of the wizard), you will need to set the item properties Next Navigation Item and Previous Navigation Item to prevent the user from expectedly navigating from page to page when pressing the [Next Item] key.  The wizard will not work as expected if you allow the user to navigate in this way.  All page-to-page navigation must be performed using the wizard’s buttons.

To display your wizard, call the package function Wizard_Begin supplying a list of the canvases to use as the wizard pages.  In many cases this will be all that you need to do as the default code on the Wiz_Bar buttons will take care of the standard behavior.

For specialized requirements you can call two other routines: Wizard_Show, to display a particular page out of sequence; and Wizard_Finish, to hide the wizard dialog box


Creating a wizard

To create a wizard:

1	From the Components page of the STNDRD20.OLB object library, copy or subclass the Picklist object group.

2	Attach the PL/SQL library WIZARD.PLL, which contains the Wizard package, to your module.

3	Using the Wizard package, display a sequence of canvases as the pages of a Wizard.

4	Add application-specific code as necessary to the Back, Next, Finish and Cancel buttons.  The component already contains code for these but it will usually be necessary to customize this code for each application.


Wizard class routines

Wizard.Wizard_Begin

Wizard.Wizard_Show

Wizard.Wizard_Finish

Wizard.Page_Name

Wizard.Page_Number

Wizard.Page_Count


Wizard.Wizard_Begin

Description

Verifies that there at least two pages to display, that all the pages named in the list exist, and that all are assigned to the Wizard window.  Resizes the Wizard to fit the largest view of all the listed canvases.  Displays the Wizard window in the center of the screen.  Returns TRUE if the Wizard successfully displays.

Syntax

FUNCTION Wizard.Wizard_Begin
(Pages	VARCHAR2,
 TitleString	VARCHAR2,
 ShowPageNum	BOOLEAN);

Parameters

pages	comma-separated list of canvases to display as pages of Wizard
titlestring	text to display as title of Wizard window
showpagenum	display the text ‘Page m of n’ on each Wizard page
Returns

BOOLEAN


Wizard.Wizard_Show

Description

Sets the wizard display to the specified page.  The application must also navigate to an item on the specified page.  Use this routine to implement conditional page sequences or optional pages in a Wizard.

Hint: minimize the use of  Wizard_Show to change the order of presented pages.  As far as possible, a Wizard should present a simple, linear sequence of pages to the end user.

Syntax

PROCEDURE Wizard.Wizard_Show
(PageNum NUMBER);

Parameters

pagenum	number of page to display.  The first page is numbered 1.


Wizard.Wizard_Finish

Description

Hide (close) the Wizard window.  It is the developer’s responsibility to navigate to an appropriate item; if the focus is left in an item on one of the Wizard pages, Form Builder will automatically redisplay that item, thus negating the effect of Wizard_Finish.

Syntax

PROCEDURE Wizard_Finish;


Wizard.Page_Name

Description

VARCHAR2 package variable.  Contains the name of the page (canvas) currently displayed.  Do not modify this value.  To change the displayed page, use Wizard.Wizard_Show.


Wizard.Page_Number

Description

NUMBER package variable.  Contains the sequence number of the page (canvas) currently displayed.  Do not modify this value.  To change the displayed page, use Wizard.Wizard_Show.


Wizard.Page_Count

NUMBER package variable.  Contains the total number of pages (canvases) to display in the Wizard.  Do not modify this value.


About the Drag & Drop PL/SQL Library
About the Drag and Drop PL/SQL Library

  Related Topics

This PL/SQL library provides simple procedures to help implement drag and drop, or direct manipulation interfaces.  It contains a package called Mouse, which includes routines to implement Click and Move events.  The Drop event is always application specific, and this code must therefore be provided by the developer.

Usage Notes

This package only allows you to drag items within a single canvas.

You may wish to change the cursor shape during a drag operation.  To do so, call the Set_Application_Property built-in in your WHEN-MOUSE-DOWN and WHEN-MOUSE-UP triggers.

The code to implement the Drop event will depend on your specific application, but will typically include a check on the mouse X and Y position to determine where the item was dropped, using the variables :SYSTEM.MOUSE_X_POS and :SYSTEM.MOUSE_Y_POS.


Enabling drag and drop on an item

To enable drag and drop on an item:

1	Attach the PL/SQL library DRAG.PLL, which contains the  Mouse package, to your module.

2	Create a WHEN-MOUSE-DOWN trigger on each item that can be dragged.  From this trigger, call the Click routine from the Mouse package.

3	Create a WHEN-MOUSE-MOVE trigger on each item that can be dragged.  From this trigger, call the Move routine from the Mouse package.

4	Create a WHEN-MOUSE-UP trigger on each item that can be dragged.  In this trigger, write your application specific code.


Mouse package routines

Mouse.Click

Mouse.Move

Mouse.D_X

Mouse.D_Y


Mouse.Click

Description

Initiates a drag and drop operation.  Determines the item to be dragged.

Syntax

PROCEDURE Mouse.Click
(item_name VARCHAR2 := NULL);

Parameters

item_name	the name of the item to move.  Defaults to the item clicked.


Mouse.Move

Description

Moves the item currently being dragged.

Syntax

PROCEDURE Mouse.Move


Mouse.D_X

Description

NUMBER package variable.  Contains the horizontal distance that the mouse has moved since the beginning of the current drag operation.  Use this variable in a WHEN-MOUSE-MOVE trigger in conjunction with Mouse.D_Y to move more than one item at a time.


Mouse.D_Y

Description

NUMBER package variable.  Contains the vertical distance that the mouse has moved since the beginning of the current drag operation.  Use this variable in a WHEN-MOUSE-MOVE trigger in conjunction with Mouse.D_X to move more than one item at a time.


About the Forms Utilities PL/SQL Library
About the Form Builder Utilities PL/SQL Library

  Related Topics

This PL/SQL library contains a function to write out the contents of a block.


Using the Form Builder Utilities packages
Using the Form Builder Utilities package

To use the Form Builder Utilities package:

1	Attach the PL/SQL library F60UTIL.PLL to your module.

2	Add trigger code to call the routines in the F60UTIL package.


F60UTIL package routines

F60UTIL.Write_Block


F60UTIL.Write_Block

Description

Writes the data from the specified block to a flat file.

Syntax

FUNCTION F60UTIL.Write_Block
(block_name	VARCHAR2,
 output_file	VARCHAR2 := ‘output.lis’,
 output_mode	VARCHAR2 := ‘W’,
 column_align	BOOLEAN := TRUE,
 sep_char	VARCHAR2 := ‘ ’,
 rec_option	VARCHAR2 := ‘ALL’,
 displayed_only	BOOLEAN := FALSE);

Parameters

block_name	the name of the block to write to the flat file.
output_file	the full name of the output file, including any path and file extension.
output_mode	the output mode.  Specify W for write or A for append.
column_align	column-align the data in the output file.
sep_char	the character string that will separate columns in the output file.
rec_option	determines which records are written.  Valid values are ALL, VIEWED, and DISPLAYED.
displayed_only	should all items or only displayed items be written to the output file.


About the Conversion PL/SQL Library

  Related Topics

This PL/SQL library contains procedures that perform complex conversions.


Using the Conversion packages
Using the Conversion package

To use the Conversion package:

1	Attach the PL/SQL library D2KCONV.PLL to your module.

2	Add trigger code to call the routines in the D2KConv package.


D2KConv package routines

D2KConv.Expr_to_Number

D2KConv.String_to_Date


D2KConv.Expr_to_Number

Description

Converts a string expression consisting of numbers, the operators *, +, -, and /, and bracketed sub-expressions to its numeric value.  Numbers can be in any format accepted by the To_Number SQL function.  For example, "(3.5+2.5)*8" returns the value 48.  If the string cannot be converted, the standard exception VALUE_ERROR is raised.

Syntax

FUNCTION Expr_to_Number
(expression	VARCHAR2);

Parameters

expression	the string expression to evaluate.
Returns

NUMBER


D2KConv.String_to_Date

Description

Converts a string containing a date to its DATE equivalent.  The string may be in one of a number of date formats supplied by the programmer.  The formats are separated by a "," by default, but if any of the formats you want to use contain a comma, you must use a different separator character.  Each format is tried in turn until the date is successfully converted.  If the string cannot be converted using any of the format masks, the standard exception VALUE_ERROR is raised.  For example,

mydate := D2kConv.String_to_Date
          (:emp.hiredatestring,
           ‘DD-MON-YYYY\DD-MM-YYYY’,

           ‘\’);

Syntax

FUNCTION D2kConv.  String_to_Date
(source	VARCHAR2,
 formats	VARCHAR2 default 'DD-MON-YYYY',
 separator	VARCHAR2 default ',')

Parameters

source	the string to attempt to convert
formats	a list of date formats to attempt
separator	the separator character used to delimit the separate format masks
Returns

DATE


About the Windows System Interface PL/SQL Library

  Related Topics

This PL/SQL library contains many commonly-used routines specific to the Windows environment.  The utility consists of a PL/SQL library and a Windows DLL and can be used from any of the Forms Developer builders.

The PL/SQL library uses the ORA_FFI package and can be used as a model for creating your own DLL calls.  The utility FFI_GEN is also available to help you generate a PL/SQL interface to DLLs.

Usage Notes

The PL/SQL library handles errors and return codes from the DLL functions internally.  Your application can choose to retrieve or ignore errors.  When an error or return code is produced, two public package variables are set by the internal error mechanism.

•	WIN_API.ERROR_ENCOUNTERED (BOOLEAN) is set to TRUE and

•	WIN_API.ERROR_STACK holds the text of the error raised.  Most errors will be prefixed with the name of the function that raised them.

Additionally, nearly all the function calls have an optional BOOLEAN argument RaiseExceptions.  If this is set and there is a problem with the call, then one of several PL/SQL exceptions will be raised (generally the NO_DATA_FOUND exception).  The programmer can then use a standard exception handler to deal with the error.

The exceptions raised by each package are documented in the package header.  There are some public exceptions defined in WIN_API, which may be raised if the API functions can not initialize (say the DLL is not available).


Using the Windows System Interface PL/SQL Library

1	Attach the PL/SQL library D2KWUTIL.PLL to your module.

2	Ensure that D2KWUT32.DLL is in the Windows system directory or a directory in the Windows path.

3	Add trigger code to call the Windows System Interface routines.


Windows System Interface routines

Win_Api_Dialog.Save_File

Win_Api_Dialog.Open_File

Win_Api_Dialog.Select_Printer

Win_Api_Environment.Read_INI_File

Win_Api_Environment.Write_INI_File

Win_Api_Environment.Read_Registry

Win_Api_Environment.Write_Registry

Win_Api_Environment.Get_Windows_Username

Win_Api_Environment.Get_Environment_String

Win_Api_Environment.Get_Windows_Directory

Win_Api_Environment.Get_Temp_Directory

Win_Api_Environment.Get_Net_Connection

Win_Api_Session.One_Session

Win_Api_Session.Change_MDI_Icon

Win_Api_Session.Timeout_Start_Timer

Win_Api_Session.Timeout_Get_Inactive_Time

Win_Api_Session.Timeout_Delete_Timer

Win_Api_Shell.WinExec

Win_Api_Shell.WinHelp

Win_Api_Shell.MousePosition

Win_Api_Shell.SendMessage

Win_Api_Shell.SendKeys

Win_Api_Utility.Delete_File

Win_Api_Utility.Move_File

Win_Api_Utility.Copy_File

Win_Api_Utility.Generate_Temp_Filename

Win_Api_Utility.Get_Active_Window

Win_Api_Utility.Play_Wav

Win_Api_Utility.Sleep

Win_Api_Utility.InterruptCheck


Win_Api_Dialog.Save_File

Description

Displays a 'File Save As' dialog box.  You can control the dialog title, example file name, start directory and file filter.  The function returns the path and name of the file that the user selects in the dialog.  In addition to the capabilities of the standard built-in Get_File_Name, this function provides access to Windows-specific features that allow you to customize the dialog extensively.  It returns the full path and name of the selected file.

Syntax

FUNCTION Win_Api_Dialog.Save_File
(SampleName	IN	VARCHAR2,
 Title	IN	VARCHAR2	DEFAULT 'Save File As',
 StartDirectory	IN	VARCHAR2	DEFAULT '$WINDIR$',
 FileFilter	IN	VARCHAR2	DEFAULT 'All files(*.*)|*.*|',
 Modal	IN 	BOOLEAN	DEFAULT TRUE,
 AdvancedFlags	IN	PLS_INTEGER	DEFAULT WIN_API.OFN_FLAG_DEFAULT,
 RaiseExceptions	IN 	BOOLEAN	DEFAULT FALSE);

Parameters

SampleName	The example file name
Title	The Title for the Dialog Box
StartDirectory	Directory from which the dialog starts
FileFilter	Restrict the list of files.  The filter string should be in the format  'Description|Format|'
Modal	Whether the dialog is modal or modeless
AdvancedFlags	Set the attributes of the File dialog.  See your Microsoft documentation for details on each flag.You can set several flags by adding values of each constant together.
RaiseExceptions	If TRUE, then if no filename is returned, the exception NO_DATA_FOUND will be raised.
Returns

VARCHAR2


Win_Api_Dialog.Open_File

Description

Displays a 'File Open' dialog box.  You can control the dialog title, start directory and file filter.  The function returns the path and name of the file that the user selects in the dialog.

Syntax

FUNCTION Win_Api_Dialog.Open_File
(Title	IN VARCHAR2 DEFAULT 'Open File',
 StartDirectory	IN VARCHAR2 DEFAULT '$WINDIR$',
 FileFilter	IN VARCHAR2 DEFAULT 'All files(*.*)|*.*|',
 Modal	IN BOOLEAN DEFAULT TRUE,
 AdvancedFlags	IN PLS_INTEGER DEFAULT WIN_API.OFN_FLAG_DEFAULT,
 RaiseExceptions	IN BOOLEAN DEFAULT FALSE);

Parameters

Title	The Title for the Dialog Box

StartDirectory	Directory from which the dialog starts

FileFilter	Restrict the list of files.  The filter string should be in the format  'Description|Format|'

AdvancedFlags	Set the attributes of the File dialog.  See your Microsoft documentation for details on each flag.  You can set several flags by adding values of each constant together.

RaiseExceptions	If  TRUE, then if no filename is returned, the exception NO_DATA_FOUND will be raised.

Returns

VARCHAR2


Win_Api_Dialog.Select_Printer

Description

Displays a standard Printer Selection dialog box.  The user can then select a particular printer name from it.  This function does not actually Print any files, it merely provides a mechanism for selecting a printer name and port.

Syntax

PROCEDURE Win_Api_Dialog.Select_Printer
(PrinterName 	OUT	VARCHAR2,
 Port	OUT	VARCHAR2,
 RaiseExceptions 	IN	BOOLEAN DEFAULT FALSE);

Parameters

PrinterName	name of the selected printer.
Port	the port to which the printer is connected e.g.  LPT1:, FAX: etc.
RaiseExceptions	If TRUE, then if no printer is selected, the exception NO_DATA_FOUND will be raised.


Win_Api_Environment.Read_INI_File

Description

Obtains the value of a specific variable from a named INI file.  This function is of most use to 16 bit applications which will be deployed on Windows 3.1 or 3.11, as these versions of Windows use INI files for storing application settings.  Additionally applications which are deployed both to 16 and 32 bit Windows can use INI files as a common method of storing settings.  Applications which will only be deployed on 32 bit Windows can use the Registry to store settings (see the Read_Registry and Write_Registry functions).
If you are trying to read values from the ORACLE.INI file it is better to use the Tool_Env.Getvar() built-in as this built-in is portable.

Syntax

FUNCTION Win_Api_Environment.Read_INI_File
(FileName	IN	VARCHAR2,
 Section	IN	VARCHAR2,
 Entry	IN	VARCHAR2,
 RaiseExceptions	IN	BOOLEAN DEFAULT FALSE);

Parameters

FileName	Name of INI file.  If the full path is not supplied then the DOS PATH will be searched
Section	Section in INI file where the entry is located.
Entry	Name of Variable to read
RaiseExceptions	If set to TRUE, then if the requested variable is not found the exception NO_DATA_FOUND will be raised
Returns

VARCHAR2


Win_Api_Environment.Write_INI_File

Description

Sets the value of a specific variable in a named INI file.  This function is of most use to 16 bit applications which will be deployed on Windows 3.1 or 3.11, as these versions of Windows use INI files for storing application settings.  Additionally applications which are deployed both to 16 and 32 bit Windows can use INI files as a common method of storing settings.  Applications which will only be deployed on 32 bit Windows can use the Registry to store settings (see the Read_Registry and Write_Registry functions).

Syntax

PROCEDURE Win_Api_Environment.Write_INI_File
(FileName	IN	VARCHAR2,
 Section	IN	VARCHAR2,
 Entry	IN	VARCHAR2,
 Value	IN	VARCHAR2,
 RaiseExceptions	IN	BOOLEAN DEFAULT FALSE);

Parameters

FileName	Name of INI file.  If the full path is not supplied then the DOS PATH will be searched
Section	Section in INI file where the entry is located.
Entry	Name of Variable to set
Value	Value of the variable to write as a string.
RaiseExceptions	If set to TRUE, then if the write fails the exception NO_DATA_FOUND will be raised


Win_Api_Environment.Read_Registry

Description

Reads the value of a non-binary setting in the registry.  If you want to read an Oracle environment setting (normally stored in \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE), use the Tool_Env.Getvar() function instead as this built-in is portable.

Syntax

FUNCTION Win_Api_Environment.Read_Registry
(RegPath	IN 	VARCHAR2,
 RegEntry	IN	VARCHAR2,
 RaiseExceptions	IN	BOOLEAN DEFAULT FALSE);

Parameters

RegPath	The full path in the registry to the required value e.g HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
RegEntry	Name of the variable to read e.g.  ORACLE_HOME
RaiseExceptions	If TRUE, then if the requested variable is not found the exception NO_DATA_FOUND will be raised.
Returns

VARCHAR2


Win_Api_Environment.Write_Registry

Description

Sets the value of a particular entry in the Registry.  The path to the entry must already exist.  This procedure can only be used to set String registry entries.

Syntax

PROCEDURE Win_Api_Environment.Write_Registry
(RegPath	IN 	VARCHAR2,
 RegEntry	IN	VARCHAR2,
 RegValue	IN	VARCHAR2,
 RaiseExceptions	IN	BOOLEAN DEFAULT FALSE);

Parameters

RegPath	The full path in the registry to the required value e.g HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
RegEntry	Name of the variable to read e.g.  ORACLE_HOME
RegValue	Value to set
RaiseExceptions	If TRUE, then if the requested variable cannot be set the exception NO_DATA_FOUND will be raised.


Win_Api_Environment.Get_Windows_Username

Description

On Windows, returns the Username that was used to logon to Windows (if any).  This function does NOT report the Oracle username.  If you attempt to call this function from within 16 bit Windows then the Exception WIN_API.CALL_NOT_ALLOWED (declared in the WIN_API package header) will be raised.

Syntax

FUNCTION Win_Api_Environment.Get_Windows_Username
(RaiseExceptions 	IN	BOOLEAN DEFAULT FALSE);

Parameters

RaiseExceptions	If TRUE, then if the function fails to retrieve a username (e.g.  the user did not logon to Windows correctly) the exception NO_DATA_FOUND will be raised.

Returns

VARCHAR2


Win_Api_Environment.Get_Environment_String

Description

Expands an environment variable defined within DOS

Syntax

FUNCTION Win_Api_Environment.Get_Environment_String
(VariableName	IN	VARCHAR2,
 RaiseExceptions 	IN	BOOLEAN DEFAULT FALSE);

Parameters

Variable Name	The variable to expand, e.g.  PATH
RaiseExceptions	If TRUE, then if the function fails to find the variable (or it is NULL) then  the exception NO_DATA_FOUND will be raised
Returns

VARCHAR2


Win_Api_Environment.Get_Windows_Directory

Description

Returns the path to the Windows 'home' directory on the machine.  The path is returned without a trailing directory separator.

Syntax

FUNCTION Win_Api_Environment.Get_Windows_Directory
(RaiseExceptions 	IN	BOOLEAN DEFAULT FALSE);

Parameters

RaiseExceptions	If TRUE, then if the function fails to find the Windows directory then  the exception NO_DATA_FOUND will be raised
Returns

VARCHAR2


Win_Api_Environment.Get_Temp_Directory

Description

Returns the path to the directory that is currently being designated for writing temporary files to.  (See also the function Generate_Temp_Filename).  The path is returned without a trailing directory separator.

Syntax

FUNCTION Win_Api_Environment.Get_Temp_Directory
(RaiseExceptions 	IN	BOOLEAN DEFAULT FALSE);

Parameters

RaiseExceptions	If TRUE, then if the function fails to find a temporary directory then  the exception NO_DATA_FOUND will be raised
Returns

VARCHAR2


Win_Api_Environment.Get_Net_Connection

Description

Expands the drive letter of an attached network drive into the full path to the device.

Syntax

FUNCTION Win_Api_Environment.Get_Net_Connection
(DriveLetter	IN	VARCHAR2,
 RaiseExceptions 	IN	BOOLEAN DEFAULT FALSE);

Parameters

DriveLetter	Drive letter assigned to the network connection
RaiseExceptions	If TRUE, then if the drive letter is not assigned to a network path then the exception NO_DATA_FOUND will be raised
Returns

VARCHAR2


Win_Api_Session.One_Session

Description

Checks if there is already a copy of an application running; By checking for an existing Form Builder runtime, you can prevent the end user from running more than one copy of Form Builder.  There is an optional argument to cause the session to swap to the already running copy of the application.

One_session can either search for the title of the application or for the Window class of the application.  The former allows the end user to start two runform sessions as long as the applications invoked have different window titles (in the MDI frame).  The latter restricts the user to a single Form Builder runtime.

The BOOLEAN return is TRUE if  exactly one copy of the named application is running, otherwise FALSE.

Syntax

FUNCTION Win_Api_Session.One_Session
(WindowTitle	IN VARCHAR2,
 ModuleName	IN VARCHAR2,
 MatchType	IN VARCHAR2,
 Activate	IN BOOLEAN,
 Class	IN VARCHAR2 DEFAULT WIN_API.D2K_WINDOW_CLASS,
 RaiseExceptions	IN BOOLEAN  DEFAULT FALSE);

Parameters

WindowTitle	MDI Window Title to match.
ModuleName	Name of executable e.g. IFRUN60.EXE'
MatchType	Match on window title only, module name only, or both.  Values 'WINDOW', 'MODULE', 'BOTH'.
Activate	Activates the other session if found.  Values TRUE or FALSE.
Class	Window Class of MDI window.  This defaults for Form Builder, but for other applications you will have to provide this value.
RaiseExceptions	If  TRUE, then finding another instance of the application will raise NO_DATA_FOUND
Returns

BOOLEAN


Win_Api_Session.Change_MDI_Icon

Description

Changes the MDI window icon.  This is the icon that appears when the application is minimized.

Syntax

PROCEDURE Win_Api_Session.Change_MDI_Icon
(MDIWindow	IN	PLS_INTEGER,
 IconFile 	IN 	VARCHAR2,
 IconIndex 	IN	PLS_INTEGER DEFAULT 0);

Parameters

MDIWindow	Handle to the MDI frame window.  Do not use the handle returned by Get_Window_Property as this is the MDI client.  Instead use the Win_Api_Utility.Get_Active_Window function
IconFile	File which contains the icon, which can be an EXE, DLL or ICO file.
IconIndex	Index of icon to retrieve.  For an ICO file this will be 0.


Win_Api_Session.Timeout_Start_Timer

Description

The Timeout facility consists of three calls.  Timeout_Start_Timer starts a background timer, Timeout_Get_Inactive_Time returns the time in seconds that have elapsed since the user did anything in the application, and Timeout_Delete_Timer removes the timer.

Syntax

PROCEDURE Win_Api_Session.Timeout_Start_Timer
(WindowHandle IN PLS_INTEGER);

Parameters

WindowHandle	Handle to the window where you want to test for inactivity.


Win_Api_Session.Timeout_Get_Inactive_Time

Description

The Timeout facility consists of three calls.  Timeout_Start_Timer starts a background timer, Timeout_Get_Inactive_Time returns the time in seconds that have elapsed since the user did anything in the application, and Timeout_Delete_Timer removes the timer.

Syntax

FUNCTION Win_Api_Session.Timeout_Get_Inactive_Time;

Returns

NUMBER


Win_Api_Session.Timeout_Delete_Timer

Description

The Timeout facility consists of three calls.  Timeout_Start_Timer starts a background timer, Timeout_Get_Inactive_Time returns the time in seconds that have elapsed since the user did anything in the application, and Timeout_Delete_Timer removes the timer.  Call this procedure before exiting the application.

Syntax

PROCEDURE Win_Api_Session.Timeout_Delete_Timer;


Win_Api_Shell.WinExec

Description

Execute a Windows program from within an Forms Developer product.  The program runs independently of the product that called it.

Syntax

PROCEDURE Win_Api_Shell.WinExec
(Command	IN	VARCHAR2,
 WindowStyle 	IN	PLS_INTEGER DEFAULT WIN_API.SW_SHOWNORMAL,
 RaiseExceptions	IN	BOOLEAN DEFAULT FALSE);

Parameters

Command	The full command string to start the application
WindowStyle	Used to determine how the application should start, the following options are available as constants in the WIN_API package header:
	WIN_API.SW_SHOWNORMAL	Starts with application’s default
	WIN_API.SW_SHOWNOACTIVATE	Application does not have focus
	WIN_API.SW_SHOWMINIMIZED	Starts minimized and active
	WIN_API.SW_SHOWMINNOACTIVE	Starts Ionized without focus.
	WIN_API.SW_SHOWMAXIMIZED	Starts Maximized
RaiseExceptions	If TRUE, if the function fails to find the specified executable the exception NO_DATA_FOUND will be raised.


Win_Api_Shell.WinHelp

Description

Calls a Help file.  Options are provided for providing several forms of help, including topic-based context sensitive help.

Syntax

PROCEDURE Win_Api_Shell.WinHelp
(HelpFile 	IN	VARCHAR2,
 Target	IN	VARCHAR2,
 HelpType	IN	PLS_INTEGER,
 RaiseExceptions	IN	BOOLEAN 	DEFAULT FALSE);

Parameters

HelpFile	The full name and path of the Help file.
Target	The Search String (for HELP_KEY or HELP_PARTIALKEY) or the number of the required Topic (for HELP_CONTEXT).
HelpStyle	The following options are available as constants in the WIN_API package header:
	WIN_API.HELP_CONTEXT	Show a specific help topic
	WIN_API.HELP_INDEX	Display the Index Page (Windows 3.1 only)
	WIN_API.HELP_FINDER	Use instead of Index on Windows
	WIN_API.HELP_KEY	Search for an exact match with the value supplied.
	WIN_API.HELP_PARTIALKEY	Displays the Help Search screen with the value supplied
	WIN_API.HELP_SETCONTENTS	Display the contents screen.  Supply the topic number of the contents topic as the target.
	WIN_API.HELP_SETINDEX	Display the Index screen.  Supply the topic number of the Index topic as the target.
RaiseExceptions	If TRUE, then if the function fails to find the specified help file or target, the exception NO_DATA_FOUND will be raised


Win_Api_Shell.MousePosition

Description

Provides the Mouse X and Y co-ordinates at any time (not just in mouse related triggers).  Useful for detecting if the mouse has been moved since you last checked.  The returned values are in Pixels relative to the physical screen.

Syntax

PROCEDURE Win_Api_Shell.MousePosition
(Xpos 	OUT	NUMBER,
 Ypos	OUT	NUMBER);

Parameters

X_Pos	returns the X postion of the mouse
Y_Pos	returns the Y position of the mouse


Win_Api_Shell.SendMessage

Description

An extremely powerful API call that allows you to insert messages into the Windows Message Queue of an application.  Misuse of this function can crash an application, cause it to behave unpredictably, or even destabilize your system.  Do not use this function unless you have a clear understanding of the Windows messaging mechanism.

Returns the return code from sending the message.  Some SendMessage  calls will be expected to result in a non-zero return code.  This varies from message to message.  In the example below the number returned from the WM_MDICASCADE message will be the number of windows actually cascaded.

For full information about the available messages, the extra parameters that are required for them, and their return codes, refer to your Microsoft documentation.

Syntax

PROCEDURE Win_Api_Shell.SendMessage
(Target	IN	PLS_INTEGER,
 MessageCode	IN	PLS_INTEGER,
 Param1	IN	PLS_INTEGER DEFAULT 0,
 Param2	IN	PLS_INTEGER DEFAULT 0,
 RaiseExceptions	IN	BOOLEAN	DEFAULT FALSE);

Parameters

Target	The window handle to the window or widget that you want to send the message to.
In Form Builder, you can get the handle from the various Get_Object_Property() built-ins using the WINDOW_HANDLE property.

MessageCode	A numerical constant which defines the message to send.  See the WIN_API header and your Microsoft documentation.
Param1	Message-specific parameter 1 to define extra information for the message
Param2	Message-specific Parameter 2.
RaiseExceptions	TRUE or FALSE(Default) If set to TRUE, then if the SendMessage function results in a non-zero return code, the exception NO_DATA_FOUND will be raised.  Normally you should set this to FALSE as non-zero returns from SendMessage do not always indicate an error.
Returns

NUMBER


Win_Api_Shell.SendKeys

Description

Plays back Keystroke Macros to an application.  You can combine keystrokes together in a macro and apply modifiers to them.  Generally function keys can be addressed to the MDI window.  Other sets of Keystrokes e.g.  Sending Ctrl+Home to a Multi line text item are best done in the When-new-item-instance trigger of that item, using the Window_Handle for the item obtained by the Form Builder build-in Get_Item_Property.

Syntax

PROCEDURE Win_Api_Shell.SendKeys
(hWnd	IN	PLS_INTEGER,
 Keys	IN	VARCHAR2,
 RaiseExceptions	IN	BOOLEAN	DEFAULT FALSE);

Parameters

Target	The Window handle of the window you want to send the keystrokes to.  You can get this handle by using the GET_WINDOW_PROPERTY built-in.
Keystrokes	The keystrokes that you want to send to the window.  Use these characters for modifier keys: Shift = +; Control =
^; Alt =	%.  Modifiers can be ‘Escaped’ by enclosing them in braces {}.
To apply the modifiers to a sequence of keys, enclose the keys in brackets, as in "^(abc)".  Other special keys are enclosed in braces thus:

{Backspace}

{Break}

{CapsLock}

{Clear}

{Delete}

{End}

{Enter}

{Esc}

{Help}

{Home}

{Insert}

{NumLock}

{PgDown}

{PgUp}

{PrtSc}

{ScrollLock}

{Tab}

{F1} - {F12}

{Up}

{Down}

{Left}

{Right}

RaiseExceptions	If TRUE, then if the procedure fails to send or parse the keystrokes, the explicit PL/SQL exception NO_DATA_FOUND will be raised


Win_Api_Utility.Delete_File

Description

Deletes the named file.

Syntax

PROCEDURE Win_Api_Utility.Delete_File
(FileName	IN	VARCHAR2,
 RaiseExceptions	IN 	BOOLEAN DEFAULT FALSE);

Parameters

FileName	The name of the file to delete, including the path if required
RaiseExceptions	If TRUE, then if the file was not found or could not be removed, the exception NO_DATA_FOUND will be raised


Win_Api_Utility.Move_File

Description

Moves the named file.

Syntax

PROCEDURE Win_Api_Utility.Move_File
(OldFileName	IN	VARCHAR2,
 NewFileName	IN	VARCHAR2,
 RaiseExceptions	IN 	BOOLEAN DEFAULT FALSE);

Parameters

OldFileName	The name of the file to move, including the path if required
NewFileName	The new name of the file
RaiseExceptions	If TRUE, then if the file was not found or could not be moved, the exception NO_DATA_FOUND will be raised


Win_Api_Utility.Copy_File

Description

Copies the specified file.

Syntax

PROCEDURE Win_Api_Utility.Copy_File
(OldFileName	IN	VARCHAR2,
 NewFileName	IN	VARCHAR2,
 AllowOverWrite	IN	BOOLEAN DEFAULT FALSE,
 RaiseExceptions	IN 	BOOLEAN DEFAULT FALSE);

Parameters

OldFileName	The name of the source file to copy, including the path if required.
NewFileName	The name of the file to copy to.
AllowOverWrite	Specify whether the file is overwritten if it already exists.
RaiseExceptions	If TRUE, then if the file was not found or could not be copied for some reason, the exception NO_DATA_FOUND will be raised


Win_Api_Utility.Generate_Temp_Filename

Description

Generate a uniquely named temporary file.  It returns the full name and location of the file, and also pre-creates the file with a zero length.  You can use the Delete_File function in WIN_API_UTILITY to clean the file up when your application no longer needs it.

Syntax

FUNCTION Win_Api_Utility.Generate_Temp_Filename
(Path	 	IN	VARCHAR2 DEFAULT NULL,
 Prefix 	IN	VARCHAR2 DEFAULT 'D2K',
 RaiseExceptions	IN	BOOLEAN DEFAULT FALSE) RETURN VARCHAR2;

Parameters

Path	Where to create the file.  If NULL, the working directory will be used.
Prefix	Three-character prefix to the generated name
RaiseExceptions	If set to TRUE, then if no filename is generated or created, the exception NO_DATA_FOUND will be raised
Returns

VARCHAR2


Win_Api_Utility.Get_Active_Window

Description

Returns the window handle of the currently active window.  This is useful if you want to retrieve a window handle of a non-forms window.

Syntax

FUNCTION Win_Api_Utility.Get_Active_Window
(RaiseExceptions IN	BOOLEAN DEFAULT FALSE );

Parameters

RaiseExceptions	Raise NO_DATA_FOUND exception if the command was not successful
Returns

PLS_INTEGER


Win_Api_Utility.Play_Wav

Description

Plays a specified sound file (in WAV format).  The sound can be played synchronously or asynchronously.

Syntax

PROCEDURE Win_Api_Utility.Play_WAV
(FileName	IN	VARCHAR2,
 Asynchronous	IN	BOOLEAN DEFAULT FALSE,
 RaiseExceptions	IN	BOOLEAN DEFAULT FALSE);

Parameters

FileName	The name and path of the WAV file to play, including the path if required.  Specify  NULL to stop a sound that is currently being played
Asynchronous	Set to TRUE to allow the application to continue.  FALSE will wait until the sound has finished before any returning.
RaiseExceptions	If TRUE, then if the sound file was not found or the PC is not sound enabled, the exception NO_DATA_FOUND will be raised.


Win_Api_Utility.Sleep

Description

Suspends an application for a specified number of milliseconds.

Syntax

PROCEDURE Win_Api_Utility.Sleep
(SleepTime    IN 	PLS_INTEGER);

Parameters

Sleeptime	Number of milliseconds for application to sleep


Win_Api_Utility.InterruptCheck

Description

Tests whether a button has been pressed during PL/SQL processing.  This would not normally be possible in Form Builder, as the When-Button-Pressed trigger will not been processed until all other operations has finished.

Syntax

FUNCTION Win_Api_Utility.InterruptCheck
(ButtonHandle	IN	PLS_INTEGER);

Parameters

ButtonHandle	Handle of the button (returned by using the GET_ITEM_PROPERTY built-in)

Returns

BOOLEAN


PL/SQL libraries used in demos

Conversion

Drag and Drop

Form Builder Utilities

Oracle Applications objects

Standard object

Windows System Interface


Glossary

A

    action
    active window/view
    ActiveX
    Ada
    aggregation
    alert
    alignment
    alias
    All tool
    ancestor
    ancestor group
    anchor
    anchor point
    anonymous block
    antecedent
    applet
    application
    argument
    ASCII
    attached library
    attribute
    attribute columns
    attribute mask
    Attribute tool
    attribute value
    axis chart

 B

    background element
    background process
    baseline value
    Batch
    batch compile
    bind reference
    bind variable
    block
    body
    boilerplate
    border
    bounding box
    break chart
    break column
    break group
    break report
    break trigger
    breakpoint
    builder
    built-in datatype
    built-ins
    built-in macro
    buffer
    button
    button procedure

C

    cache (memory)
    call interface
    call stack
    canvas
    canvas view
    cartridge
    cascading style sheet
    category
    category axis
    cell
    CGI
    CGM
    CHAR datatype
    chart element
    chart item
    chart template
    check box
    checksum
    child
    child query
    classification
    clause
    client
    client/server architecture
    Clipboard
    CMDFILE
    collection type
    color palette
    column
    column object
    command line
    comment
    commit
    comparison operators
    compile
    component
    concurrency
    condition
    confine mode
    connect
    connect string
    constraint
    construct
    context area
    continuous axis
    control point
    coordinate plane
    coordinate system
    coordinates (x, y)
    copy
    correlated subquery
    cross product
    crosstab
    cursor
    custom measure
    cut

D

    damage
    data dictionary
    data link
    data model
    data structure node
    database
    database trigger
    datasource
    datatype
    DATE
    date axis
    debug
    debug action
    debug trigger
    Debugger
    deconstructed object
    default
    deliver
    dependency tree
    dependency view
    dependent data
    descendant
    designer
    Designer (Oracle)
    detail query
    dialog box
    DIANA
    dimension
    dimension hierarchy
    dimension value
    disabled
    discrete axis
    display
    display item
    downward-growing
    drag
    drill
    duplicate
    dynamic saved selection

E

    EBCDIC
    edge
    Edge/Fill/Text Display
    editor
    element
    element type
    Ellipsis button
    enabled
    enclosing object
    encryption
    environment
    exception
    Exception tool
    executable argument
    execute
    export
    export file
    expression
    external PL/SQL library
    external query

F

    family
    Family tool
    field
    field template
    file node
    fill area
    filter
    firewall
    flattened object
    flex mode
    focus
    foreground element
    foreign key
    form layout
    form letter layout
    format mask
    format trigger
    formula
    formula column
    frame
    function

G

    generate
    Generate
    Global Registry
    global variable
    grant
    gridlines
    group
    group filter
    group tree
    GUI

H

    handle
    header
    heading node
    hidden
    hierarchy
    HTML
    HTTP
    hyperlink
    hypertext

I

    ICD
    icon
    image
    implied item
    import
    independent data
    index
    inherit
    inner bounding box
    input item
    insert mode
    internet
    Interpreter script
    intranet
    IP (Internet Protocol) Address
    item
    item node

J

    JAR
    Java
    join
    justification

K

    keyword

L

    label
    Launcher
    level
    Level tool
    layout
    layout unit
    lexical reference
    library
    link
    link file
    list box
    list item
    list of values
    List tool
    local database
    local registry
    local variable
    logical operators
    logical page
    loop

M

    macro
    mailing label layout
    margin
    master/detail layout
    Match tool
    matrix cell
    matrix layout
    matrix report
    measure
    megabyte (Mb)
    message box
    method
    modal window
    modeless window
    module
    multi-line field

N

    NA value
    nested matrix
    NOCACHE
    node
    non-caching column
    NULL value
    numeric operators

O

    object
    object column
    object group
    object handle
    Object Navigator
    object table
    object type
    ODBC
    OLE
    OLE container
    OLE Server
    Oracle datatype
    Oracle Designer
    ORACLE_HOME
    organization node
    origin
    outer bounding box
    overflow

P

    packaged function
    package
    package body
    package specification
    page
    page break
    palette
    pane
    panel
    parameter
    parameter list
    parent
    paste
    pattern
    Pcode
    PDF
    physical page
    placeholder username
    plot type
    PL/SQL
    pld file
    pll file
    pls file
    plx file
    pop-up list
    port
    pre-defined action
    pre-defined type
    preference
    preview
    Previewer
    primary key
    primitive
    printer control code
    prt file
    procedure
    program unit
    project
    project file
    project item
    Project Navigator
    project node
    project registry
    project view
    Project Wizard
    property
    property class
    protocol

Q

    qualifying dimension
    query
    query filter function
    quit

R

    radio button
    radio group
    Range tool
    RC4
    RDBMS
    rdf file
    rep file
    read consistency
    record
    record group
    REF column
    reference line
    refresh
    register
    registry
    relational operator
    remote database
    repeating frame
    replace mode
    report-level objects
    Reports Background Engine (RWRBE60)
    Reports Queue Manager (RWRQM60)
    Reports Server (RWMTS60)
    Reports Web Cartridge
    Reports Web CGI (RWCGI60)
    rex file
    RGB
    root
    root node
    row
    row object
    RTF
    run
    runfile
    Runtime
    Runtime Parameter Form

S

    saved selection
    Saved Selection tool
    schema
    scope
    script
    section
    SELECT statement
    selection
    selection script
    Selector
    Selector tool
    session
    sibling
    socket
    Sort tool
    source
    specification
    split bar
    SQL
    sql file
    SQL script
    SQL statement
    stack
    statement
    static saved selection
    stored program unit
    stored subprogram
    style sheet
    subprogram
    subproject
    subproject node
    summary column
    SYLK
    syntax
    system variable

T

    table
    table type
    tabular
    target
    target node
    TCP
    tear-off menu
    text item
    title bar
    title page
    toggle
    tool
    toolbar
    tool palette
    Top/Bottom tool
    trailer
    transaction
    trigger
    type

U

    update
    URL
    user exit
    user-defined action
    user-defined type
    user-defined macro
    user registry

V

    valid XML
    value axis
    value construct
    variable
    varying array type
    VBX
    VBX control
    view
    virtual directory
    virtual file system
    visual attribute

W

    Web
    Web browser
    Web cartridge
    Web link
    Web server
    well-formed XML
    wildcard
    window
    WKS
    WRB
    WWW

X

    XML

Y

Z

    zoom


In Project Builder, a command string supplied either by Project Builder or by the user that applies to files of a given type.  An action is not restricted to a single file type; for example, if the action "Compile" is defined for both forms and C source files, selecting "Compile Project" will compile all .fmb and .c files using the appropriate tools.  See also:  pre-defined action, user-defined action.


A high-level programming language developed by the U.S. Department of Defense for use in embedded computer systems.


A window or view that can receive user input.


(Oracle Express) The consolidation of data for several dimension values into a single value, such as the total units sold for all the cities, or into a smaller set of values, such as the average units sold for cities in each region. Data is often collected at the lowest level of detail and is aggregated into higher level totals for analysis.


A modal window that notifies you of a condition that occurred because of your last action.  You must respond to an alert.


The way in which data is positioned in a field.  It may be positioned to the left, right, center, flush/left, flush/right, or flush/center of the defined width of a field.


A secondary name used in a SQL statement to reference a table, view, or column.


(Oracle Express) A Selector dialog box tool that allows you to select all of the values in a dimension, or all of the values in a dimension for a specific hierarchy.


(Oracle Express) A dimension value at any level above a particular value in a hierarchy. The ancestor value is the aggregated total of the values of its descendants.  The following example shows the dimension value "Europe" as the ancestor of "France," "Lyon," and "Paris" in the GEOGRAPHY dimension.


A group that owns another group, either directly or indirectly.


A layout object used to fix a spot on one object to a spot on another object, ensuring the position of the first object in relation to the second object.


(Oracle Express) A specific dimension value that is used when selecting dimension values based on their family relationship or when navigating through a hierarchy.


A PL/SQL program unit that has no name and does not require the explicit presence of the BEGIN and END keywords to enclose the executable statements.  Since they are unnamed, anonymous blocks cannot be referenced by other program units.


An object that appears in another object's group tree at any position above that other object.  Every object is an antecedent of its descendants.


A Java term for small programs that can be dynamically imported into Web pages or applications as needed.


One or more program modules used to achieve a specific result.  Applications can be nested within other applications.  For example, an application to control a company's inventory could consist of various Form Builder applications for input of data, and various Graphics Builder applications to display the data visually.


1. An optional expression passed to a program unit for the program unit to operate on.
2. Clauses containing keywords and their specified values.


Acronym for American National Standard Code for Information Interchange.


A read only collection of PL/SQL subprograms, usually provided with an application to supply necessary PL/SQL source.  Program units in an attached library are implicitly loaded when they are first called by another program unit at compile-time or runtime.  They remain loaded for quick reuse, which reduces runtime memory requirements and improves the performance of an application.  See also:  library .


1. See property.
2.  A part or component of an Oracle8 object type definition.  Each attribute has a name and an Oracle8 datatype.  When an object table is created based on the object type, the columns in the table correspond to the attributes in the object type definition.  When a column object in a relational table is created based on the object type, the column object contains the equivalent of sub-columns, each of which corresponds to an attribute in the object type definition.  Each Oracle8 object attribute in a table is treated as a separate data item, as if it were a separate column.  This is true for both object tables and column objects in relational tables.
3. (Oracle Express) A descriptive characteristic that is shared by dimension values. Attributes represent logical groupings that allow users to select data based on like characteristics. For example, in a database representing footwear, you can use a shoe color attribute to select all boots, sneakers, and slippers that share the same color.


The columns that compose a column object (Oracle8).


In Graphics Builder, the first element in an attribute descriptor.  It is a 32-bit mask that informs the toolkit of the attributes that will be set or retrieved by a subsequent function call.  Only those elements that have their corresponding bits set in the attribute mask are set or retrieved.


(Oracle Express) A Selector dialog box tool that allows you to select dimension values based on attributes and attribute values. For example, in a database representing soft drinks, you might select all products whose size is 1 liter. In this example, Size is an attribute and 1 liter is an attribute value.


(Oracle Express) The values in the database that make up an attribute. For example, in a database representing ice cream products, the following attribute values might belong to a flavor attribute in a Product dimension: vanilla, chocolate, and strawberry. Dimension values at various levels in the Product dimension -- brand, form, and size, for instance -- might share the same value for flavor.


A type of chart in which the data is plotted according to where it lies along the chart's edges, called axes.  An axis chart may contain two or three axes, each of which may be one of the following types:  discrete, continuous, or date.


The white part of a pattern.  You apply color to the background element using the Fill Color palette.


A non-interactive process that runs in an operating system environment and performs some service or action.  Certain Oracle products use background processes for different tasks, such as performing and coordinating tasks on behalf of concurrent users of the database, processing and delivering electronic messages, and managing printing services.


The value used as the starting point for plotting fields on the continuous axis of a chart.


The executable that executes an application in batch mode, without using a windowing system.


To translate, at once, several PL/SQL program units into a machine executable form.


A reference to a parameter used to replace a single literal value (e.g., a character string, number, or date) appearing anywhere in a PL/SQL construct or a SQL SELECT statement.  For a bind reference, you must precede the parameter name with a colon (:).


A global variable you can create and use outside of a PL/SQL package.


1. The basic program unit in PL/SQL, defined by the keywords DECLARE, BEGIN, EXCEPTION, and END.
2. In Form Builder, a logical container that relates to a database table or view.


1. Contains the same information as the program unit specification, and also includes the actual implementation of the subprogram (i.e., its sequence of actions).  In most cases, only a body must be defined for a subprogram.
2. In Report Builder, a region that contains the bulk of the report layout (text, graphics, data, and computations).  The report body appears between the report header and trailer pages.


Text and/or graphics that appear in a report every time it is run.  In some products this is called "constant" text or graphics.


A user-defined outline around a layout object, usually used to highlight its contents.  Borders are drawn such that half the width of the border lies outside the edge of the object, and half inside the edge.


See inner bounding box, outer bounding box.


An axis chart that displays two categories of data along one axis.


A query column assigned to a break group.


A group used to break or categorize report data.  All data in query columns assigned to a break group appear above the data in columns belonging to other groups.  Each record fetched for a break group appears only once, while multiple related records in other groups can be displayed.


A report that contains categories that break the report data into sets.


A PL/SQL block that executes each time a breakpoint is reached.  See also:  breakpoint.


A debug action you can place at any executable source line in a PL/SQL subprogram.  A breakpoint interrupts execution of the program unit and passes control to the PL/SQL Interpreter.  Breakpoints allow you to incrementally execute a subprogram and search for runtime errors.  See also:  break trigger.


Refers to a component used to create a specific type of document. For example, Form Builder is used to create forms, while Report Builder is used to create reports.


A datatype defined and supported by the Oracle Server.


A collection of extensions to the PL/SQL language that are designed to be used with the software.  Built-ins include datatypes, procedures, functions, exceptions, and constants.


In Project Builder, macro shipped with Project Builder.  See also:  macro.


A temporary storage area for data during the transfer of that data between the computer and a peripheral, or between parts of a computer.  A buffer prevents loss of information due to differences in the speed or timing of the transfer and speeds up certain functions.


1. An interface element used to select an action item, display a dialog box, or acknowledge the current condition.
2. An object in an application that has a PL/SQL procedure associated with it.  The procedure is generally executed upon a user mouse event.


A PL/SQL procedure associated with an application object, that is executed when a specific mouse event occurs on the item at runtime (e.g. clicking the button).  It does this by establishing a hierarchy for the fetched data containing a break group.


A temporary storage place for database data that is currently being accessed or changed by users, or for data that Oracle Server requires to support users. The terms are often used interchangeably.


An interface that enables you to invoke Forms Developer or Reports Developer component executables from other Oracle products, or a 3GL program.


A chain of subprogram calls, from the initial entry point down to the currently executing subprogram.  Each subprogram call is represented by a frame on the downward-growing call stack, in which newly entered subprograms are added to the bottom of the stack.


  See editor.


In Form Builder, the background object on which you place the interface objects that users will interact with in the runtime application.  A canvas view is usually associated with a window.


Manageable objects that plug in to the client, application server, or database through an open API.


See style sheet.


A label component that allows differentiation between information on the basis of non-hierarchical delineation or compartments rather than sensitivity levels.  With classification, they are used as a means of restricting access to information.


See discrete axis.


An instance of data in a spreadsheet (e.g., Microsoft Excel).


Acronym for Common Gateway Interface. The industry-standard technique for running applications on a Web server.  Whereas standard HTML documents retrieved from a Web server are static (the exact same text is retrieved every time) CGI enables a program running on the Web server to communicate with another computer to generate "dynamic" HTML documents in response to user-entered information.


Acronym for Computer Graphics Metafile.  A file format recognized internationally and used to store and transport object-oriented graphics from one system or program to another.


An Oracle datatype provided for ANSI/ISO compatibility.  A CHAR column is a fixed-length column and can contain any printable characters, such as A, 3, &, or blanks, and can have from 1 to 255 characters or can be null.


A bar, line, symbol, or other graphical object that represents a single value for a field.


A bordered rectangle of any size used to embed Graphics Builder charts in a form or report.


A collection of attributes and properties that defines the format of a chart.


A interface element, appearing as a small square, that a user can toggle on or off.


An error-checking algorithm.


1. An object that is a member of a group, and is immediately below that group object in its group tree.  The objects that compose a group object are children of that group.  Every object is a child of its parent.
2. (Oracle Express) A dimension value at the level immediately below a particular value in a hierarchy. Values of children are included in the calculation that produces the aggregated total for a parent.  A dimension value may be a child for more than one parent if the dimension has more than one hierarchy.  The following example shows the dimension values "Lyon" and "Paris" as the children of "France" in the GEOGRAPHY dimension.


See detail query.


A hierarchical level that denotes the sensitivity of the information that is labeled.  Classifications are used as a means of restricting access to information.


A part of a SQL statement that does not constitute the full statement; for example, a "WHERE clause."


A user, software application, or computer that requests the services, data, or processing of another application or computer (the "server").  In a two-task environment, the client is the user process.  In a network environment, the client is the local user process and the server may be local or remote.


Separation of processing between two CPUs, one acting as the server that provides services in a transaction and the other as the client in the transaction, requesting and receiving services.  All responsibilities of shared data management can be processed by the computer running the database management system while the workstations running the database application concentrate on the interpretation and display of data.


A memory buffer.  An object remains on the Clipboard until you cut or copy another object, or until you quit the application.


A user-defined datatype that describes a data unit made up of an indefinite number of elements, all of the same datatype.  Varying array types and table types are collection types.  (Oracle8)


An argument that allows you to specify a file that contains a set of command line arguments for Forms Developer executables.


Contains all the colors available to the windowing system, the drawing surface, or a window and its views.


1. A vertical space in a database table that represents a particular domain of data.  A column has a column name (e.g., ENAME) and a specific datatype (e.g., CHAR).  For example, in a table of employee information, all of the employees' names would constitute one column.  A record group column represents a database column.
2. In Report Builder, a data model object created automatically for each column expression in a query's SELECT list, or created manually to perform summaries, formulas, or act as a placeholder.


In an Oracle8 relational table or object table, a column whose definition is based on an object type.  The column is a composite, the parts of which correspond to the attributes of the object type.


An operating-system command line.  Most Oracle products can be invoked from a command line using a number of executable arguments.


A language construct for the inclusion of explanatory text in a program, the execution of which remains unaffected.


To make changes to data in the database permanent.  Before changes are stored, both the old and new data exist so that changes can be stored or the data can be restored to its prior state.


(Oracle Express)

>	Greater than

<	Less than

=	Equal to

<=	Less than or equal to

>=	Greater than or equal to

<>	Not equal to

For numbers, the operands are widened to the least common type (Integer is preferred over Long, which is preferred over Single, which is preferred over Double). For Strings, the comparison is case-sensitive and is based on the collating sequence used by the language specified in the Windows Control Panel. The result is 0 for FALSE and -1 for TRUE.


To translate a source program into a binary, executable format.  PL/SQL program units must be compiled before they can be executed.


A specific target object that is a part of a larger application; e.g. a form in an order entry system, or a library that is shared among many other elements.  See also:  target.


The simultaneous access of the same data by multiple users executing different database applications or the same application.  In database software concurrency requires additional logic to ensure that all users see consistent data and that all changes are made in the proper order.


An expression whose value is either true or false, such as X> 100.  For example, you can set a condition in a query when you want the query to display only those rows that evaluate as true in your expression.


Layout editor mode that prevents child objects from being moved or resized on or outside their parent objects.


To log on to a database.  You must connect if you want to create or modify queries or access an application stored in a database.


The set of parameters, including a protocol, that SQL*Net uses to connect to a specific Oracle instance on the network.


A rule or restriction concerning a piece of data (such as a NOT NULL restriction on a column) that is enforced at the database level, rather than the object or application level.


A PL/SQL code structure.  There are two types of constructs: non-value constructs do not return a value; value constructs return a value.


A work area in which Oracle Server stores the current SQL statement, and if the statement is a query, the result's column headings and one row of the result.  Also referred to as cursor.


An axis that plots values that begin with one value and continue until they reach another value.  Thus, these values are mathematically related.  Dependent data is usually plotted along this axis, also called the value axis.


The four corner points of the virtual rectangle that constitutes an object's ideal shape.  When you select an object on the layout, its control points appear.  Depending on the object selected, you may be able to modify it by dragging a control point.


The two-dimensional grid on which drawing takes place.


The type of x, y units used to place and size objects in the Layout Editor view.  The coordinate systems available are 1) character, which uses the platform's native character cell size, and 2) real, which can be in units of pixels, centimeters, inches, or points.


The location points for objects appearing in the layout.  x and y coordinates determine the horizontal (x) and vertical (y) placement of objects.


To store a replica of a selected object on the Clipboard, so that it may be pasted elsewhere in an editor if desired.


A subquery based on the same tables as the parent query (i.e., references columns in the tables included in its parent query).


Group that owns two or more other groups and performs a mathematical cross product (i.e., correlates values between them).


See matrix cell.


1. A small icon representing the position of the mouse.  The shape of the cursor varies, depending on the selected tool.
2. An internal pointer to data retrieved by a query.  A cursor points only to one row of data at a time; however, you can use built-in subprograms to move the cursor to any row in the data set.


(Oracle Express) A formula created by a user, which allows fine-tuning of data analysis. You create custom measures using base measures in the database. For example, if the database contains the existing measure Volume Share, you can use this measure to create a custom measure named Volume Share Year Ago. This custom measure would allow you to look at a product's absolute share from the previous year.


To delete one or more objects and store them in the Clipboard, so that they may be pasted elsewhere in an editor, if desired.


A view is damaged when it is totally or partially occluded by another view.


A set of tables and views owned by the database administrator.  It is a central source of information for Oracle Server and other relational databases.


A data model object used to define a master/detail (parent-child) relationship between a group and a query.


A relational model that defines what data should be fetched from the database, what values should be computed, and how data should be ordered in a report.  Report Builder objects that define the data model are queries, groups, columns, parameters, and links.


A source for data returned by a query, including database objects such as tables, views, synonyms, snapshots, and queries stored as views.


In Project Builder, a node in the Project Navigator denoting a project item that governs the structure of an open project.  For example, the Global Registry node denotes the Global Registry, which contains a list of local registries and a list of global type definitions.


A set of dictionary tables and user tables that are treated as a unit.


A stored PL/SQL block that is implicitly executed when a triggering INSERT, UPDATE, or DELETE statement is issued against the associated table in the database.  See also:  debug trigger.


A standard form of data.  Some common Oracle datatypes are CHAR, VARCHAR2, DATE, NUMBER, LONG, RAW, and LONG RAW.


An Oracle Server datatype.  A date column may contain a date and time between January 1, 9999 BC and December 31, 9999 AD.


An axis that plots date values that begin at one date and continue until they reach another date.


To detect, diagnose, and eliminate runtime errors in programs.


A user-specified event placed in a PL/SQL subprogram, usually for the purpose of troubleshooting runtime errors.


A conditional debug action you can place at any executable source line in a PL/SQL subprogram.  If the specified condition is met, the specified action is taken before execution of the subprogram resumes.  See also:  database trigger.


The Procedure Builder functionality within the software component used for testing and debugging.


In Oracle8, object types and objects are composites, built of parts or attributes.  Forms Developer or Reports Developer treats each part/attribute as an independent, individually-selectable data item.  This treatment results in a deconstructed object (sometimes also known as a flattened object).  The object is not an homogeneous entity within the Developer environment.


A piece of data that depends on other data for its value.  For example, an employee's  years of service may have the value 10, which is dependent upon the value of the employee's name.  Also called value data.


A value supplied by the system when a user does not specify a required command parameter or attribute.


To prepare and provide a completed application for distribution and deployment.


In Project Builder, the mechanism used by Project Builder to determine how to compile files that are referenced in projects.  Items toward the top left of the tree depend on items toward the lower right; so, for example, if a header file is either out of date or more recent than the executable file it is used to build, then the Project Builder will rebuild the executable file, given a Build command.  Dependencies also extend to subprojects.  For example, if a subproject consisting of a function library has been rebuilt, the Project Builder "knows" the dependent project will need to be rebuilt in order to use the updated library functions.  See also:  dependency view.


In Project Builder, shows files in the Project Navigator in the order in which they depend on each other, with project nodes at the highest point in the hierarchy, followed by target nodes, which are followed by buildable components of those targets.  For example, an executable form depends on and will be followed by an .fmb file, which may depend on and be followed by a library used for a USEREXIT procedure, and so on.  See also: project view, target.


1. An object that appears in another object's group tree at any position below that other object.  Every object is a descendant of its antecedents.
2. (Oracle Express) A dimension value at any level below a particular value in a hierarchy. Values of descendants are included in the calculation that produces the aggregated total for an ancestor.  The following example shows the dimension values "France," "Lyon," and "Paris" as descendants of "Europe" in the GEOGRAPHY dimension.


The interface used to design different components of a Forms Developer or Reports Developer application.


See Oracle Designer.


An application modeling, design and generation toolset.  Using Oracle Designer, you can generate forms and menus from module definitions recorded in the Oracle Repository.


When defining a master/detail report, the detail query retrieves all related records for each record retrieved by the master, or parent, query.


A partial screen or window that prompts you to enter information necessary to complete an operation.


An intermediate representation of a program unit, generated by the compiler.  The DIANA includes all of the syntactic and semantic information for a compiled program unit.  In order to compile a reference to a program unit, the compiler must have access to the referenced program unit's DIANA.  For example, if program unit A calls program unit B, the DIANA for B must be available before A can be compiled.


(Oracle Express) A type of database object that is a list of values that provide categories for data. A dimension acts as an index for identifying values of a variable. For example, if you have sales data with a separate sales figure for each month, then the data has a MONTH dimension; that is, the data is organized by month. A dimension is similar to a key in a relational database.

Any item of data within a multidimensional variable can be uniquely and completely selected by specifying one member from each of the variable's dimensions. For example, if a sales variable is dimensioned by MONTH, PRODUCT, and MARKET, specifying "January" for the MONTH dimension, "Stereos" for the PRODUCT dimension, and "Eastern Region" for the MARKET dimension uniquely specifies a single cell in the variable. Thus, dimensions offer a concise and intuitive way of organizing and selecting data for retrieval, updating, and performing calculations.

A dimension can be simple, with values that are single text or integer values, or it can be conjoint, with values that are combinations of values in other dimensions. A composite is not a dimension, but it is a conjoint-like internal object that Express treats like a dimension for the purpose of handling sparse data.


(Oracle Express) One element in the list that makes up a dimension. For example, a computer company might have dimension values in the PRODUCT dimension called "LAPPC" and "DESKPC." Values in the GEOGRAPHY dimension might include "Boston" and "Paris." Values in the TIME dimension might include "MAY96" and "JAN97."


An interface element state that means a menu item, button, etc., cannot be used in the current context; i.e., it does not respond to keyboard or mouse input.


An axis that plots distinct values at fixed intervals.  These values are not mathematically related.  Independent data is usually plotted along this axis, also called the category axis.


A Graphics Builder document containing any combination of charts, images, text objects and shapes.


In Form Builder, an item that stores or displays information that must be fetched or assigned programmatically with PL/SQL.


As it pertains to the call stack, in which newly entered subprograms are added to the bottom of the stack.  The earliest frame, corresponding to the initial program entry point, is at the top of the stack, while the latest frame, associated with the most deeply nested subprogram call, is at the bottom of the stack.


Press and hold down a mouse button while you slide the mouse pointer to a particular location in a window.


(Oracle Express) To navigate up and down through the levels of aggregation in a dimension that has a hierarchy. When selecting dimension values or viewing data, you can expand or collapse a dimension hierarchy by drilling down or up in it. Drilling down expands the view to include child values that are associated with parent values in the dimension hierarchy. Drilling up collapses the list of descendant values associated with a parent value in the dimension hierarchy.

You can click on a plus icon ( [image]) to drill down on (expand) the hierarchy or on a minus icon ( [image]) to drill up on (collapse) the hierarchy.

In the Selector, you can click on the drill icon ( [image]) to display the Drill dialog box so you can select a level of detail for the entire dimension.


An option that allows you to copy objects directly on the layout without affecting the contents of the Clipboard.


(Oracle Express) A saved selection that can have different dimension values each time it is evaluated. The selected dimension values might differ from use to use. In contrast, a static saved selection is an unchanging list of dimension values. A dynamic saved selection script might include "Select the last three Months", while the script for a static saved selection might have "Select February 1996, March 1996, and April 1996".


Acronym for Extended Binary-Coded Decimal Interchange Code.


The boundary of an object.


A display box on the Layout Editor tool palette that shows the current settings for the edge, fill, and text patterns and colors.


A work area in which you perform a specific set of tasks, such as creating a program unit or designing an application.


A thing of significance about which you may need to record information.  Elements are described by attributes and associations to other elements.


Any element held in the dictionary is classified as being of a particular type.  Examples of element type are entity, attribute, program module, table, diagram, text, softbox.  Occurrences or instances of these are called elements.


(Oracle Express) Displays a dialog box related to the task you are performing, usually so you can select one or more values that you need.


An interface element state that means that a menu item, button, etc., can be used in the current context, that is, it responds to keyboard or cursor/mouse input.


An object that contains another object.  An object is considered to be enclosed by another object only if all of the following are true:  both objects belong to the same region (Body, Margin, Header, or Trailer);  the outermost of the two objects is a frame or repeating frame;  the outermost of the two objects is behind the other object;  the innermost of the two objects lies entirely within the borders of the other object.


The practice of scrambling (encrypting) data in such a way that only an intended recipient can unscramble (decrypt) and read the data.


The user's computer-based workplace, including the tools typically used and their configurations. For Project Builder, this refers to the subset of tools that are used to complete various tasks related to developing Forms Developer applications.


A warming or error condition generated from a PL/SQL subprogram.


(Oracle Express) A Selector dialog box tool that allows the user to select dimension values associated with data that meets cutoff terms that the user specifies. For example, the user can select all products whose dollar sales were greater than $10,000 for the week ending December 23, 1995 in the Boston market.


An argument you can pass to a product executable, such as 'OPENFILE=my_disp' and 'PRINT=YES'.  These arguments usually are specified when the executable is invoked from a command line.


See run.


To store a copy of an object, module, selected text or image to a file or database.  In Project Builder, the process of writing out a file containing project, type, action, and/or macro definitions in a portable format for distribution to others who may work on heterogeneous platforms.  See also:  export file, import.


In Project Builder, the shareable, portable file created by exporting a project.


1. A PL/SQL construct combining variables, constants, literals, and operations on their values.
2. (Oracle Express) One or more data values that are specified in an Express language program. For example, you can specify expressions as arguments to programs or functions. An expression can be any of the following:

•	A single, literal value (for example, 10)

•	A variable or formula that contains one or more values

•	A function that returns one or more values

•	A calculation that combines values, such as variables, formulas, or functions, with arithmetic or Boolean operators


See library.


An ANSI-standard SQL SELECT statement that can be referenced by other Oracle products.


(Oracle Express) A group of related dimension values that correspond to the levels of the dimension hierarchy. Dimension values within a family can relate to each other as ancestor, parent, child, and descendant.  The following example shows family relationships for the dimension value "France" in the GEOGRAPHY dimension.


(Oracle Express) A Selector dialog box tool that allows the user to select a family of dimension values for a particular hierarchy. A family includes a parent and all of its descendant dimension values. For example, the user can select all of the family members below the Chicago market level in the Geography dimension.


1. An interface element in which you enter, edit, or delete data.  2. In Graphics Builder or Report Builder, a layout object that define how the data for a specific query column appears.


In Graphics Builder, a collection of attributes and properties that determines how dependent data (values) are represented as chart fields, such as bars or lines.


In Project Builder, a node in the Project Navigator denoting a file stored in the file system.  For example, the global and local registry nodes correspond to global and local registry files.


The area within an object to which a fill (color or pattern) should be applied.


A PL/SQL function or anonymous function that restricts the data displayed by a group.


A computer that regulates access to computers on a local area network from outside, and regulates access to outside computers from within the local area network.


See deconstructed object.


Layout Editor mode that automatically resizes or shrinks parent objects when child objects are moved or resized, and adjusts the positions of other layout objects that might otherwise be affected by the repositioning or resizing of the objects.


The state of an entity that is able to respond to input from the user or the client.  If an entity has the keyboard focus, it can receive events when the user presses a key.  If a drawn view has the drawing focus, it can respond to client routines that affect drawing.


The black part of a pattern.  You apply color to the foreground element using the Edge Color palette.


A value or column in one table that refers to a primary key in another table.


In Report Builder, a default layout style in which labels appear to the left of fields, and each record prints on a separate logical page.


In Report Builder, a default layout style that intermixes boilerplate and fields, wrapping lines at "word" breaks.


(Field Properties)  A setting that defines the appearance of the value of a field.  For example, a format mask is used to specify the display of currency amounts and dates.


A PL/SQL function that allows you to dynamically change the formatting attributes of an object.


(Oracle Express) A type of database object that represents a stored calculation, expression, or procedure that produces a value. A formula provides a way to define and save complex or frequently used relationships within the data without resaving the data itself. Each time you use a formula, Express performs the calculation or procedure that is required to produce the value.


A user-created column that gets its data from a PL/SQL function or expression, a user exit, a SQL statement, or any combination of these.


In Graphics Builder, the part of a chart template that defines the basic structure of a chart, but does not determine the way the data is plotted.
2. In Report Builder, a layout object used to enclose other layout objects and control the formatting, frequency, and positioning of several objects simultaneously.


A PL/SQL subprogram that performs a specified sequence of actions, and then returns a value.  Can reside and execute on the client and the database server.


To save an application to a file or database in a binary format that can be executed by Runtime and Batch executables.


The Form Builder executable used to save an application to a file or database in a binary format.


A Project Builder registry that stores information common to an entire Forms Developer or Reports Developer installation.  This information is restricted to type definitions, and their associated actions and pre-defined or user-defined properties.  The use of the Global Registry is optional; its functions can be performed by individual user registries.  See also: registry, user registry.


A logical container that exists across an application.  When an application uses a global variable, the application maintains the variable until the application is exited, or until another object explicitly removes it.


To give a user access to a module.  Only a module's creator can grant its access to other users.


In Graphics Builder, the lines that separate rows and columns in the Layout Editor.


1. An object that is composed of several other objects.
2. In Report Builder, a data model object that is created automatically to contain all the columns selected by a query, or created by the user to modify the hierarchy of the data appearing in a report;  it is used primarily for creating breaks in a report, as well as for resetting computations.
3. In Project Builder, collections of related items available via submenus off the Launcher.  Groups allow users to set up the Launcher much like the Windows 95 Start menu, with arbitrary "groups" as entries that pop up to reveal other items and/or groups.  For example, a user could define a group named "Project Docs", containing a project schedule, to-do list, component specifications, etc.; some files may be .TXT files, other .DOC files.


A PL/SQL function that restricts the data fetched by a group.


A hierarchical model-similar to a "family tree"-that describes the relationships between group objects and the objects that compose them.


Acronym for graphical user interface. The use of pictures rather than just words to represent the input and output of a program.  Programs with GUIs run under a windowing system (such as  X Windows, Microsoft Windows, Apple Macintosh, and so on).  GUI programs display icons, buttons, and so on, in windows on the screen;  users control the GUI programs mainly by moving a pointer on the screen (typically controlled by a mouse).  Also known as a bitmapped interface.


An internal pointer to an application object.  In order to reference an object in a PL/SQL program unit, you must pass its handle as an argument to the appropriate subprogram.


An optional report region that can contain introductory material for the report, including text, graphics, data, and computations.  The report header appears first, before the body and trailer.


A node in the Object Navigator denoting a type of object which can be contained within or associated with a report.  Selecting a heading node does not select an object in the report.


(Field Properties)  A property that specifies whether Report Builder will suppress the indicated field at its location in the layout.  If Hidden is specified, the field's value will appear only where referenced in text objects (using &fieldname).


(Oracle Express) A means of organizing and structuring data. A hierarchy exists when values within a dimension are arranged in levels, with each level representing the aggregated total of the data from the level below. Some dimensions have multiple hierarchies based on them.

The following example shows a hierarchy based on the GEOGRAPHY dimension, in which dimension values are arranged in five levels. Data at the Customers level is aggregated into the Cities level, which, in turn, is aggregated into the Countries/Areas, Continents/Regions, and Global levels.


Acronym for Hypertext Markup Language.  A tag-based ASCII language used to specify the content and links to other documents on Web servers on the Internet.  End users with Web browsers view HTML documents and follow links to display other documents.


Acronym for Hypertext Transfer Protocol. The protocol used to carry WWW traffic between a WWW browser computer and the WWW server being accessed.


A reference (link) from some point in one document to (some point in) another document or another place in the same document.  A Web browser usually displays a hyperlink in some distinguishing way (in a different color, font or style).  When users activate hyperlinks (by clicking on them with a mouse) the browser displays the target of the link.


A collection of documents containing cross-references which, with the aid of a Web browser, allow readers to move easily from one document to another.


Cross-references which, with the aid of a Web browser, allow readers to move easily from one document to another.


Acronym for interface C definition-a PL/SQL application programming interface to functionality implemented in C.


A graphic representation of a window or tool.


A bitmapped object that can be stored and loaded into an application.  The client cannot modify an imported image.


In Project Builder, a project item, usually the result of automatic generation, that Project Builder recognizes and for which it automatically creates entries in the Project Navigator.  For example, Project Builder can recognize .OBJ files, generated as an intermediate step during the compilation of C source files, and create entries for them in the Project Navigator.  Although resetting the properties of an implied item is of limited use (the next compilation will destroy changes) such items can be useful, as they can be examined via actions such as Edit, View, and Print.  See also: item, action.


1. To read a module from the file system or database, and incorporate it into an application.
2. To read in a file containing project information.


A piece of data that does not depend on other data for its value.  For example, an employee's name may have the value Jones, which is independent of the values of other employee's names or associated data.  Also called category data.


An optional structure associated with a table that is used by Oracle Server to locate rows of the table quickly, and (optionally) to guarantee that every row is unique.


In Project Builder, to obtain information for an action, type, macro, or property definition from an ancestor node in the dependency tree.  If related attributes exist in an ancestor node, they may be inherited.  Thus, filesystem items like forms and documents may inherit action definitions from subprojects, projects, the user registry, or the Global Registry; projects may inherit type definitions from the local or the Global Registry; and so on.


The virtual rectangle that constitutes an object's ideal shape and connects its four control points, regardless of edge thickness or other attribute settings.


The file used to build a target: for instance, an .FMB is the input for an .FMX.  Also called source.


A mode in which each character you enter is inserted at the cursor, pushing the following characters to the right.  The opposite of replace mode.


A worldwide TCP/IP-based network of computers.


A file containing any mixture of PL/SQL source, Procedure Builder commands, and SQL statements.


An internal TCP/IP network, access to which is restricted (via a firewall) to individuals inside the company or organization.  An intranet provides similar services within an organization to those provided by the Internet, but is not necessarily connected to the Internet.  A common example of an intranet is when a company sets up one or more Web servers on an internal network for distribution of information or applications within the company.


A four-part number with no more than three digits in each part that uniquely identifies a computer on the Internet.


In Project Builder, an object in the file system associated with the project, such as a form or a document, pointed to or represented by a node in the Project Navigator.


In Project Builder, an entry in the Project Navigator window, consisting of an icon and a descriptive title.  Nodes point to actual items in the filesystem, such as Form Builder files and documents.  See also: node, item.


Acronym for Java ARchive.  A file used for aggregating many files (Java class files, images, and so on)  into one file.


A computer language that supports programming for the Internet in the form of platform-independent "applets".


Combining data from two (or more) tables in a single SELECT statement.


  See alignment.


1. Part of a command line syntax that must be supplied with a corresponding argument.  2. A required part of a PL/SQL construct.


Text identifying the values or meaning of an application's visual objects.


(Oracle Express) A position in a dimension hierarchy. Each level above the base level represents the aggregated total of the data from the level below. For example, the TIME dimension might have ascending levels such as Month, Quarter, and Year. Within a dimension hierarchy, a dimension value at one level has a family relationship with the dimension values at the levels above and below that level.


(Oracle Express) A Selector dialog box tool that allows the user to select dimension values based on their level in a particular hierarchy. For example, the user can select all of the dimension values at the Key Account level in the Geography dimension.


The area of an editor in which you can create, modify, position, or delete objects.


A unit of measurement for ensuring a consistent measurement system across different display devices.  Used to specify a position on the layout, or the dimensions of an object.


A reference to a parameter used to represent a string of text in a SQL SELECT statement.  For a lexical reference, you must precede the parameter name with an ampersand (&).


A collection of one or more PL/SQL program units that are stored together in a file on the client file system or in the database.  Program units stored in a library can be referenced by several applications at once.  Unlike stored program units, which reside and execute in the database, program units in libraries always load and execute within the PL/SQL engine on the client side.  To reference program units that are stored in a library, you must first attach the library.  See also:  attached library.


A data model object used to define a master/detail (parent-child) relationship between a group and a query.


The name of a file to which a boilerplate object is associated.  At runtime, Report Builder imports the file's contents into your report layout.


A list of items within a dialog box.  Usually, the list box offers choices for selection, and it is scrollable.


In Form Builder, an item that displays a list of choices.


Also called LOV. A scrollable popup window that provides the user with a single or multi-column selection list.


(Oracle Express) A Selector dialog box tool that allows you to select dimension values from a list of the currently selected values in the dimension.


1. The database on the computer running the application.  2. The database to which an application is connected.  This database parses and executes all SQL statements generated by the application.


See user registry.


A PL/SQL variable declared only within the scope of the current program unit.


(Oracle Express)

Not	Unary Not -- Operand can be integer or long. The operation is performed bitwise (one's complement).

And	And -- Operands can be integer or long. The operation is performed bitwise.

Or	Inclusive Or -- Operands can be integer or long. The operation is performed bitwise.

Xor	Exclusive Or -- Operands can be integer or long. The operation is performed bitwise.

Eqv	Equivalence -- Operands can be integer or long. The operation is performed bitwise. (A Eqv B) is the same as (Not (A Xor B)).

Imp	Implication -- Operands can be integer or long. The operation is performed bitwise. (A Imp B) is the same as ((Not A) OR B).


One page of your actual report (it may be displayed on one or more physical pages).


In a PL/SQL subprogram, a conditional statement that is repeated until the condition is no longer met.


In Project Builder, a type-specific variable that may be used to customize and extend actions.  A macro may be either a constant or a simple expression (which, in turn, may contain other constants and/or expressions).  The use of macros adds great flexibility in issuing command options, and in allowing the user to modify sets of commands by changing one property definition.


A default layout that displays records in one or more columns on the page.  Fields appear directly beneath each other in a single repeating frame.


An optional report region that appears at the top and bottom of each logical page in the body region.  The margin may include any layout object, but typically contains boilerplate and fields (for page numbers, page totals, grand totals, and current date and time).


A default layout in which the detail records appear below the master records.  Master records appear in form layout style, while detail records appear in tabular layout style.


(Oracle Express) A Selector dialog box tool that allows the user to select dimension values by matching characters in dimension value names to characters that the user specifies. For example, the user can select all dimension values in the Product dimension at the Brand level that contain the characters "new."


A repeat direction that displays each record of a repeating frame as a cell of a matrix.


A default layout, resembling a grid, that formats the four sets of data necessary for a matrix report; one set of data displays as a row of labels, one as a column of labels, one set creates the grid, and one set fills the cells of the grid.


A cross-tabulation of four sets of data:  one set of data displays across the page; one set of data displays down the page; one set of data is the cross-product, determining all possible locations in which the across and down data relate and placing a cell in those locations; and one set of data displays as the "filler" of the cells.


(Oracle Express) Data that can be examined and analyzed, such as sales or cost data. You can select and display the data in a measure. Measures can be stored as variables or relations, or measures can be calculated by means of formulas.


A unit of memory equal to 1,048,576 bytes (1024 x 1024). Often rounded to one million bytes.


A modal window that notifies you of a condition that occurred because of your last action.  You must respond to a message box.


Executable code attached to an Oracle8 object through its object type definition.


A window that elicits a response from the operator before the application can continue.


An unrestricted window that can have as much functionality as the runtime window manager can support.


1. An object that can be shared by multiple applications.  External queries and PL/SQL libraries are examples of modules.  2. In Form Builder, a major component of an application (i.e., a menu module).


A field in a window or dialog that extends for several lines, allowing you to scroll vertically through the information.


(Oracle Express) A special data value that indicates that data is "not available" (NA). NA is the value of any cell to which a specific data value has not been assigned or for which data cannot be calculated.


Matrix report in which either the across and/or down dimension contains one or more master/detail relationships.  There is no limit to the amount of nesting allowed.


A datatype indicating that the data will be fetched when the page on which it appears is formatted (instead of fetched and cached until formatted).


1.  A specific location in the Object Navigator object hierarchy.  Nodes can be expanded to reveal information about an object, such as cross references to other objects.  2.  In Project Builder, an entry in the Project Navigator.  See also:  item, item node, organization node.


A report column that references a database column of datatype NOCACHE.


The absence of a value.


(Oracle Express)

^	Exponentiation,

-,+	Unary minus and plus,

*, /	Numeric multiplication or division. For division, the result is a double.

\	Integer division. The operands can be integer or long.

Mod	Modulus or Remainder. The operands can be integer or long,

-, +	Numeric addition and subtraction. The + operator can also be used for string concatenation.


1.  An item that can be placed on the layout.  The following are examples of objects:  rectangle, line, ellipse, arc, polygon, polyline, rounded rectangle, freehand, chart, text, symbol, and text field.  2.  In Oracle8, an instance of an object type.  An object can be a row in an object table, or the portion of a row contained in a column object in a relational table.


See column object.


A container for a group of objects, used to provide the ability to copy or reference related objects.


See handle.


The window containing a hierarchical list of objects for the current session.  The list appears in outline form, and enables the user to accomplish several tasks such as creating, editing, renaming, and deleting objects.


In Oracle8, a table whose definition is based on an object type.  Each attribute in the object type becomes a column in the object table.  Each row in the table is an individual Oracle8 object.


In Oracle8, a user-supplied definition or template, upon which objects can be built.  An object type is a composite, whose parts are attributes.  Each attribute has a name and a datatype, and the object type as a whole has a name.  An object type may also include one or more methods.


Acronym for Open Database Connectivity.  A standard for accessing different database systems.  An application can submit statements to ODBC using the ODBC flavor of SQL.  ODBC then translates these to whatever flavor the database understands.  Using the Oracle Open Client Adapter (OCA), an application can access different database management systems in one consistent manner.  This allows an application developer to develop, compile, and ship an application without targeting a specific DBMS.


Object Linking and Embedding.


An application that can store and display OLE objects.


An application that creates OLE objects.


See built-in datatype.


An environment variable that indicates the root directory of Oracle products.


An entry in the Project Navigator, such as "Types", "Projects", "Form Files", etc., used to help organize the Navigator and indicate the filetypes of child items.  It may also correspond to a data structure within certain types of filesystem objects.


Represented in x and y coordinates.  The origin of a view indicates the location of the view on its parent's canvas.  The origin of a canvas indicates the position of drawing on a drawn view.


The smallest virtual rectangle that completely surrounds an object.


When an object's contents cannot fit on the current logical page.  In the event of overflow, some of the contents are moved to the next logical page.


A PL/SQL function provided with the software that can be referenced anywhere within a program unit.


A method of encapsulating and storing related procedures, functions, variables, and other package constructs together as a unit in the database or on the client.  While packages provide the database administrator or application developer organizational benefits, they also offer increased functionality and database performance.  The software provides several built-in packages which contain PL/SQL constructs that can be referenced by client-side program units (e.g., TEXT_IO package).  Several packages are also supplied with the Oracle database server for referencing by stored program units (e.g., DBMS_OUTPUT package).


Includes the actual implementation of the package, which may include private subprograms and datatypes.  The body is optional if the package consists only of declarations.


Declares the public interface to the package-that is, the datatypes and subprograms that can be referenced by other program units.


(Oracle Express) 1. A slice of data included in a report. Additional pages display additional slices of data.

The following figure shows three pages of data.

2. In Express, a page can also refer to a unit of storage in an Express database.


(Oracle Express) A representation of how data selected for a query will appear in your spreadsheet. The page layout shows three edges -- Across, Down, and Page. The edges indicate how the multi-dimensional datacube defined by the query will appear in the two-dimensional spreadsheet. Dimension tiles display the names and positions of the dimensions. A dimension tile on the Across edge indicates that this dimension will appear as a column. A dimension tile on the Down edge indicates that this dimension will appear as a row. A dimension on the Page edge indicates that this dimension will appear in a page box at the top of the results.


A setting that controls whether to move the current object and its children to the next logical page.  You can set page breaks to occur before or after the current object appears in the report output.


An interface element that displays tools, colors, or patterns available in an editor.


A distinct portion of an editor where work is performed, usually resizeable.


The number of physical pages needed to print one logical page.


1. A PL/SQL construct used to pass information to a subprogram.  For example, in the subprogram call MYPROC (x),x is a parameter.  2. In Forms Developer, parameters are used to pass information between components such as Form Builder and Graphics Builder.  3. A variable you can change at runtime.


A group of parameter names and associated values used to pass information between Forms Developer components.


1. An object that is immediately above another object in its group tree.  A group object is the parent to each of the objects that compose it.  Every object is the parent of its children.
2. (Oracle Express) A dimension value at the level immediately above a particular value in a hierarchy. The parent value is the aggregated total of the values of its children.  The following example shows the dimension value "France" as the parent of "Lyon" and "Paris" in the GEOGRAPHY dimension.


To place the contents of the Clipboard (cut or copied objects) at the current cursor location.


A graphical property you can apply to the edge or fill of most objects.


The machine code or instruction list for a compiled program unit.


Acronym for Portable Document Format.  A file format (native for Adobe Acrobat) for representing documents in a manner that is independent of the original application software, hardware, and operating system used to create the documents.  A PDF file can describe documents containing any combination of text, graphics, and images in a device-independent and resolution independent format.


The size of a page that is output by your printer.


The type of element used to plot a field on a chart, such as bar, line, or symbol.


Oracle's proprietary extension to the SQL language.  Adds procedural and other constructs to SQL that make it suitable for writing applications.


A Procedure Builder Interpreter script file.


A PL/SQL library file that contains source code and compiled code. The file can be opened in Procedure Builder for editing.


A text file that contains the PL/SQL source of a single program unit.


A runtime PL/SQL library file that contains executable code only.  The file cannot be opened in Procedure Builder for editing.


A list that pops up when the user performs a particular action.


A number that TCP uses to route transmitted data to and from a particular program.


An action shipped with Project Builder and automatically available to the user via a menu item and/or a toolbar button.  Pre-defined actions include Build, Deliver, and several source control options.  When a pre-defined action is defined for a supported file type, the action is invoked for any selected item of that type when the user calls the action from Project Builder.  See also:  action, user-defined action.


See built-in datatype.


A setting that affects the behavior of the application's interface.


(Oracle Express) View the script that would be generated if you accept the current criteria. In the dialog box for any Selector tool you can preview your selection by choosing the Preview button.


The interface with which you view and scroll through report output online.


A column in a database table whose members consist of unique values that can be used to identify a row in a table.


See built-in datatype.


In a printer definition file, an escape sequence to which you assign a printer code that can be referenced in a report.


A file that contains a printer definition in text (e.g., ASCII or EBCDIC) format.


A PL/SQL subprogram that performs a specified sequence of actions. .  Can reside and execute on the client and the database server.


A PL/SQL code structure that can be independently recognized and processed by the PL/SQL compiler.  Anonymous blocks, subprogram specifications and bodies (procedures and functions), and package specifications and bodies are types of program units.  Program units can reside and execute on the client and the database server.  See also:  stored program unit.


The basic data structure created by Project Builder.  Projects are collections of pointers to all the files you consider part of your application, or otherwise want to group together conceptually.  You can define the editors, compilers, and other tools you use to work with the items contained within a project.  All project information is stored within a project registry.  See also:  project item, project file, export.


In Project Builder, project files are all the files associated with an application.  Project files can be of any type, including forms, reports, displays, 3GL modules, documentation, and test scripts. See also:  project, project item.


In Project Builder, anything for which properties may be defined, including all entities stored under the Projects node, types, actions, and macros. See also: project, project file.


The window containing a hierarchical list of project items for the current session.  The list appears in outline form, and enables the user to accomplish several tasks such as creating, editing, renaming, and deleting objects.  Although only one is visible at any time, the user can choose from two different schema by which to organize the objects.


The top-level node for a project.  It represents or points to the project file.  See also: project, project file.


In Project Builder, the file that stores all the information associated with a project:  files belonging to the project, types, actions, and macros defined for the project, and so on.


The project view shows objects organized by their type, and by their project/subproject relationships.  The projects are organized alphabetically by project file, then alphabetically by category.  See also:  dependency view, project, project file, view.


A dialog that assists the user in accomplishing the steps necessary to create a new project or sub project.


A characteristic of an object that determines the behavior or appearance of that object.


A named object that contains a list of properties and their settings used to globally control the appearance and functionality of objects based on that class.


A string you can enter when connecting to a database or server that allows you to connect to a remote database or server.


(Oracle Express) When you select values for one of the dimensions in a measure, the other dimensions that make up that measure are known as qualifying dimensions.

Suppose your Sales measure is dimensioned by Product, Month, and Geography. If you select the top ten cities based on Sales, you must also specify which product and month you want to consider when you compare Sales values. In this case, Product and Month are the qualifying dimensions.


A SQL SELECT statement that specifies the data you wish to retrieve from one or more tables or views of a database.


A PL/SQL function that, when executed, filters data retrieved by a query.  Only the data that meet the conditions in the function are charted.


An option that terminates the current session and returns the user to the operating system.  On some systems, Quit is Exit.


A control (similar to a check box), appearing in sets of two or more, only one of which may be either "on" or "off" at any given time.


A set of two or more radio buttons, only one of which may be either "on" or "off" at any given time.


(Oracle Express) A Selector dialog box tool that allows the user to select consecutive time periods as dimension values. These time periods can be based on any of the following:

•	A specific number of the most recent time periods

•	A beginning time period and a most recent time period

•	A beginning and ending time period

For example, the user can select dimension values for the range from the week ending November 25, 1996 through the week ending December 30, 1996.


A cipher designed by RSA Data Security, Inc. which can accept keys of arbitrary length, and is essentially a pseudo random number generator with the output of the generator being XORed with the data stream to produce the encrypted data.  For this reason, it is very important that the same RC4 key never be used to encrypt two different data streams.


Acronym for Relational Database Management System.  A database that allows the definition of data structures, storage and retrieval operations, and integrity constraints.  In such a database, data and relations between them are organized in tables.


A file that contains a single report definition in binary format.  .RDF files are used to both run and edit reports.


A file that contains a single report definition in binary format.  .rep files are used solely to run reports; you cannot edit a .rep file.


The ability to query the data throughout a database as of a single point in time.


One row fetched by a SQL SELECT statement.


An internal data structure object with a column/row framework, that belong to the form module in which they are defined.


A type of column that points to data in other column objects or object tables (Oracle8).


A line that appears at a specified value on a chart.


(Oracle Express) Fetch the most recent data from an Express database after query results are displayed in your report. When you open a saved Express query, the results are refreshed automatically.


To add the definition of a type or a new project to either the global or local registry.  Upon being registered, a new type can have actions defined for it, while a new project can have its referenced files identified as specific types, so that actions can be invoked against them.  See also:  registry.


A global and/or user-specific configuration file used to store project definitions and environment information.  See also:  Global Registry, user registry.


A symbol used in search criteria to indicate a comparison between two values, such as the equal sign in "WHERE DEPTNO = 10." Rows in which the comparison results in "true" are returned in the result (fetched), while rows in which the comparison returns "false" are rejected from the result.


A database on a computer other than the local database.  Usually a computer on the same network, but at a different node (i.e., a database that you use through a database link).


A layout object used to display rows of data that are fetched for a group.


A mode in which each character you type replaces the current character at the cursor.  The opposite of insert mode.


The objects that are used to define a report's data model and layout.  Report-level objects are assigned to a single report, and cannot be shared by other reports or other Oracle products. Objects include reports, queries, external queries, external PL/SQL libraries, groups, columns, parameters, links, frames, repeating frames, fields, boilerplate, and anchors.


Available on Windows NT and Windows 95 only, waits for any command lines to run a report, then places that report in its queue to run in the background on the local server.  Typically command lines are received from Form Builder or Graphics Builder via RUN_PRODUCT, or from another report via SRW.RUN_REPORT.  You can also use RWISV60 to submit a report to the Reports Background Engine.


Maintains timestamp and status information about reports managed by the Reports Server.


Available on Windows NT, Windows 95, and UNIX, enables running reports on a remote server.  Queues job requests and allows you to schedule when to run reports.  Use RWCLI60 to send a report to the Reports Server.


Provides an interface between your Web Server and Reports Runtime, enabling you to run reports dynamically from your Web browser.


Provides a connection between a Web Server and the Reports Server.


A file that contains a report definition stored in text (e.g., ASCII or EBCDIC) format.  .REX files are used to port reports from one platform to another. Note that .REX files are no longer required. They are available for backward compatibility.


Refers to the intensities of the red, green, and blue components of a color.


The group object to which all other objects in an application belong.


Top-level node for a project representing user's environment.  May correspond to the user registry or the Global Registry, depending on which registry has been chosen to set defaults.


1. One set of field values in a table; for example, the fields representing one employee in the example table EMP.  2.  To generate a runtime version of an application.


An object in an Oracle8 object table.  Each row in the table is an object.  However, in Forms Developer an object table is deconstructed into individual columns, so that the row object no longer exists as a single entity (only as its separate attributes).


To execute a runtime version of an application or program unit.


Acronym for Rich Text Format.  A non-platform-specific file format based on control words used to represent unformatted text and images in various applications and operating systems.  RTF uses the ANSI, PC-8, Macintosh, or IBM PC character set to control the representation and formatting of a document, both on the screen and in print.


See rep file.


The interface in which users view and interact with a runtime application.


A screen or window appearing optionally at runtime in which a user can modify print options and parameters prior to report execution.


(Oracle Express) A set of dimension values that has been saved either as a list of values or as a script. You can save selections that you build, or your database administrator can create saved selections and make them available to you.

Saved selections are a timesaving feature: each time that you need to re-use a selection, you can simply retrieve a saved selection without having to recreate it.


(Oracle Express) A Selector tool that allows you to retrieve a selection of dimension values that has been saved.


A collection of related database objects, usually grouped by database userid.  Schema objects includes tables, views, sequences, stored program units, synonyms, indexes, clusters, and database links.


The level at, or range in which, an object operates.  For Project Builder:  1.  Describes the range of files affected by Compile and Compile All commands invoked against compilable project items.  2:  Describes the range of files influenced by inheritable definitions.


See SQL script, Interpreter script.


In Report Builder, one of multiple layouts in the same report, each with a different target audience, output format, page layout, page size, or orientation.  For example, a single report can include an executive summary for senior management in one section and also a detailed breakdown for  individual managers in another section.


A SQL statement that specifies which rows and columns to fetch from one or more tables or views.


(Oracle Express) The set of dimension values currently chosen for a dimension, or the script that contains conditions or criteria to specify those values.


(Oracle Express) As shown on various dialog boxes in the Selector, a description of the choices that a user has made in selecting dimension values. It is a translation, in ordinary language, of the Express Language script.


(Oracle Express) A set of tools that you use to choose the dimension values to include, for instance, in a report, table, graph, or dimension list box. For example, you can use the Selector to choose the top 10 cities based on Sales or those cities whose Sales exceeded Quota by 15 percent. The Selector also allows you to sort dimension values and to create and retrieve saved selections.


(Oracle Express) A dialog box or group of dialog boxes that provides a particular way of selecting or sorting dimension values. Each Selector tool is part of the Selector. You can use Selector tools to select dimension values based on their level in the hierarchy, their attributes, the characters in the value name, and so on. You can also use Selector tools to sort the dimension values.


The period between invoking and quitting the executable.


One of two or more objects that have the same parent object in its group tree.  All objects that belong to one group object are siblings.


The combination of an IP address and a port number.


(Oracle Express) A Selector dialog box tool that allows you to rearrange the order of dimension values in a displayed selection. You can sort a selection in ascending or descending order by the following:

•	Alphabet

•	Order in the database

•	Data value

•	Order or level in the hierarchy

•	Time period

You can also sort a selection manually, by dragging and dropping dimension values.


In PL/SQL:  Statements provided in a subprogram or package.  You must have the source code for a program unit before you can compile it into executable form.  In Project Builder:  The input types required to build target types.


Defines only the names, parameters, and return type (applies to functions only) of the subprogram.


A small rectangle at the bottom of the vertical scrollbar and to the left of the horizontal scrollbar in an editor.  Dragging and releasing the mouse button creates a new pane, and divides the scroll bar into separate scroll bars for each pane.


A standard interface for storing and retrieving information in a relational database.  SQL is an acronym for Structured Query Language.


A that contains a query stored in text (e.g., ASCII or EBCDIC) format.


A file containing SQL statements that you can run to perform database administration quickly and easily.  Several SQL scripts are shipped with Oracle products.


A SQL instruction to Oracle.  A SELECT statement is one type of SQL statement.


See call stack.


A PL/SQL construct used for conditional, iterative, and sequential control, and for error handling.  A semi-colon (;) must terminate every PL/SQL statement.


(Oracle Express) A saved selection that contains the same dimension values every time it is evaluated. Static saved selections list the dimension values that are to be selected, rather than the selection criteria. For example, a static saved selection script might include "Select February 1996, March 1996, and April 1996", while the script for a dynamic saved selection might have "Select the last three Months".


A procedure, function, or package that resides and executes in the Oracle database server.


A procedure or function that resides and executes in the Oracle database server.


HTML extensions that provide powerful formatting flexibility in HTML documents.  To view an HTML document that takes advantage of style sheets, display it in a browser that supports style sheets.


A PL/SQL procedure or function.


In Project Builder, a project contained within another project file, rather than being stored in its own file.  See also:  project.


In Project Builder, a node denoting a subproject.  See also:  project, project node, subproject node.


A column, with a type of summary, which computes subtotals, grand totals, running totals, and other summaries of the data in a report, using one of the packaged summary functions provided by Report Builder.


The file format used by the Microsoft Excel program.


The orderly system by which commands, qualifiers, and parameters are combined to form valid command strings.


One of the variables that are provided with Reports Developer (e.g., &Logical Page, DESTYPE).


A named collection of related information, stored in a relational database or server, in a two-dimensional grid that is made up of rows and columns.


A collection type, which defines a data unit made up of an unordered set of elements, all of the same data type.  The corresponding data unit is a single column nested table, the column type of which is a built-in type or an object type.  (Oracle8)


A default layout displaying labels at the top of the page and rows of data underneath the labels.


In Project Builder, any item in the middle of the dependency tree; for example, an executable is a (compile) target for a library; while a library is a target for a group of objects; and an object is a target for a source file.


A node denoting a target.  See also: target.


Acronym for Transmission Control Protocol. The underlying communication protocol for exchanging HTTP requests between clients and Web servers.


A submenu that the user can remove from its source using a mouse or other pointing device and drag to another part of the display screen.


In Form Builder, an item that displays a character string value.


The horizontal area at the top of a window that displays the name of the application or interface element in that window.


See header.


To turn a setting alternately on or off.  For example, you can hide or show the Object Navigator.


An iconic button used to create and manipulate objects in an application.


Collection of iconic buttons that perform product commands.  Usually aligned horizontally along the top, or vertically down the side of a window.


A collection of tools.


(Oracle Express) A Selector dialog box tool that allows the user to select dimension values based on the top x, bottom y, or top x and bottom y data values. For example, the user can produce a dimension selection that contains products whose Volume Sales were among the top 10 percent of products in the Total U.S. for the four-week time period ending December 30, 1995.


A optional report region that can contain closing material for the report, including text, graphics, data, and computations.  The report trailer appears last, following the header and body.


A sequence of SQL statements treated as a single unit.


A PL/SQL procedure that is executed, or "fired," upon a specific event.


A description of a file type, such as a form, a document, etc., containing such information as type name and description. Each description applies to a single file type.  In addition, there are four meta-types: "updtext", which applies to all text files, “updproj” which applies to all project files, “updlink”, which applies to all project links, and "all" which applies to any file type.  Types are the foundation for defining actions and macros.


To change the values for table data, in particular, by altering data values using the SQL command UPDATE, but also by deleting values using the SQL command DELETE or by inserting values using the command INSERT.


Acronym for Uniform Resource Locator. The "address" used to specify a WWW server and home page.  For example:
http://www.acme.com/
which indicates that the host's address is www.acme.com. An URL most often is a filename (possibly with a long path to it and usually with an extension of .HTML, or .HTM (for PC-DOS filenames).


A way in which to pass control (and possibly arguments) from Forms Developer to another Oracle product or 3GL, and then return control (and possibly arguments) back to Forms Developer.


A custom action defined by a Project Builder user.  Such actions may apply to any single file type, or to all file types.  See also:  action, pre-defined action.


See object type.


A custom macro defined by a Project Builder user.  Such macros may be used to modify both built-in actions and user-defined actions.  See also:: macro, built-in macro, action, pre-defined action.


A project file storing configuration information on a per-user basis.  This enables users to customize their individual development environments.  The user registry inherits type information from the Global Registry, and may define new types as well as override aspects of type definitions stored in the Global Registry.  It also stores environment and preference information, such as the user's preferred connection string, UI settings such as "Display Toolbar" and certain general project information such as "Author."  See also:  registry, Global Registry.


See continuous axis.


A PL/SQL code structure that returns a value.  Value constructs include functions and expressions.


A named object that can be assigned a value and whose assigned value may change over time.


A collection type, which defines a data unit made up of an ordered set of elements, all of the same datatype.  The corresponding data unit is a varying array or VARRAY.  The number of elements in a VARRAY (size) is variable.  However, you must specify a maximum size when you declare a varying array type.


Visual Basic extension.  Used as the file extension for special dynamic link libraries distributed on files that contain predefined VBX controls.


A widget, built with the Microsoft Visual Basic language, used to enhance the user interface, obtain user input, and display output  (e.g. sliders, grids, and control knobs).


A virtual table whose rows do not actually exist in the database, but which is based on a table that is physically stored in the database.


A directory mnemonic (essentially a shortcut or synonym) that the virtual file system uses to map files stored in the file system on the host machine.


A mapping that associates the pathnames used in URL to the file system maintained by the host machine's operating system.


The font, color, and pattern properties that you set for objects that appear in your application interface.


See WWW.


A program that end users utilize to read HTML documents and programs stored on a computer (serviced by a Web server).


A program executed on a Web server via the Web Request Broker.


A server process (HTTP daemon) running at a Web site which sends out Web pages in response to HTTP requests from remote Web browsers.


A character used to mean 'any one character' or 'a contiguous set of characters' within a word or phase.


1. A rectangular area of the desktop that contains an application.  Each window has an area where you can interact with the application.  Windows can be opened, resized, moved, reduced to an icon, or enlarged to fill the entire desktop.  2. In Form Builder, an object type you can associate with a canvas view.


The file format used by some spreadsheet programs, such as SQL*Calc, or by Lotus 1-2-3 programs.


Acronym for Oracle Web Request Broker.  Provides a powerful distributed runtime environment for developing and deploying applications for the Web.  The WRB runtime platform enables application developers to write applications that are independent of, and work with a number of, Web servers.


Acronym for World Wide Web.  The network of servers on the Internet, each of which has one or more home pages, which provide information and links to other documents on that and (usually) other servers.


To expand an object to allow more room for editing the contents of the field.


The secondary toolbar docked (by default) to the left of the Project Navigator.  It provides simple organization and application launching abilities.


 the latest version of OLE controls (OCX)


XML output complying with general XML principles such as proper tagging, nesting, and the inclusion of an XML declaration, e.g. <?xml version="1.0" encoding="UTF-8"?>.


A placeholder username enables users to log on to the database using their personal username rather than the Oracle database username (e.g., $user_name@database) when running reports from a Web browser.


Extensible Markup Language -- a metalanguage using SGML to define and structure data. Report Builder supports XML output to enable Web publishing as well as electronic data exchange with third-party applications. You can also use XML to build report definitions that can be merged with other report definitions at runtime or run separately


XML output with structure and element content conforming to a document type definition (DTD). Valid XML is also well-formed.


Building a form using object tables

  Run this demo 	  Build this demo

To view the demos on Windows:  If the demos interface is not displayed on your screen, choose Start [image] Programs [image] Oracle Forms Developer 6i Demos [image] Forms Benefits & Features (web or client/server).

In this demo, information about departments and employees is presented in the O_DEPT and O_EMP data blocks.  Summaries and formulae are computed on these blocks showing the number of employees in each department, the total salary of each employee (base salary plus commission), and the sum of salaries of the employees in each department by invoking the appropriate methods.


Running this demo: Building a form using object tables
Building a form using object tables

To run this demo:

1	Click Next Dept and Previous Dept to move from department to department.  Note the summary and formula items highlighted in yellow.  No trigger code was required to calculate these values.


Building this demo: Building a form using object tables
Building a form using object tables

To build this demo:

1	Create the O_DEPT and O_EMP data blocks.

2	Create the summary and formula items.


Creating the O_DEPT and O_EMP data blocks
Building a form using object tables:  Creating the O_DEPT and O_EMP data blocks

To create the DEPT and EMP data blocks:

1	In the Object Navigator, choose Tools [image] Data Block Wizard.

2	When the Data Block Wizard asks whether to base the block on a Table or on a Stored Procedure, choose Table.

3	Follow the prompts in the Data Block Wizard to create the O_DEPT block.

4	When the Data Block Wizard is complete, run the Layout Wizard.

5	Repeat these steps to create the O_EMP data block.

6	In the Object Navigator, select the O_EMP data block.  In the Property Palette, set the Query All Records property to Yes.

  Next Step


Creating the summary and formula items
Building a form using object tables:  Creating the summary and formula items

To create the summary and formula items:

1	In the Layout Editor, click the Block pop-list in the toolbar and select EMP.

2	Click the Text Item tool in the tool palette.  Create the Headcount item.

3	In the Property Palette, set the following properties of the Headcount item:

Calculation Mode to Summary

Summary Function to Count

Summarized Block to EMP

Summarized Item to EMPNO

4	Click the Text Item tool in the tool palette.  Create the Fullsal item.

5	In a post-query trigger, insert the following code:

:O_EMP.fullsal:=O_EMP.total_sal;

6	Click the Text Item tool in the tool palette.  Create the Totalsal item.

7	In a KEY_EXEQUERY trigger on the O_EMP block, insert the following code:

execute_query:
:O_EMP.totalsal:=O_DEPT.total_sal;


Help topic not found.  Check the online help for related topics.