PBToolboxAI v4 ← Site

10. Migrar da 2.0 para a 3.0 #

← Migrar da 1.0 para a 2.0 · Índice · Migrar da 3.0 para a 4.0 →


A 3.0 não retira nenhuma assinatura dos vinte e um componentes da 2.0 nem altera nenhuma: o seu código compila tal como está. O que muda são alguns comportamentos, e só um pede para reler o código — as posições, que passam a contar a partir de 1, como tudo o que o PowerBuilder conta. Esta página dá primeiro essa mudança, com a receita, depois os outros comportamentos que um cliente pode notar e, por fim, o que foi acrescentado.

10.1 As posições contam a partir de 1 #

Na 2.0, uma posição passada a um método (of_move_page(key, ai_index)…) começava em 0, enquanto a posição devolvida por um evento de reordenação (ue_tab_reordered(key, ai_index)…) começava em 1: um índice recebido não podia ser devolvido tal como estava. Na 3.0 tudo começa em 1 — 1 é o primeiro lugar. Os eventos não mudaram; foram os métodos e as propriedades que os acompanharam.

O 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 ou menos = último
ribbonof_insert_tab : 01

Os eventos ue_tab_reordered, ue_item_reordered e ue_bar_reordered já devolviam uma posição a partir de 1: não mudam. Numa inserção da statusbar ou da stepbar, uma posição de 0 ou menos acrescenta no fim (como um índice negativo na 2.0); num deslocamento, vale o primeiro lugar.

Antes / depois #

// 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

A receita #

Procure no seu código of_insert_, of_move_, of_add_bar(, .ii_band e .ii_index: some 1 a cada posição escrita como literal. Uma posição que vem de um evento de reordenação ou de um ciclo for li = 1 to … já está certa — é esse o objetivo da mudança. Uma posição calculada a partir de 0 (li - 1) perde o seu - 1.

10.2 As entradas em cascata devolvem o endereço completo #

Uma entrada colocada num submenu passa a ser nomeada por todo o seu endereço, o que indicou para a acrescentar. Na 2.0 o evento perdia o nível do submenu, e dois submenus com uma entrada do mesmo nome confundiam-se.

O 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 escolhido)"print/pdf"
radialmenu of_item("csv"), of_add_item("import/csv/x")o primeiro csv encontradodecide o endereço

Uma entrada de primeiro nível tem um só nível e não muda. E of_add_menu_item da toolbar aceita finalmente o endereço de quatro níveis ("bar/dropdown/entry/sub") que a documentação mostrava: era recusado com -5.

10.3 Outros comportamentos que pode notar #

O quê2.03.0
Texto rico ([b], [accent]…)uma [palavra] desconhecida desaparecia com o texto seguinte: report[final].pdf → report.pdfmostrada tal como está; só as etiquetas reais são interpretadas
ue_panel_rclicked(al_x, al_y) da statusbarpíxeis dentro do componentepíxeis de ecrã, como prometido: passe-os tal como estão a um menu de contexto
Reler uma cor (il_text_color, il_accent…)devolvia 0 (preto), definida ou nãoa cor definida; -1 quando nenhuma (a do tema). Uma cor de emblema não definida continua a devolver 0
ii_doc_line do code editor, relidoo índice interno (linha − 1, -1 = nenhuma)a linha definida; 0 = nenhuma
ue_error de picture e shell explorernunca era lançado (intercetado pela base)lançado; os erros de script continuam em ue_script_error

O componente button continua a ser fornecido e suportado, mas fica obsoleto em favor de buttonbar: uma fila de botões cabe num só componente, onde dez button fazem dez.

10.4 O que foi acrescentado #

Nada do que se segue pede para alterar o seu código. Os novos componentes da 3.0 são apresentados nas notas de versão.

ObjetoAcrescentado
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 a 2.0 fornecia como ferramenta interna não documentada, passa a ser o componente json da 3.0 e muda de nomes: 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 devolvem agora um long. Se o seu código o usava, são os únicos nomes a mudar.


← Migrar da 1.0 para a 2.0 · Índice · Migrar da 3.0 para a 4.0 →