PBToolboxAI v4 ← Site

10. Von 2.0 auf 3.0 migrieren #

← Von 1.0 auf 2.0 migrieren · Inhalt · Von 3.0 auf 4.0 migrieren →


3.0 entfernt keine Signatur der einundzwanzig Komponenten aus 2.0 und ändert keine: Ihr Code kompiliert unverändert. Was sich ändert, sind einige Verhaltensweisen, und nur eine davon verlangt, Ihren Code erneut zu lesen — die Positionen, die jetzt ab 1 zählen, wie alles, was PowerBuilder zählt. Diese Seite nennt zuerst diese Änderung mit dem Rezept, dann die übrigen Verhaltensweisen, die ein Kunde bemerken kann, dann die Ergänzungen.

10.1 Positionen zählen ab 1 #

In 2.0 begann eine an eine Methode übergebene Position (of_move_page(key, ai_index)…) bei 0, während die von einem Umordnungs-Event gelieferte Position (ue_tab_reordered(key, ai_index)…) bei 1 begann: ein empfangener Index ließ sich nicht unverändert zurückgeben. In 3.0 beginnt alles bei 1 — 1 ist der erste Platz. Die Events haben sich nicht geändert; die Methoden und Eigenschaften haben sich ihnen angeschlossen.

Was2.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 = letztes1, 0 oder weniger = letztes
ribbonof_insert_tab : 01

Die Events ue_tab_reordered, ue_item_reordered und ue_bar_reordered lieferten bereits eine Position ab 1: sie sind unverändert. Bei einem Einfügen in statusbar oder stepbar hängt eine Position von 0 oder weniger am Ende an (wie ein negativer Index in 2.0); bei einem Verschieben bedeutet sie den ersten Platz.

Vorher / nachher #

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

Das Rezept #

Suchen Sie in Ihrem Code nach of_insert_, of_move_, of_add_bar(, .ii_band und .ii_index: addieren Sie 1 zu jeder Position, die Sie als Literal schreiben. Eine Position aus einem Umordnungs-Event oder aus einer Schleife for li = 1 to … ist bereits richtig — genau darum geht es bei der Änderung. Eine ab 0 berechnete Position (li - 1) verliert ihr - 1.

10.2 Kaskadierte Einträge liefern ihre vollständige Adresse #

Ein Eintrag in einem Untermenü wird jetzt mit seiner vollständigen Adresse benannt, derjenigen, die Sie beim Hinzufügen angegeben haben. In 2.0 verlor das Event die Ebene des Untermenüs, und zwei Untermenüs mit einem gleichnamigen Eintrag wurden verwechselt.

Was2.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 gewählt)"print/pdf"
radialmenu of_item("csv"), of_add_item("import/csv/x")das erste gefundene csvdie Adresse entscheidet

Ein Menüeintrag der ersten Ebene hat nur eine Ebene und ändert sich nicht. Und of_add_menu_item der toolbar akzeptiert endlich die Adresse mit vier Ebenen ("bar/dropdown/entry/sub"), die die Dokumentation zeigte: sie wurde mit -5 abgelehnt.

10.3 Weitere Verhaltensweisen, die Sie bemerken können #

Was2.03.0
Rich Text ([b], [accent]…)ein unbekanntes [wort] verschwand samt folgendem Text: report[final].pdf → report.pdfunverändert angezeigt; nur echte Tags werden interpretiert
ue_panel_rclicked(al_x, al_y) der statusbarPixel innerhalb der KomponenteBildschirm-Pixel, wie versprochen: direkt an ein Kontextmenü übergeben
Eine Farbe zurücklesen (il_text_color, il_accent…)lieferte 0 (Schwarz), gesetzt oder nichtdie gesetzte Farbe; -1, wenn keine (die des Designs). Eine nicht gesetzte Badge-Farbe liefert weiterhin 0
ii_doc_line des code editor, zurückgelesender interne Index (Zeile − 1, -1 = keine)die gesetzte Zeile; 0 = keine
ue_error von picture und shell explorernie ausgelöst (von der Basis abgefangen)ausgelöst; Skriptfehler bleiben bei ue_script_error

Die Komponente button wird weiterhin ausgeliefert und unterstützt, ist aber zugunsten von buttonbar veraltet: eine Schaltflächenleiste passt in eine einzige Komponente, wo zehn button zehn ergeben.

10.4 Was hinzugekommen ist #

Nichts davon verlangt eine Änderung Ihres Codes. Die neuen Komponenten der 3.0 werden in den Versionshinweisen vorgestellt.

ObjektHinzugefügt
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, das 2.0 als undokumentiertes internes Werkzeug auslieferte, wird zur Komponente json der 3.0 und ändert seine Namen: 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; alle liefern jetzt einen long. Falls Ihr Code es verwendete, sind dies die einzigen zu ändernden Namen.


← Von 1.0 auf 2.0 migrieren · Inhalt · Von 3.0 auf 4.0 migrieren →