An external clock can be constructed using timers. Timers correspond to internal clocks, which have a specific time period. When the specified duration expires, the timer can either perform an action once and stop or repeat the action regularly every time the timer expires . Timer duration is always in milliseconds . Timers are created using the CREATE_TIMER built in and require a WHEN-TIMER-EXPIRED trigger to be written at the form level. This trigger fires every time the timer expires.
Using REPEAT Timers
Let's create a display item, CURRENT_TIME, in the horizontal toolbar canvas CANVAS_TOOLBAR created earlier. This item shows the time in HH24:MI:SS format and updates itself every second (the timer duration).
In the WHEN-NEW-FORM-INSTANCE trigger, create a timer named CLOCK_TIMER, which iterates after every one second and populates the CURRENT_TIME item with the system date in HH24:MI:SS format. The code is as follows :
DECLARE
timer_id TIMER;
one_second NUMBER := 1000;
BEGIN
timer_id := FIND_TIMER('CLOCK_TIMER');
IF NOT ID_NULL(timer_id) THEN
DELETE_TIMER(timer_id);
ELSE
timer_id := CREATE_TIMER('CLOCK_TIMER',one_second, REPEAT);
END IF;
SELECT TO_CHAR(SYSDATE,'HH24:MI:SS')
INTO :toolbar.current_time
FROM DUAL;
EXCEPTION WHEN OTHERS THEN
MESSAGE(TO_CHAR(SQLCODE)''SQLERRM);
END;
Create a WHEN-TIMER-EXPIRED trigger as follows:
DECLARE timer_name VARCHAR2(30); BEGIN timer_name := GET_APPLICATION_PROPERTY(TIMER_NAME); IF timer_name = 'CLOCK_TIMER' THEN SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') INTO :toolbar.current_time FROM DUAL; END IF; EXCEPTION WHEN OTHERS THEN MESSAGE(TO_CHAR(SQLCODE)''SQLERRM); END;
GUI Development
Advanced GUI Development: Developing Beyond GUI
Multi-form Applications
Advanced Forms Programming
Error-Message Handling
Object-oriented Methods in Forms
Intelligence in Forms
Additional Interesting Techniques
Working with Trees
Oracle 8 and 8i Features in Forms Developer