Tab — version history
Modern tabs hosting real PowerBuilder controls (user objects, DataWindows, other components): movable tab strip, icons, closable and reorderable tabs. Introduced in 1.0.
4.0 — October 2026 #
New #
ue_tab_rclicked(as_key): withib_context_menu = false, a right-click selects the tab then raises this event, so you can open your own menu (a disabled tab stays silent).- Keyboard in the tab strip: Delete closes the focused closable tab, Up / Down walk a vertical strip, the arrows skip disabled or overflowed tabs and follow right-to-left reading order; Enter keeps the focus on the tab.
- Hiding or showing a tab from your code (
ib_visible) raisesue_layout_changedwith the whole layout, likeof_move_page. - The label of the "···" button of overflowed tabs follows the application language.
[symbol=name]tag in rich text: eighteen monochrome glyphs that follow the text colour (clock,location,person,calendar,phone,mail,warning…); an unknown name stays as text.- Every native menu of the component (like every native menu of the library) lets the user type the first letters of an entry to jump to it, read through the keyboard layout; a menu with more than 500 entries only draws what is visible.
- A middle click closes a closable tab, like its close button (
ue_tab_closingis asked first whenib_veto_close = true); a tab that cannot close ignores it. - Ctrl+Tab / Ctrl+Shift+Tab and Ctrl+Page Down / Ctrl+Page Up move to the next / previous tab, wrapping round, skipping hidden and disabled tabs, from the tab strip and from inside a page (a PowerBuilder control or another component hosted in it); like a click, they ask
ue_selection_changingwhenib_veto_selection = true.
Fixed #
- A disabled or hidden tab is no longer activated or closed: not by its close button, its shortcut (
is_shortcut), "Close all / others / to the right", nor byof_select_page(which returns-5). - When the active tab is closed, removed or hidden, the selectable neighbour takes over (right, otherwise left);
as_from_keyofue_selection_changednames the tab actually left, even when it is gone. When no tab is visible any more, the page is hidden andue_selection_changed(previous, "")is raised. of_add_pagereturns-5for a control already hosted (by this tab or another component) and for an empty key, a key already taken or containing/or|; a failed addition gives the page back to its window and leaves the key free.of_select_pagereturns-5when the page could not become active, including when no tab is active afterwards.of_set_layoutreturns-5on a text that is not JSON and ignores a malformed entry instead of breaking the page.- A tab disabled or hidden while
ue_tab_closingawaits its answer stays open; going back to the current tab whileue_selection_changingawaits its answer cancels the question. - Removing or closing a page releases its handle (
IsValid()returnsfalse) and its shortcut: a page reopened under the same key starts afresh, without the colours or tooltip of the old one. - A tab removed while being dragged cancels the drag; changing
is_positionrecomputes the overflowed tabs; after Delete, the focus moves to the newly active tab. - A disabled tab is readable in every theme (text in the theme's disabled colour, including when it is active); when closable, it shows neither a close button nor an empty gap.
- Your tab tooltip takes precedence over the full name shown for a truncated title.
- In right-to-left reading, native menus hang from the right edge of their title and cascades open to the left (
Leftopens,Rightcloses). - Rich text: a closing tag closes its own tag only (
[b]A[i]B[/b]CleavesCin italics only), a]escaped byof_escape_markupright after a tag no longer breaks the formatting around it, and[picture=…]accepts a data URI and a file name containing a comma. - Reading back
il_back_color_hoveroril_text_color_hoverof an item never coloured returns-1(the theme's colour), like the other item colours (it returned0, black). - Holding a shortcut key down no longer repeats the action;
Ctrl+-,Ctrl++,Ctrl+,andCtrl+.fire on any keyboard layout, AZERTY included. - Enter or Esc pressed in the component, when it does not use them, goes back to the window: the PowerBuilder
DefaultorCancelCommandButtonfires (the key was lost). - A disabled component (
ib_enabled = false) leaves the Tab order; enabled again (or afterof_reset), it takes its place back. - A language set by
PBT_SetLanguageapplies from the very next order given to the component: a text of an event raised by that order no longer comes in the old language. - With no language chosen by the application, the component announces English to screen readers (it announced French).
is_theme_style,is_theme_modeandil_theme_accentread back the style and mode shown and the component's own accent (-1when it has none); an unknown or badly written value is ignored instead of leaving the component without a theme, and an axis left empty follows the application's theme.- The application accent (
PBT_SetDefaultThemeAccent) survives a change of theme, is followed as long as the component has no accent of its own, and repaints everything derived from it (hover, pressed, selections); Windows high contrast is supported. - Typing a character with AltGr in a PowerBuilder field (the euro of a French keyboard, AltGr+E) no longer fires a
Ctrl+Altshortcut of that key.
Behavior changes #
ib_veto_selectionandib_veto_closedefault tofalse:ue_selection_changingandue_tab_closingare raised only when you switch them on. Once on,of_select_pageasks too and returns-4on a refusal.of_countreturns alongandof_keys_attakes alongrank.- Disabling the active tab leaves it active and its page usable: disabling the page is up to the application.
- Rich text: a markup image on a network share (
[picture=\\server\share\x.png]) is no longer shown: go throughof_icon(), which embeds it. - See the 3 → 4 migration guide, sections 11.1, 11.3 and 11.20.
3.0 — September 2026 #
New #
of_set_property,of_get_propertyandof_component_name: drive a property by its name (settings screen, saved configuration).
Fixed #
- The text of a hovered tab is readable in Office 2007 dark, and a hovered close button keeps its tab's colour (it turned to the accent's orange on the yellow band).
- A tab's colours read back through its handle (
il_back_color,il_text_color…) returned0(black), set or not: they now return the colour set, and-1for the theme's. - Rich text: a
[word]that is not a tag is shown as typed (report[final].pdf) instead of disappearing with the rest of the text.
Behavior changes #
- The positions of
of_insert_pageandof_move_pagecount from 1, like the one returned byue_tab_reordered(2 → 3 migration guide, section 10.1).
2.0 — September 2026 #
New #
is_shortcutand a tab's tooltips can be read back (they returned an empty string).of_count,of_keys_atandof_hastell which tabs the component contains.ue_script_error: a script error in the page reaches PowerBuilder with its message instead of being lost.
Behavior changes #
- A page's getter is
of_page(as_key)(instead ofof_item), and identifiers are namedas_key:ue_selection_changed(as_from_key, as_key),ue_selection_changing,ue_tab_closed,ue_tab_closing,ue_tab_reordered. - See the 1 → 2 migration guide, section 9.4 (Tab).
1.0 — August 2026 #
New #
- A page is a real PowerBuilder control (
of_add_page,of_insert_page): the component positions it, resizes it and shows it when its tab is selected;of_remove_pagegives it back to its window. - Tab strip at the top, bottom or vertical (
is_position), overflowed tabs gathered under a "···" button (is_overflow_mode). - Per tab: rich-text title, icon, greyed and hidden states, close button (
ib_closable) and a keyboard shortcut that activates it from anywhere in the window (is_shortcut). - Mouse reordering (
ib_reorderable,ue_tab_reordered), built-in "Close / Close others / to the right / all" context menu, layout to save and restore (of_get_layout,of_set_layout,ue_layout_changed). - Cancellable questions before a tab change (
ue_selection_changing) and before a close (ue_tab_closing).