Occasionally RTI slip out little tools and utilities that they've found useful. If you're very lucky they'll even ship source. One such gem in OI 10 is the OIWIN Date/Time picker - RTI_DATETIME_POPUP to its friends.
If ever you've wanted to offer your user a way of selecting date or time from a calendar/time control, and you've not been too happy with the datetimepicker OCX and the old POPUP_MONTH dialog seems a little dated, then this is the one for you.
It really is stunningly simple to use. Just add a quickevent to call a stored procedure and you're sorted.
For illustrative purposes, here's a sample window -
The cuebanners reflect the conversion on the edit line. The quickevent for the options on each editline is defined thusly -
Once you've chosen the Target you can just accept the defaults other than DEFPROP which should be replaced with INVALUE.
We only need one options button because we're taking advantage of a newly exposed property - in the property panel under the Behavior section, we're setting ALLOWFOCUS to false and then we can just send an OPTIONS event to @FOCUS.
So how does the routine behave? See the following screen shots -
Now there are a couple of caveats that I need to mention. The first (as you can see) is that DT and DTS provide the same dialog. The second (due to a bug that I leave you to find) is that DTS always returns 1967 as the year. But as you are encouraged to save under a different name and compile your own version it is easily fixed! If you don't want to then it is all fixed with the latest beta.
The examples given below show what displays when you let the system determine default values. Examining the source reveals that, should you wish to, you may have much more granular control over the behaviour of the control. In this endeavour RTI_POPUP_DATETIME_EQUATES are your friend, but to save you having to look at this, we'll document their use here.
If you use DIALOG_BOX to launch the RTI_POPUP_DATETIME window, you can pass in an @Fm delimited create parameter having the following values -
<1> Mode, D, DT, DTS, MT, MTS
<2> Initial date to use in internal format
<3> Initial time to use in internal format
<4> Parent
<5> Horizontal alignment against owner (L or R)
<6> Value mark delimited array containing the screen size of the owner
<7> First year in the year dropdown
<8> Last year in the year dropdown
We can override date ranges, set default values and even alter dialog positioning by passing in the correct values.