Scheduler — version history
An Outlook-style calendar — day, work week, week, month and agenda views, drag and drop, resources side by side, colour categories, and cards and tooltips written with templates — filled appointment by appointment or from a DataStore. Introduced in 4.0.
4.0 — October 2026 #
New #
- First release. Five views (
is_view: day, work week by default, week, month, agenda) aroundis_date, both read back live and reported byue_view_changed/ue_date_changed; a toolbar with Today, previous, next and a view menu; working hours shaded, a current-time line, overlapping appointments sharing the width, an all-day band for all-day events and anything lasting 24 hours or more. - Appointments added one by one (
of_add_appointment, with a text ordatetimeoverload) and driven through their handle (of_appointment→n_pbt_scheduler_appointment): location, organizer, description, resource, category, status ("Show as": busy, tentative, free, out of office, elsewhere), all day, recurring, private, reminder, cancelled, read-only, accent colour; your own fields withof_set_field/of_get_field. of_from_datastoreloads a DataStore in one call: one row = one appointment, its key = its row number, ready forSetItem; columns take a role by name or throughof_map(ROLE_*, column), and every column becomes a template field. Regional dates written by the DataWindow are read correctly.- Dates travel as
"yyyy-mm-dd hh:mm", floating local time, exclusive end; an all-day appointment is written and returned as dates only, both days included. - Resources (
of_add_resource,of_resource) with one column per resource (is_group_by = GROUP_RESOURCE), hiding a resource hides its appointments; colour categories (of_add_category,of_category). - Cards, month lines and tooltips are templates (
is_card_template,is_month_template,is_tooltip_title_template,is_tooltip_template): rich text with{field}, date formats with PowerBuilder tokens ({start:dddd d mmmm}), conditional blocks{?x}…{/x}/{!x}…{/x}, and the new rich-text tag[symbol=name](eighteen built-in monochrome symbols: clock, location, person, bell…). - The user moves an appointment by dragging (time, day or resource) and resizes it by its edges (
ue_appointment_moved,ue_appointment_resized), with an optional veto before the change (ib_veto_changes→ue_appointment_changing); sweeps empty slots (ue_range_selected); asks for a new appointment by double-click or the "+" of a day header (ue_new_requested); opens one (ue_appointment_opened); right-clicks an appointment or an empty slot for your own menu. The calendar never creates, changes or deletes anything else by itself. - Keyboard: Enter opens, Delete asks for deletion (
ue_delete_requested), arrows move the selection, Page Up / Page Down change period, Alt+Home returns to today. - Navigation and selection by code:
of_next,of_previous,of_go_to_today,of_select_appointment,of_show_appointment,of_scroll_to_time,of_first_visible_date/of_last_visible_date,of_shown_count;ib_read_onlyswitches every gesture off. - Rendering stays fast on large data sets (tens of thousands of appointments).
- Known limits of this version: no recurrence engine, no time zones, no timeline view or mini-calendar, no iCalendar import or export, no printing, and appointments are created and moved with the mouse only.
ue_script_error: a script error in the page reaches PowerBuilder with its message instead of being lost.of_set_property,of_get_propertyandof_component_name: drive a property by its name (settings screen, saved configuration).