This article describes how to configure a control on the screen to count down to an event that will take place in the future or to express the time elapsed after the start of an event. For example, suppose it is 3 p.m. and an event is programmed for 4 p.m. You need to add a countdown that shows the number of minutes left for the event to begin. Also, if the event is currently taking place, you may want to show, for example, the time elapsed since the beginning of the event.
You can achieve this by defining an attribute or variable based on the DateTime data type and setting its Control Type property = Relative Timer.
You must assign a DateTime value to the attribute/variable, with which the control is initialized when the count is started.
Format |
Style with which the time interval will be displayed. |
Units |
Time units used to display the time interval. |
Most Representative Unit Only |
Indicates whether only the most significant unit of time should be displayed (truncating). |
Counting Type |
Sets if the Relative Timer control will make a countdown, count the elapsed time, or both. |
Prefix Text |
Text that precedes the relative time. |
Suffix Text |
Text to be displayed after the relative time. |
Maximum Seconds |
Sets a number of seconds such that when the counter becomes equal to or greater than it, the text set in the Maximum Text property is shown. |
Maximum Text |
Text to display after the elapse of the interval in seconds set in the Maximum Seconds property, since the start time. |
Minimum Seconds |
Sets a number of seconds such that when the counter becomes equal to or lower than it, the text set in the Minimum Text property is shown. |
Minimum Text |
Text to display after the elapse of the interval in seconds set in the Minimum Seconds property. |
It applies to the properties of the Attribute theme class.
TimerStatusChanged
This event is triggered when any of the following conditions are met:
- When the control starts to be executed.
- Relative time elapsed; that is to say, when the target time is reached, this event will be executed.
- The Maximum Seconds value has been reached.
- The Minimum Seconds value has been reached.
Create a Panel object with a variable based on the DateTime data type. Set the variable Control Type property = Relative Timer.
Program the Panel Start event as shown below:
Event Start
&RelativeTimer = Now()
&RelativeTimer = &RelativeTimer.AddMinutes(15)
EndEvent
When executing the application, you will see the following:
Suppose that once the countdown reaches zero, a text must appear indicating that the event is currently taking place. To achieve this, you have to use the TimerStatusChanged event associated with the control.
Add the third line of code to the Start event, as shown below:
Event Start
&RelativeTimer = Now()
&RelativeTimer = &RelativeTimer.AddMinutes(15)
&TimerStarted = False
EndEvent
Program the TimerStatusChanged event associated with the control as shown below:
Event &RelativeTimer.TimerStatusChanged
Composite
If &TimerStarted = False
//The control start to be executed
&TimerStarted = True
Else
&RelativeTimer.PrefixText = 'Live Now'
EndIf
EndComposite
EndEvent
This event is executed and &TimerStarted = False. So, you enter the if statement, the counter starts counting, and the value of &TimerStarted is changed to True. When the counter reaches zero, the event will be triggered again, this time entering the else statement. So, the text 'Live Now' is assigned to the control's Prefix Text property.
When executing the application, you will see the following: