PBToolboxAI v4 ← Site

10. Migrar de la 2.0 a la 3.0 #

← Migrar de la 1.0 a la 2.0 · Índice · Migrar de la 3.0 a la 4.0 →


La 3.0 no retira ninguna firma de los veintiún componentes de la 2.0 ni cambia ninguna: su código compila tal cual. Lo que cambia son algunos comportamientos, y solo uno pide releer su código — las posiciones, que ahora cuentan desde 1, como todo lo que cuenta PowerBuilder. Esta página da primero ese cambio, con la receta, luego los demás comportamientos que un cliente puede notar y, por último, lo que se ha añadido.

10.1 Las posiciones cuentan desde 1 #

En la 2.0, una posición pasada a un método (of_move_page(key, ai_index)…) empezaba en 0, mientras que la posición devuelta por un evento de reordenación (ue_tab_reordered(key, ai_index)…) empezaba en 1: un índice recibido no podía devolverse tal cual. En la 3.0 todo empieza en 1 — 1 es el primer lugar. Los eventos no han cambiado; son los métodos y las propiedades los que se han alineado con ellos.

Qué2.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 = último1, 0 o menos = último
ribbonof_insert_tab : 01

Los eventos ue_tab_reordered, ue_item_reordered y ue_bar_reordered ya devolvían una posición desde 1: no cambian. En una inserción de la statusbar o de la stepbar, una posición de 0 o menos añade al final (como un índice negativo en la 2.0); en un desplazamiento, vale el primer lugar.

Antes / despué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 receta #

Busque en su código of_insert_, of_move_, of_add_bar(, .ii_band y .ii_index: sume 1 a cada posición que escriba como literal. Una posición que viene de un evento de reordenación o de un bucle for li = 1 to … ya es correcta — de eso se trata el cambio. Una posición calculada desde 0 (li - 1) pierde su - 1.

10.2 Las entradas en cascada devuelven su dirección completa #

Una entrada colocada en un submenú se nombra ahora por toda su dirección, la que dio para añadirla. En la 2.0 el evento perdía el nivel del submenú, y dos submenús con una entrada del mismo nombre se confundían.

Qué2.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 elegido)"print/pdf"
radialmenu of_item("csv"), of_add_item("import/csv/x")el primer csv encontradodecide la dirección

Una entrada de primer nivel tiene un solo nivel y no cambia. Y of_add_menu_item de la toolbar acepta por fin la dirección de cuatro niveles ("bar/dropdown/entry/sub") que mostraba la documentación: se rechazaba con -5.

10.3 Otros comportamientos que puede notar #

Qué2.03.0
Texto enriquecido ([b], [accent]…)una [palabra] desconocida desaparecía con el texto siguiente: report[final].pdf → report.pdfse muestra tal cual; solo se interpretan las etiquetas reales
ue_panel_rclicked(al_x, al_y) de la statusbarpíxeles dentro del componentepíxeles de pantalla, como se prometía: páselos tal cual a un menú contextual
Releer un color (il_text_color, il_accent…)devolvía 0 (negro), puesto o noel color puesto; -1 cuando no hay (el del tema). Un color de insignia no puesto sigue devolviendo 0
ii_doc_line del code editor, releídoel índice interno (línea − 1, -1 = ninguna)la línea puesta; 0 = ninguna
ue_error de picture y shell explorernunca se lanzaba (lo interceptaba la base)se lanza; los errores de script siguen en ue_script_error

El componente button se sigue entregando y soportando, pero queda obsoleto en favor de buttonbar: una fila de botones cabe en un solo componente, donde diez button hacen diez.

10.4 Lo que se ha añadido #

Nada de lo siguiente pide modificar su código. Los nuevos componentes de la 3.0 se presentan en las notas de la versión.

ObjetoAñadido
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 entregaba como herramienta interna sin documentar, pasa a ser el componente json de la 3.0 y cambia de nombres: 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; todos devuelven ahora un long. Si su código lo usaba, son los únicos nombres que cambian.


← Migrar de la 1.0 a la 2.0 · Índice · Migrar de la 3.0 a la 4.0 →