PBToolboxAI v4 ← Site

10. Migrer de la 2.0 à la 3.0 #

← Migrer de la 1.0 à la 2.0 · Sommaire · Migrer de la 3.0 à la 4.0 →


La 3.0 ne retire aucune signature des vingt et un composants de la 2.0 et n'en change aucune : votre code compile tel quel. Ce qui change, ce sont quelques comportements, et un seul demande de relire votre code — les positions, qui comptent désormais à partir de 1, comme tout ce que PowerBuilder compte. Cette page donne ce changement d'abord, avec la recette, puis les autres comportements qu'un client peut voir, puis ce qui a été ajouté.

10.1 Les positions comptent à partir de 1 #

En 2.0, une position passée à une méthode (of_move_page(key, ai_index)…) commençait à 0, alors que la position rendue par un event de réordonnancement (ue_tab_reordered(key, ai_index)…) commençait à 1 : un index reçu ne pouvait pas être redonné tel quel. En 3.0, tout commence à 1 — 1 est la première place. Les events n'ont pas changé ; ce sont les méthodes et les propriétés qui les ont rejoints.

Quoi2.03.0
tabof_insert_page, of_move_page : 01
listbarof_insert_section, of_move_section, of_insert_item, of_move_item : 01
toolbarof_add_bar(key, band, index), of_move_item, of_insert_button, ii_band, ii_index : 01
statusbarof_insert_panel, of_move_panel, of_insert_menu_item, of_move_menu_item : 01
stepbarof_insert_step, of_move_step : 01
tilesboxof_insert_tile, of_move_tile, event ue_tile_moved : 01
dockcontainerof_move_panel(key, target, position, index) : 0, -1 = dernier1, 0 ou moins = dernier
ribbonof_insert_tab : 01

Les events ue_tab_reordered, ue_item_reordered et ue_bar_reordered rendaient déjà une position à partir de 1 : ils sont inchangés. Pour une insertion de la statusbar ou de la stepbar, une position de 0 ou moins ajoute à la fin (comme un index négatif en 2.0) ; pour un déplacement, elle vaut la première place.

Avant / après #

// 2.0 : the first place was 0
uo_tabs.of_move_page(/*key*/ "orders", /*index*/ 0)
uo_toolbar.of_add_bar(/*key*/ "format", /*band*/ 1, /*index*/ 0)
uo_toolbar.of_bar(/*key*/ "format").ii_band = 0

// 3.0 : the first place is 1
uo_tabs.of_move_page(/*key*/ "orders", /*index*/ 1)
uo_toolbar.of_add_bar(/*key*/ "format", /*band*/ 2, /*index*/ 1)
uo_toolbar.of_bar(/*key*/ "format").ii_band = 1

La recette #

Cherchez dans votre code of_insert_, of_move_, of_add_bar(, .ii_band et .ii_index : ajoutez 1 à chaque position que vous écrivez en littéral. Une position qui vient d'un event de réordonnancement ou d'une boucle for li = 1 to … est déjà juste — c'est tout l'intérêt du changement. Une position calculée à partir de 0 (li - 1) perd son - 1.

10.2 Les entrées en cascade rendent leur adresse complète #

Une entrée placée dans un sous-menu est désormais nommée par toute son adresse, celle que vous avez donnée pour l'ajouter. En 2.0, l'event perdait le niveau du sous-menu, et deux sous-menus qui portaient une entrée de même nom se confondaient.

Quoi2.03.0
toolbar ue_menu_selected"file/saveas/png8""file/saveas/fmt_other/png8"
ribbon ue_menu_selected"home/clip/paste/pdf""home/clip/paste/more/pdf"
ribbon ue_app_menu_selected"pdf""export/pdf"
menubar ue_item_selected"export/pdf" (print/pdf choisi)"print/pdf"
radialmenu of_item("csv"), of_add_item("import/csv/x")le premier csv trouvél'adresse décide

Une entrée de premier niveau d'un menu n'a qu'un niveau et ne change pas. Et of_add_menu_item de la toolbar accepte enfin l'adresse à quatre niveaux ("bar/dropdown/entry/sub") que la documentation montrait : elle était refusée par -5.

10.3 Autres comportements que vous pouvez voir #

Quoi2.03.0
Texte riche ([b], [accent]…)un [mot] inconnu disparaissait avec la suite du texte : report[final].pdf → report.pdfaffiché tel quel ; seules les vraies balises sont interprétées
ue_panel_rclicked(al_x, al_y) de la statusbarpixels dans le composantpixels écran, comme promis : à passer tels quels à un menu contextuel
Relire une couleur (il_text_color, il_accent…)rendait 0 (noir), posée ou nonla couleur posée ; -1 quand aucune (celle du thème). Une couleur de badge non posée rend toujours 0
ii_doc_line du code editor, relul'index interne (ligne − 1, -1 = aucune)la ligne posée ; 0 = aucune
ue_error de picture et shell explorerjamais levé (intercepté par le socle)levé ; les erreurs de script restent sur ue_script_error

Le composant button reste livré et supporté, mais il est déprécié au profit de buttonbar : une barre de boutons tient en un seul composant, là où dix button en font dix.

10.4 Ce qui a été ajouté #

Rien de ce qui suit ne demande de modifier votre code. Les nouveaux composants de la 3.0 sont présentés dans les notes de version.

ObjetAjouté
u_pbt_base (every visual component)of_set_property (string as_name, string as_value) → long, of_get_property (string as_name) → string, of_component_name () → string
n_pbt_messageboxof_add_choice (string as_key, string as_title, string as_description) → long, of_choose (long al_hwnd) → string
n_pbt_utilsof_dir_has_subfolders (string as_dir) → boolean, of_speech_languages (ref string as_tags[]) → integer, of_speech_voices (ref string as_names[], ref string as_langs[]) → integer, of_locale_name (string as_tag) → string

n_pbt_json, que la 2.0 livrait comme outil interne sans le documenter, devient le composant json de la 3.0 et change de noms : of_str → of_add_string, of_bool → of_add_boolean, of_num → of_add_number, of_raw → of_add_raw, of_arr → of_set_array, of_members → of_set_members ; tous rendent désormais un long. Si votre code s'en servait, ce sont les seuls noms à changer.


← Migrer de la 1.0 à la 2.0 · Sommaire · Migrer de la 3.0 à la 4.0 →