Press "Enter" to skip to content

Creating, Stopping, Re-Starting and Deleting a Timer in Oracle Forms

I have written many posts previously on Timer in Oracle Forms like how to change images randomly with timers and how to display a clock using timer, but in this post I am simply describing to how to create a timer, stop a timer, re-start a timer and deleting a timer.
The following is the screen shot for this example showing a progress bar based on a display item:
You can also download this form from the following link Timer.fmb
Create a display item with the following properties:
Name: Prgbar
Width: 5
Bevel: Plain
Background Color: blue
Write the following code for the “Create Timer” button:

When-Button-Pressed trigger
Declare
v_timer timer;
Begin
— find timer first if already exists.
v_timer := find_timer(‘PrgBarTmr’);
if id_null(v_timer) then
— Creating timer for one second… one second = 1000 millisecond
v_timer := Create_Timer(‘PrgBarTmr’, 1000, Repeat);
else
message(‘already exists.’);
end if;

— will handle this timer in form level when-timer-expired trigger
End;

Write the following code for the “Stop Timer” buton:

When-Button-Pressed trigger
Declare
v_timer timer;
Begin
— find the timer first
v_timer := find_timer(‘PrgBarTmr’);
if not id_null(v_timer) then
— this will stop the timer after one millisecond
Set_Timer(v_timer, 1, No_Repeat);
end if;
— will handle this timer in form level when-timer-expired trigger
End;
Write the following code for the “Re-Start Timer” buton:

When-Button-Pressed trigger
Declare
v_timer timer;
Begin
— find the timer first
v_timer := find_timer(‘prgbartmr’);
if not id_null(v_timer) then
— this will re-start the timer after one second
Set_Timer(v_timer, 1000, Repeat);
else
v_timer := create_timer(‘prgbartmr’,1000, Repeat);
end if;
— will handle this timer in form level when-timer-expired trigger
End;
Write the following code for the “Delete Timer” buton:

When-Button-Pressed trigger
Declare
v_timer timer;
Begin
— find the timer first
v_timer := find_timer(‘PrgBarTmr’);
if not id_null(v_timer) then
— this will delete the timer
Delete_Timer(v_timer);
end if;
End;

Then finally write the code for When-Timer-Expired trigger at form level to handle the timer and to do specific task:

When-Timer-Expired trigger
Declare
v_timer_name varchar2(30);
v_width number;
Begin
— get the timer name first.. to know which timer has expired.. if multiple timer are running
v_timer_name := get_application_property(timer_name);
— check if the same timer with capital letters
if v_timer_name = ‘PRGBARTMR’ then
v_width := get_item_property(‘blKtmr.prgbar’, width);
if v_width < 100 then
v_width := v_width + 5;
else
v_width := 0;
end if;
set_item_property(‘blktmr.prgbar’, width, v_width);
end if;

— will handle this timer in form level when-timer-expired trigger
End;

Vinish Kapoor

FoxInfotech.in is created, written, and maintained by Vinish Kapoor. It is built on WordPress, and hosted by Bluehost. Connect with Vinish on Facebook, Twitter, and GitHub.

You may also like: