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.0 | 3.0 |
|---|---|---|
| tab | of_insert_page, of_move_page : 0 | 1 |
| listbar | of_insert_section, of_move_section, of_insert_item, of_move_item : 0 | 1 |
| toolbar | of_add_bar(key, band, index), of_move_item, of_insert_button, ii_band, ii_index : 0 | 1 |
| statusbar | of_insert_panel, of_move_panel, of_insert_menu_item, of_move_menu_item : 0 | 1 |
| stepbar | of_insert_step, of_move_step : 0 | 1 |
| tilesbox | of_insert_tile, of_move_tile, event ue_tile_moved : 0 | 1 |
| dockcontainer | of_move_panel(key, target, position, index): 0, -1 = último | 1, 0 ou menos = último |
| ribbon | of_insert_tab : 0 | 1 |
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.0 | 3.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 encontrado | decide 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.0 | 3.0 |
|---|---|---|
Texto rico ([b], [accent]…) | uma [palavra] desconhecida desaparecia com o texto seguinte: report[final].pdf → report.pdf | mostrada tal como está; só as etiquetas reais são interpretadas |
ue_panel_rclicked(al_x, al_y) da statusbar | píxeis dentro do componente | pí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ão | a 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, relido | o índice interno (linha − 1, -1 = nenhuma) | a linha definida; 0 = nenhuma |
ue_error de picture e shell explorer | nunca 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.
| Objeto | Acrescentado |
|---|---|
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_messagebox | of_add_choice (string as_key, string as_title, string as_description) → long, of_choose (long al_hwnd) → string |
n_pbt_utils | of_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 →