13. Notes de version #
← Migrer de la 4.0 à la 5.0 · Sommaire · Assistant IA →
Une version acquise ne perd jamais ses composants : la 5.0 contient les trente-sept de la 1.0 à la 4.0, et une clé dont la maintenance couvre la date de votre build compile avec la DLL la plus récente — voir Licence.
5.0 — novembre 2026 #
Dix composants : saisie, données, graphiques, planification, menus et médias #
- Angular gauge — une jauge à cadran : aiguille, arc plein ou repère, plages colorées par leur ton, graduations, cible, valeur réglable à la souris et au clavier.
- Carousel — un carrousel façon iTunes : pochettes en relief (Cover Flow), bande plate ou pile, glissé avec inertie, au clavier, à la molette ou en défilement automatique ; chaque élément est une image, un texte riche ou une carte à gabarit, ajouté à la main ou lu depuis un DataStore.
- Context menu — un menu contextuel natif construit entrée par entrée, en cascade, avec icônes, coches et groupes radio, ouvert au curseur, sous un contrôle ou en un point de l'écran.
- Form — un formulaire de saisie dans un seul composant : sections repliables, douze types de champ (texte, nombre, interrupteur, liste, date, couleur, étiquettes, notation…), validation, masques, et lecture ou écriture d'une ligne de DataWindow.
- Gantt chart — un diagramme de Gantt : tâches et sommaires repliables, jalons, dépendances, chemin critique, échelles du jour au trimestre, glisser et redimensionner à la souris, rempli depuis un DataStore.
- Kanban board — un tableau kanban : cartes glissées d'une colonne à l'autre, limites d'encours, étiquettes, échéances et avatars, colonnes repliables, rempli depuis un DataStore et réécrit dans le DataWindow.
- Linear gauge — une jauge linéaire, horizontale ou verticale, de la même famille que la jauge à cadran : barre ou repère, plages colorées, graduations, cible, valeur réglable.
- Pie chart — un graphique en secteurs ou en anneau animé : parts qui glissent vers leurs nouvelles valeurs, étiquettes dedans ou dehors, texte au centre, légende cliquable, demi-cercle possible, petites parts rassemblées en « Autres », un DataStore lu en un appel.
- Property grid — une grille de propriétés façon Visual Studio : catégories, propriétés dépliables, un éditeur par type (nombre, booléen, liste, couleur, date…), recherche, tri alphabétique et volet d'aide.
- Tree view — un arbre, ou une liste en arbre dès qu'il a des colonnes : branches lues à la demande, cases à trois états, édition en place, glisser-déposer, recherche, tri par colonne, totaux de branche, rempli depuis un DataStore hiérarchique et réécrit dans le DataWindow, fluide avec des dizaines de milliers de nœuds.
Ce qui change #
- Ce qui se lit sans argument est une propriété : la sélection, une position, un état, la disposition, la dernière erreur se lisent comme toute propriété (
uo.is_selected_key,uo.ib_open,uo.is_last_error), en lecture seule quand ils ne s'écrivent pas ;is_layoutremplace la paireof_get_layout/of_set_layout. Les anciennes fonctions disparaissent : le compilateur montre chaque ligne à reprendre. - Un mot par rôle :
is_textest ce qu'un élément affiche,is_labelle nom d'une donnée,is_valuece que l'utilisateur saisit — les entrées de menu du ruban et de la barre d'état et les commandes de la palette passent deis_labelàis_text. La barre de progression prend les mots des jauges (ib_show_value,il_value_color,is_format,is_unit), et le graphique cartésien comme le tableau croisé écrivent leurs nombres paris_format, un format d'affichage PowerBuilder, au lieu d'of_set_value_format. - Des événements disent davantage : tout clic droit d'item reçoit le point d'écran où ouvrir un menu (
al_x,al_y: barre latérale, onglets, barre d'outils, fil d'Ariane ;ue_tile_contextdu panneau de tuiles devientue_tile_rclicked), et quelques événements reçoivent un argument de plus — le calendrier, le lecteur de sons, le toaster, l'explorateur du shell, le texte riche, le visualiseur Markdown. La barre de boutons met le libellé avant l'icône dans ses ajouts. - Chaque verbe rend un code :
of_stop,of_closeetof_resetdes composants non visuels,of_go_back,of_go_forwardetof_stopdu navigateur web,of_stopdu lecteur vidéo rendent unlong; un appel écrit comme une instruction compile toujours. Le détail, composant par composant, et ce qu'il faut modifier : Migrer de la 4.0 à la 5.0.
Ailleurs dans la bibliothèque #
- Button n'est plus déprécié : c'est le composant d'un bouton seul, Button bar reste celui d'une rangée de boutons.
- Masques de saisie numériques dans la grille de données (
is_maskd'une colonne) et sur un compteur du ruban (is_mask,is_format) : le groupement apparaît au fil des chiffres, les décimales sont bornées, les lettres refusées, et la valeur reste le nombre nu. - Les menus natifs d'un composant qui a son propre accent le montrent sur l'entrée pointée.
- crypto : les blobs sans fichier (
of_base64_encode_blob,of_hash_blob,of_encrypt_blob…), la vérification d'un jeton par le jeu de clés d'Azure AD, de Google ou d'Auth0 (of_jwt_verify_jwks, JWK), les claims attendues et la tolérance des JWT, de nouveaux algorithmes (RS384/512, PS256/384/512, ES384, HS384/512), les signatures PSS, les données associées d'AES-GCM, les réglages TOTP et HOTP,of_password_needs_rehash. - webbrowser : la liste des sites qu'il peut montrer (
is_allowed_hosts), un certificat d'intranet accepté par votre application (ue_certificate_error), des messages échangés avec la page (ue_web_message,of_post_message), le zoom (ii_zoom),ue_load_startedetib_loading. - Les données et les menus de PowerBuilder : un DataStore, un DataWindow ou un DataWindowChild nourrit aussi le graphique cartésien, la barre latérale, le JSON (
of_from_datastore, etof_to_datastoredans l'autre sens) et le client REST (of_retrieve) ; la barre de menus et la palette de commandes se remplissent depuis le menu PowerBuilder d'une fenêtre (of_load_menu) ; le visualiseur PDF et l'image affichent un blob sans fichier. is_accessible_nameetis_accessible_descriptionsur tous les composants visuels, pour les lecteurs d'écran ; l'éditeur de code gagne un historique d'annulation que votre code pilote (of_undo,of_redo,ue_undo_state_changed) et Ctrl+/ ; le fil d'Ariane devient une barre d'adresse avec complétion. La liste complète, composant par composant, est au 12.6 de Migrer de la 4.0 à la 5.0 et dans l'historique de chaque composant.
Corrigé #
- Anneau de focus après une boîte de dialogue : un bouton (ou tout composant) cliqué à la souris qui retrouvait le focus à la fermeture d'une boîte de dialogue affichait l'anneau de focus du clavier. Comme Windows, le composant garde désormais le mode où il était : pas d'anneau après un clic, l'anneau après la touche Tab.
- Contrôle hébergé dans un onglet ou un panneau : un contrôle placé dans une page de Tab ou un panneau de Dock container qui écrivait une propriété d'un composant dans son
pbm_sizebloquait l'application 5 secondes par propriété, et les clics faits pendant ce temps étaient perdus. La propriété s'applique désormais tout de suite. - Mémoire : chaque création puis destruction d'un composant laissait en mémoire une partie des fichiers chargés par sa page (environ 0,5 à 1 Mo selon le composant, depuis la 3.0). Une application qui ouvre et ferme souvent des fenêtres à composants voyait sa mémoire grandir sans retour, jusqu'à l'arrêt d'une application 32 bits. La mémoire est désormais rendue à la destruction du composant ; rien n'est à modifier dans votre code.
- Menus : après un moment où l'application était occupée, un menu (contextuel, déroulant, d'un ruban, d'une barre de menus) pouvait ne plus se fermer sur un clic ailleurs. Il se ferme désormais toujours ; rien n'est à modifier dans votre code.
- commandpalette : une palette fermée par Alt+F4 se disait encore ouverte, et l'appui suivant sur son raccourci ne la rouvrait pas. Elle se ferme désormais comme par Échap.
- La raison d'un échec (
is_last_error, l'ancienof_get_last_error()) est celle de ce composant : elle était souvent le dernier message laissé dans la DLL par un autre. - crypto :
of_encrypt_fileetof_decrypt_filetraitent les fichiers de plus de 1 Mo (le chiffrement rendait-4, le déchiffrement pouvait arrêter une application 32 bits). - REST client : une requête synchrone ne fige plus la fenêtre, même pendant un long téléchargement.
- Construire gros va vite : un ruban ou un panneau de tuiles rempli un élément après l'autre se dessine une fois (un ruban de 200 contrôles prenait 13 à 14 s), et l'éditeur de code reste fluide au-delà de 2 000 lignes.
- Grille de données : une cellule de notation se lit par un lecteur d'écran comme son nombre d'étoiles sur cinq (
4 / 5) ; ouvrir puis fermer l'éditeur d'une cellule numérique sans rien taper ne change plus une valeur que le format arrondit.
4.0 — octobre 2026 #
Cinq composants : données, graphiques, documents et son #
- Cartesian chart — un graphique cartésien animé : colonnes, barres, lignes, aires, nuages de points, bulles, cartes de chaleur, chandeliers. Le type se choisit par série : un graphique combiné (colonnes et ligne d'objectif sur deux axes) tient dans un seul composant.
- Data grid — une grille moderne posée sur un DataStore : colonnes typées et cellules riches, tri, filtres, regroupements et sous-totaux, édition en place, très gros volumes, export CSV et Excel. Elle lit ce que le DataWindow dit de chaque colonne (titre, format, liste de codes), et le DataWindow reste le maître de vos données.
- Markdown view — un document Markdown en lecture, aux couleurs du thème : titres, listes, tableaux, cases à cocher, code coloré, images — depuis un texte ou un fichier du poste.
- Scheduler — un calendrier façon Outlook : vues jour, semaine de travail, semaine, mois et agenda, glisser-déposer, ressources côte à côte, catégories de couleur, cartes et info-bulles écrites par gabarits — rempli rendez-vous par rendez-vous ou depuis un DataStore.
- Sound player — un objet non visuel qui joue un fichier du poste, une adresse
httpsou un bip synthétisé, de façon asynchrone (événements) ou synchrone (l'appel rend la main quand le son se termine).
Ce qui change #
- Un changement demandé par votre code (
of_select_*,of_expand,of_open…) lève le même événement qu'un geste de l'utilisateur, commeSelectTabdans PowerBuilder ; les questions posées avant un changement sont facultatives et s'activent par une propriétéib_veto_*. - Deux méthodes partent :
of_set_datadu tableau croisé devientof_from_datastore, etof_transformde XML disparaît avec XSLT, que le moteur du navigateur retire. Quelques noms et comptes s'alignent sur le reste de la bibliothèque. Le détail, et ce qu'il faut modifier : Migrer de la 3.0 à la 4.0. - Les thèmes suivent l'application : l'accent qu'elle pose survit à un changement de thème, et un axe de thème laissé vide suit le sien.
Ailleurs dans la bibliothèque #
- Le clavier de la fenêtre : Entrée presse le bouton par défaut le plus proche du focus, les raccourcis d'un composant répondent depuis toute la fenêtre, une lettre soulignée (
&Enregistrer) aussi, et F10 ouvre la barre de menus. - Tous les menus déroulants cherchent par la frappe et restent fluides avec des milliers d'entrées.
- Texte riche : la balise
[symbol=nom]ajoute dix-huit glyphes monochromes (horloge, lieu, personne, calendrier…) qui suivent la couleur du texte. - Des ajouts dans la plupart des composants livrés — onglets au clavier (Ctrl+Tab, clic du milieu), panneaux détachés au double-clic, chevron de débordement de la barre de menus, liste déroulante dans la barre d'outils, journal ligne à ligne du statictext, taille réelle d'une image, lecture d'une cellule du tableau croisé… La liste complète, composant par composant, est dans Migrer de la 3.0 à la 4.0 et dans l'historique de chaque composant.
- Un assistant IA (Claude, Cursor, VS Code…) peut consulter l'API exacte de votre version et vérifier le code qu'il propose, grâce au serveur MCP de la documentation livré avec la démonstration.
Corrigé #
- Une propriété décimale (
double) se relisait au séparateur du poste : sur un Windows français,1.5revenait faux. - Le clic droit sur un item ne produit plus qu'un seul événement, dans tous les composants.
- Tuiles :
of_get_layoutrendait une disposition vide.
3.0 — septembre 2026 #
Onze composants : données, utilitaires et médias #
- Breadcrumb — le fil d'Ariane : où l'on est, et retour à n'importe quel niveau en un clic. Branches ouvertes à la demande, saisie directe du chemin, fichiers déposés sur un segment.
- Button bar — une rangée de boutons de commande — icône, libellé ou les deux — dans un seul composant ; un clic rend la clé du bouton.
- Crosstab — le tableau croisé dynamique d'un DataStore : lignes, colonnes, valeurs agrégées, filtres, sous-totaux, champs et mesures calculés, export CSV et Excel.
- Crypto — empreintes, HMAC, chiffrement par mot de passe ou par clé, signatures RSA, ECDSA et Ed25519, JWT, mots de passe salés, TOTP à deux facteurs et DPAPI — sans rien installer.
- JSON — construire un document JSON type par type, le lire le long d'un chemin et le modifier sur place, en PowerScript pur.
- JSON tree — un document JSON affiché comme dans un éditeur de code : numéros de ligne, coloration par type, repli de chaque bloc, recherche.
- REST client — un client HTTPS natif et asynchrone : GET, POST, en-têtes, JSON, multipart, cookies, nouvelles tentatives, téléchargement de fichiers — sans le mur CORS d'un navigateur.
- Speech out — la lecture à voix haute avec les voix installées sur le poste : phrase et mot en cours, file d'attente, dictionnaire de prononciation, lecture synchrone.
- Video player — un lecteur vidéo avec sa propre barre au thème : sous-titres, plein écran, chapitres, marqueurs, liste de lecture, capture d'image.
- XML — construire un document XML élément par élément et le lire avec un vrai XPath : espaces de noms, modification, transformation XSLT.
- XML tree — un document XML affiché comme dans un éditeur de code : balises, attributs et texte colorés, repli de chaque élément, recherche.
Ce qui change #
- Toute position donnée à une méthode compte à partir de 1, comme celles que rendent déjà les events de réordonnancement ; une entrée en cascade rend son adresse complète. Le détail, et ce qu'il faut modifier : Migrer de la 2.0 à la 3.0.
- Button reste livré et supporté, mais il est déprécié au profit de Button bar : une barre de boutons tient en un seul composant.
Ailleurs dans la bibliothèque #
of_set_property,of_get_propertyetof_component_name: piloter une propriété par son nom, pour un écran de réglages ou une configuration enregistrée.- La boîte de message propose une liste de choix (
of_add_choice,of_choose) en plus de ses boutons.
Corrigé #
- Une couleur relue (
il_text_color,il_accent…) rendait0, du noir, qu'elle soit posée ou non : elle rend la couleur posée, et-1quand c'est celle du thème. ue_errorde Picture et de Shell explorer n'était jamais levé.- Texte riche : un
[mot]inconnu faisait disparaître la suite du texte ; il s'affiche désormais tel quel. - Barre d'état :
ue_panel_rclickeddonne des coordonnées écran, à passer telles quelles à un menu contextuel.
2.0 — septembre 2026 #
Cinq composants, tous tournés vers la navigation #
- Menu bar — barre de menus d'application : menus, sous-menus, entrées cochables, séparateurs, icônes, raccourcis et mnémoniques
&Fichier, dessinée par la bibliothèque dans le thème de l'application. - Command palette — un raccourci, trois lettres, et n'importe quelle action de l'application est atteinte sans la chercher dans les menus. Recherche sur le libellé, le groupe et les mots-clés, en plusieurs mots.
- Radial menu — les commandes en couronne autour du curseur au clic droit, choisies par leur direction plutôt qu'en parcourant une liste.
- Shell explorer — l'arborescence du vrai shell Windows : Bureau, Ce PC, lecteurs, dossiers, Réseau, avec les icônes du poste. Un seul
of_expandouvre un chemin profond. - Stepbar — le fil d'étapes d'un assistant : les étapes franchies, celle en cours et celles à venir, en horizontal ou en vertical.
Une API remodelée sur les seize de la 1.0 #
Une clé, une adresse ; tout depuis le composant ; un ajout rend un code. Les trois règles, l'avant/après et chaque signature changée sont dans Migrer de la 1.0 à la 2.0. Ce qui l'a motivé : une poignée qui ajoutait ne pouvait pas dire qu'elle avait refusé, et trois arguments pour désigner un item obligeaient chaque composant à inventer sa propre façon de le faire.
Sur tous les composants #
of_count,of_keys_atetof_has, sur le composant et à chaque niveau : ce qu'un composant contient se demande, il n'y a plus à le retenir soi-même.- Toute méthode qui rend un
longdit ce que son retour signifie :0appliqué,-5argument invalide,-2composant non créé — dans la doc embarquée de la démo comme ici. - Les propriétés d'un item se relisent en direct : l'icône d'une entrée de listbar, le texte et l'icône d'une tuile, l'état d'un bouton de barre — un getter dit ce qui est à l'écran, jamais une valeur mémorisée.
ib_visiblesur chaque entrée de menu — barre de menus, menu contextuel, menu radial, menus du ruban : masquer n'est pas griser, l'entrée quitte le menu, raccourci compris, et garde sa clé pour revenir.- La barre d'état construit ses menus entrée par entrée (
of_add_menu_item ("panel/id", …)), avec une poignée d'entrée qui grise, coche et masque — à la place des deux tableaux parallèles deof_set_panel_menu. ue_script_error: une erreur de script dans la page remonte à PowerBuilder avec son message et sa pile, au lieu de se perdre.
Corrigé #
- Un item désactivé ou masqué ne répond plus à rien : ni clic, ni clavier — la listbar sélectionnait encore une entrée grisée sur Entrée.
- Le texte grisé se lit dans tous les thèmes (contraste 3:1 au moins), et le texte survolé aussi en mode sombre — deux boutons désactivés du ruban devenaient invisibles en Office 2007.
- Un chemin Windows lu depuis la page revenait avec ses antislashs doublés (
C:\\Windows) ; une valeur contenant un guillemet était coupée. - Dock container : le panneau épinglé à gauche perdait sa bordure droite au-dessus de 100 % d'échelle d'affichage.
- Ruban : l'icône d'un bouton désactivé n'était pas grisée en mode compact ; un titre de barre de menus s'allumait en même temps que le survolé.
- Éditeur de code : le texte relu après un repli était l'ancien, et déplier écrasait la frappe.
1.0 — août 2026 #
Première version : seize composants — button, code editor, dock container, listbar, message box, PDF viewer, picture, progress, ribbon, statictext, statusbar, tab, tiles box, toaster, toolbar, web browser — une seule DLL à déployer, x86 et x64 sous le même nom, aucune dépendance .NET, ActiveX ni PBNI. Thèmes Office, Fluent et Metro, clair et sombre ; six langues et RTL ; licence entièrement hors ligne ; PowerBuilder 10.2 à 2025.