10. Migrare dalla 2.0 alla 3.0 #
← Migrare dalla 1.0 alla 2.0 · Sommario · Migrare dalla 3.0 alla 4.0 →
La 3.0 non rimuove nessuna firma dei ventuno componenti della 2.0 e non ne cambia nessuna: il Suo codice compila così com'è. Cambiano alcuni comportamenti, e uno solo chiede di rileggere il codice — le posizioni, che ora contano da 1, come tutto ciò che PowerBuilder conta. Questa pagina espone prima questo cambiamento, con la ricetta, poi gli altri comportamenti che un cliente può notare, poi ciò che è stato aggiunto.
10.1 Le posizioni contano da 1 #
Nella 2.0 una posizione passata a un metodo (of_move_page(key, ai_index)…) partiva da 0, mentre la posizione restituita da un evento di riordino (ue_tab_reordered(key, ai_index)…) partiva da 1: un indice ricevuto non poteva essere ripassato così com'era. Nella 3.0 tutto parte da 1 — 1 è il primo posto. Gli eventi non sono cambiati; sono i metodi e le proprietà ad averli raggiunti.
| Cosa | 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 = ultimo | 1, 0 o meno = ultimo |
| ribbon | of_insert_tab : 0 | 1 |
Gli eventi ue_tab_reordered, ue_item_reordered e ue_bar_reordered restituivano già una posizione da 1: sono invariati. Per un inserimento nella statusbar o nella stepbar, una posizione di 0 o meno aggiunge in fondo (come un indice negativo nella 2.0); per uno spostamento vale il primo posto.
Prima / dopo #
// 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 ricetta #
Cerchi nel Suo codice of_insert_, of_move_, of_add_bar(, .ii_band e .ii_index: aggiunga 1 a ogni posizione scritta come letterale. Una posizione che viene da un evento di riordino o da un ciclo for li = 1 to … è già giusta — è tutto il senso del cambiamento. Una posizione calcolata da 0 (li - 1) perde il suo - 1.
10.2 Le voci a cascata restituiscono l'indirizzo completo #
Una voce posta in un sottomenu è ora nominata con tutto il suo indirizzo, quello dato per aggiungerla. Nella 2.0 l'evento perdeva il livello del sottomenu, e due sottomenu con una voce dello stesso nome si confondevano.
| Cosa | 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 scelto) | "print/pdf" |
radialmenu of_item("csv"), of_add_item("import/csv/x") | il primo csv trovato | decide l'indirizzo |
Una voce di primo livello ha un solo livello e non cambia. E of_add_menu_item della toolbar accetta finalmente l'indirizzo a quattro livelli ("bar/dropdown/entry/sub") che la documentazione mostrava: era rifiutato con -5.
10.3 Altri comportamenti che può notare #
| Cosa | 2.0 | 3.0 |
|---|---|---|
Testo ricco ([b], [accent]…) | una [parola] sconosciuta spariva con il testo seguente: report[final].pdf → report.pdf | mostrata così com'è; solo i veri tag sono interpretati |
ue_panel_rclicked(al_x, al_y) della statusbar | pixel dentro il componente | pixel dello schermo, come promesso: da passare così a un menu contestuale |
Rileggere un colore (il_text_color, il_accent…) | restituiva 0 (nero), impostato o no | il colore impostato; -1 quando nessuno (quello del tema). Un colore di badge non impostato restituisce sempre 0 |
ii_doc_line del code editor, riletto | l'indice interno (riga − 1, -1 = nessuna) | la riga impostata; 0 = nessuna |
ue_error di picture e shell explorer | mai sollevato (intercettato dalla base) | sollevato; gli errori di script restano su ue_script_error |
Il componente button resta fornito e supportato, ma è deprecato a favore di buttonbar: una fila di pulsanti sta in un solo componente, dove dieci button ne fanno dieci.
10.4 Ciò che è stato aggiunto #
Nulla di quanto segue chiede di modificare il codice. I nuovi componenti della 3.0 sono presentati nelle note di versione.
| Oggetto | Aggiunto |
|---|---|
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, che la 2.0 forniva come strumento interno non documentato, diventa il componente json della 3.0 e cambia nomi: 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; ora restituiscono tutti un long. Se il Suo codice lo usava, sono gli unici nomi da cambiare.
← Migrare dalla 1.0 alla 2.0 · Sommario · Migrare dalla 3.0 alla 4.0 →