PBToolboxAI AcheterBuyKaufenAcquistaComprarComprar

← Historique de tous les composants← History of every component← Versionsverlauf aller Komponenten← Cronologia di tutti i componenti← Historial de todos los componentes← Histórico de todos os componentes

L'historique des versions est publié en anglais.Version history is published in English.Der Versionsverlauf wird auf Englisch veröffentlicht.La cronologia delle versioni è pubblicata in inglese.El historial de versiones se publica en inglés.O histórico de versões é publicado em inglês.

Command palette — version history

n_pbt_commandpalette · Introduced in 2.0

A command palette: the user presses a shortcut, types three letters and reaches any action of the application without looking for it in the menus. A non-visual object that opens its own window over the application. Introduced in 2.0.

4.0 — October 2026 #

New #

  • of_insert_command(as_key, as_label, as_group, ai_index): a command at a chosen position (from 1; beyond the end = at the end).
  • of_anchor_under: the palette placed under a control, in screen pixels.
  • On the command handle (of_command): is_group, is_hint, is_keywords and is_icon.
  • The palette speaks the application's language (PBT_SetLanguage): placeholder, "Recently used" header, empty-list message; an is_placeholder you set is not translated.
  • Search ignores accents: preferences finds "Préférences".
  • Pressing the palette's chord while it is open closes it.
  • Tens of thousands of commands open and filter without a wait: only the visible lines are drawn.

Fixed #

  • A destroyed palette object (page or window closed) takes its chord with it and closes the palette it had opened; the chord used to stay armed and swallow the key in the window.
  • Shortcuts shown on a line work on a non-Latin keyboard, with a digit and Shift, with Ctrl+Space, Ctrl+Up, Ctrl+Del, or with a single F key; the Windows key is never a modifier; an AZERTY keyboard reads Ctrl+A correctly; a character typed with AltGr (€) never triggers a command.
  • While typing in the search box, Ctrl+C, Ctrl+V, Ctrl+Z and Ctrl+A keep their editing role instead of launching a command bearing that shortcut.
  • A group declared in several times (File, Edit, then File again) shows a single header, where it first appeared, keeping the order of its commands.
  • With POSITION_ABSOLUTE, il_x / il_y hold even when a command's text contains "x" or "y", and the palette goes to the screen of the requested point on a multi-monitor setup.
  • A window's own chord takes precedence over an application-wide chord (no ipo_owner) on the same key.
  • At 150 % display scaling, a click inside the palette no longer closes it as if it were outside.
  • A disabled command is readable in every theme, and the active line stays visible when it is disabled; Tab no longer leaves the search box.
  • Near the bottom of the screen, a palette whose height is cut shows a scrollbar.
  • Opening the palette twice in a row no longer leaves an orphan window behind.
  • When the palette closes, the focus goes back to the element that had it (the code editor's caret no longer vanished).
  • A runtime error in one of your palette events reaches the application's SystemError like any script error, and the following events are still delivered (it used to be swallowed silently).
  • With no language chosen by the application, the component announces English to screen readers (it announced French).
  • 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.
  • Two palettes on the same ipo_owner no longer share their events (one could receive the other's ue_closed), and each keeps its own chord.
  • Typing a character with AltGr in a PowerBuilder field (the euro of a French keyboard, AltGr+E) no longer fires a Ctrl+Alt shortcut of that key.

Behavior changes #

  • ue_closed becomes ue_closed(string as_reason) and follows every of_open that returned 0: "", cancelled, failed or blocked — even when the palette died before appearing.
  • Only one palette is on screen at a time; each object now answers only for its palette and its chord: of_is_open, of_close and of_reset no longer report or close another object's palette, and destroying an object no longer removes the chord another object took over.
  • of_add_command returns -5 for a key already taken (it used to create twin commands) or containing /, | or a comma; of_remove_command returns -5 for an unknown key.
  • of_open and of_register_shortcut return -5 without ipo_owner or ipo_receiver (no event could ever arrive); of_register_shortcut returns -5 for a key the library cannot hear (the previous chord is kept) and 2 when is_shortcut is empty and no chord was set; of_open without the WebView2 runtime returns -6.
  • of_reset also empties is_recent, closes an open palette and brings the chord back to SHORTCUT_DEFAULT.
  • pbm_custom02 of the ipo_owner window is no longer triggered; only an explicitly set ipo_receiver still receives it. inv_pump is no longer public; of_count returns a long.
  • Details and how to adapt: Migrating from 3.0 to 4.0, sections 11.3 and 11.36.
  • of_open and of_register_shortcut no longer return -5 when neither ipo_owner nor ipo_receiver is set: the events always arrive. The same chord registered by a second palette of the same window goes to it (migration page, section 11.46).
  • of_count returns a long and of_keys_at takes a long rank.

3.0 — September 2026 #

New #

  • Events arrive on their own: the palette delivers ue_shortcut, ue_opened, ue_command_selected and ue_closed by itself — setting ipo_owner is enough, with no receiver object, no pbm_custom02 and no call to of_process_events. ipo_receiver becomes optional.

Fixed #

  • The active line is readable in the Office 2007 themes, light and dark.

2.0 — September 2026 #

New #

  • A palette window over the application, opened by a chord heard from anywhere in the window (is_shortcut, Ctrl+K by default, constants SHORTCUT_DEFAULT / SHORTCUT_NONE, of_register_shortcut); ue_shortcut lets the application decide, and the chord toggles the palette.
  • Commands with a label, a group, a hint, a displayed shortcut and search keywords (of_add_command); multi-word search over label, group and keywords.
  • Usage memory: recently launched commands come first (is_recent, il_max_recent).
  • Placement: centered on the window, on the screen, or at a given point (POSITION_*, il_x, il_y); a click elsewhere closes the palette and still reaches its target.
  • Command handles (of_command) to rename, change the shortcut, disable or hide a command; of_remove_command, of_clear_commands, of_count, of_keys_at, of_has.
  • ue_command_selected(as_key), ue_opened, ue_closed: the palette reports the chosen key and the application acts.