Transcript CH6_A

Creating Custom
Forms
Part A
Eyad Alshareef
1
Data Block and Custom Forms

Data block form
Based on data blocks that are associated with
specific database tables
 Reflect the structure of the database


Custom form
Based on control blocks that process data from
multiple tables
 Reflect business processes rather than the database
structure

Eyad Alshareef
2
Introduction to Custom Forms

Custom form
Displays data fields from variety of database tables
 Contains programs that support organizational
processes
 Use lists of values (LOVs) to retrieve data values
 Manipulate data using form triggers

Eyad Alshareef
3
Identifying the Business Processes
and Database Operations



Identify processes that form supports
Identify associated database tables
Describe process
Eyad Alshareef
4
Designing the Interface

Visualize how form will look
Eyad Alshareef
5
Creating a Custom Form


Manually create form canvas in Object
Navigator
Create form items by “painting” items on canvas


Using tools on Layout Editor tool palette
Write code that controls form functions
Eyad Alshareef
6
Creating the Form Canvas


Manually create form canvas in Object
Navigator
Start Forms Builder
Create and rename form canvas
 Rename form module and form window
 Change Title property of form window


Perform in Visual View in Object Navigator
Eyad Alshareef
7
Creating a Control Block

Control data block
Also called control block
 Data block not associated with particular database
table


Create new data block in Object Navigator
Specify data block created manually
 Use Ownership View

Eyad Alshareef
8
Creating the Form Items

Create
Boilerplate logo image and text
 Form text items
 Command button items


Display form in Layout Editor

Draw items on form canvas using tools in tool
palette
Eyad Alshareef
9
Creating the LOVs

LOV



Retrieve data from database table
Use LOV Wizard
Run form

To test LOV
Eyad Alshareef
10
Displaying System Date and
Time Values in Form Text Items

System variable


Variable representing value always available to any
form
Display value in text item automatically

Set text item’s Initial Value property
Eyad Alshareef
11
Forms Builder Date and Time
System Variables
Eyad Alshareef
12
Creating Command Buttons


Create and configure buttons
Create form triggers associated with buttons
Eyad Alshareef
13
Creating and Configuring
Command Buttons

Draw button on canvas using Button tool


Button tool on tool palette
Button group

Buttons should all be same size


Wide enough to accommodate longest button’s label
Draw button with longest label first
Eyad Alshareef
14
Creating the Button Triggers

Select Triggers node under button in Object
Navigator
Click Create button to create trigger
 Select trigger event
 Specify trigger code


WHEN-BUTTON-PRESSED button event

Trigger code executes when user clicks button
Eyad Alshareef
15
Creating the Button Triggers
(continued)

Reference form items:


:block_name.item_name
Clear form text items in form trigger:
Use CLEAR_FORM built-in procedure
 Create program unit to set value of text items to
blank text string


Procedure

Code block that executes commands to change one
or more values
Eyad Alshareef
16
Creating the Button Triggers
(continued)

Function
Code block
 Returns single value


Create program unit:
Open Object Navigator
 Select Program Units node
 Click Create button


Program unit does not use DECLARE keyword
Eyad Alshareef
17
Creating a Custom Form
1.
2.
3.
Create the form
Create the form window and canvas manually
Create a control block


4.
Data block that is not associated with a specific table
Contains form items that you manually draw on the canvas
Create form triggers to process data
Eyad Alshareef
18
Form Triggers



Code that is associated with a form object and
an event
Can contain SQL INSERT, UPDATE,
DELETE, and SELECT commands
Referencing form text item values in triggers:
:block_name.item_name
Eyad Alshareef
19
Practice1

Create a custom form that has:
Employee Name
 Employee Salary
 Department Name




Create a LOV to retrieve block records
Use triggers to retrieve block records
Create a button that calls a program unit to clear
the block.
Eyad Alshareef
20
Creating a custom form



Create a new form module and name it COURSE
Click on data bloc and then on the plus icon. Select
Build a data block manually
Rename your block into COURSE_BLOCK
Eyad Alshareef
21
Create and modify a canvas


Add a canvas by clicking on Canvas in object navigator
and then on a plus sign
Rename your canvas into HEADER, and open it with
Design Editor
Eyad Alshareef
22
Create and modify a canvas



Change the background color of the canvas using the
Property palette
Add a header “Course Information”
Add a picture (download any picture from the web, save
in in C:\\temp, then go to Edit, Import)
Eyad Alshareef
23
Add text boxes and prompts

Using the toolbox on the left, add Course Name text
box and a corresponding prompt:
Eyad Alshareef
24
Add text boxes and prompts



Using the toolbox, add a stacked canvas on COURSE canvas
Name your canvas COURSE_ITEMS
Add Room and Time text boxes and corresponding prompts to
the COURSE_ITEMS canvas
Eyad Alshareef
25
Add control buttons



Return to the main canvas
Using toolbox on the left, add four control buttons.
Name them New, Find, Save and Clear
Eyad Alshareef
26
Adding PL/SQL code


Create triggers for each of the buttons
Add PL/SQL code to the triggers
Eyad Alshareef
27
Adding PL/SQL code
Eyad Alshareef
28
Adding PL/SQL code


Create triggers for each of the buttons
Add PL/SQL code to the triggers
Eyad Alshareef
29
Adding PL/SQL code


Create triggers for each of the buttons
Add PL/SQL code to the triggers
Eyad Alshareef
30
Adding PL/SQL code


Create triggers for each of the buttons
Add PL/SQL code to the triggers
Eyad Alshareef
31
Form Trigger Properties

Trigger activated


In response to event such as clicking button
Trigger name defines event that activates it
Eyad Alshareef
32
Trigger Categories
Eyad Alshareef
33
Trigger Timing


Specifies when trigger fires
PRE

POST

Fire just before event successfully completes
Fire just after event successfully completes
ON-,WHEN-, and KEY
Fire in response to actions
Eyad Alshareef
34
Trigger Scope


Defines where event must occur in order for
associated trigger to fire
Includes object to which trigger attached

And objects within trigger object
Eyad Alshareef
35
Trigger Execution Hierarchy

Defines which trigger fires



When object within form object contains same
trigger that form object contains
By default trigger in higher-level object overrides
trigger in lower-level object
Can specify custom execution hierarchy
Eyad Alshareef
36
Directing Form External
Navigation

External navigation


Form focus


User causes form focus to change by making
different form item active
Item currently selected on form
Internal navigation

Result of internal form code that responds to
external navigation operations or trigger commands
Eyad Alshareef
37
Setting the Form Tab Order

Set tab order

Place items in correct order under Items node

In Object Navigator window
Eyad Alshareef
38
Directing External Navigation
Using Built-in Subprograms

Built-in subprograms
Called built-ins
 Use to direct external form navigation


Cannot use in navigational triggers
Eyad Alshareef
39
Built-in Subprograms to Control
External Navigation
Eyad Alshareef
40
Triggers That Fire at
Form Startup
Triggers Fired
User Action
1
2
PRE-FORM
PRE-BLOCK
User starts form
4
Result on User
Screen Display
3
Form appears,
but with no
data visible
5
WHEN-NEW-FORM-INSTANCE
WHEN-NEW-BLOCK-INSTANCE
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE
Eyad Alshareef
Form is
available for use
41
Triggers That Fire as a Result
Of External Navigation
User Action
User places the
insertion point
in a text item
User clicks
the Next Record
button
Triggers Fired
WHEN-NEW-ITEM-INSTANCE
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-ITEM-INSTANCE
Eyad Alshareef
Result on User
Screen Display
Insertion point
appears in item
Next record
appears
42
Triggers That Fire When a
Form Closes
User Action
User closes
the Forms
Runtime window
Triggers Fired
POST-BLOCK
POST-FORM
Eyad Alshareef
Result on User
Screen Display
Forms Runtime
window closes
43