PBToolboxAI v1 ← Site

7. FAQ und Fehlerbehebung #

← Übergreifende Funktionen · Inhalt · Lizenz →


Installation und Start #

Die Komponente bleibt grau oder leer #

UrsacheWoran Sie es erkennenLösung
WebView2-Runtime fehltDas Event ue_runtime_missing wird ausgelöst, of_is_created() liefert falseDie Runtime installieren — siehe Installation
DLL nicht gefundenPowerBuilder-Fehler einer External Function schon beim ersten Aufrufpbtoolboxai.dll (Exemplar x86 oder x64) neben die ausführbare Datei legen — und neben pbXXX.exe für die Ausführung aus der IDE
Falsche ArchitekturDerselbe Fehler, aber nur unter 32 Bit oder nur unter 64 BitDie DLL muss zur Bitness von PowerBuilder passen
UI-Thread blockiertDie Komponente zeichnet sich, sobald Ihre Verarbeitung endetSiehe unten

„UI-Thread blockiert“: die häufigste Falle #

Die Initialisierung der Webview ist asynchron: Sie benötigt eine laufende Windows-Nachrichtenschleife. Eine lange PowerScript-Schleife im open des Fensters, die die Steuerung nicht zurückgibt, hindert die Komponente daran, ihr Laden abzuschließen.

// ZU VERMEIDEN : die Komponente bleibt waehrend der gesamten Verarbeitung grau
uo_grid.of_add_column("nom", "Name", 200)
of_charger_50000_lignes()      // 8 Sekunden ohne die Steuerung zurueckzugeben

// BESSER : das Fenster anzeigen lassen und ERST DANN laden
this.PostEvent("ue_charger")

Die Komponente verliert ihr Design / wird nach einer Weile wieder hell #

Sie haben höchstwahrscheinlich eine Instanz wiederverwendet, ohne sie zurückzusetzen, oder ein lokales Design gesetzt, das nie aufgehoben wurde. Rufen Sie of_reset() auf, bevor Sie einen anderen Inhalt anzeigen, und setzen Sie das Design global über PBT_SetDefaultTheme statt Komponente für Komponente (Designs).


Verhalten zur Laufzeit #

Meine im constructor gesetzten Eigenschaften scheinen ignoriert zu werden #

Das sind sie nicht: Befehle, die vor ue_ready abgesetzt werden, werden in eine Warteschlange gestellt und der Reihe nach nachgeholt. Wenn die Anzeige nicht passt, überschreibt fast immer ein späterer Befehl den ersten — oder die Komponente wurde zwischen zwei Verwendungen nie zurückgesetzt.

Ein „Rest“ der vorherigen Anzeige bleibt bestehen #

Ursache Nummer eins für visuelle Auffälligkeiten: of_reset() wurde nicht aufgerufen. Wird eine Instanz wiederverwendet, um etwas anderes anzuzeigen, bleibt alles bisher Gesetzte erhalten (Farben, Modus, automatische Höhe, Items). Prüfen Sie, ob of_reset() tatsächlich aufgerufen wird, bevor Sie es für fehlerhaft halten.

Das Zurücklesen einer Eigenschaft gibt nicht wieder, was der Benutzer tut #

Prüfen Sie zuerst, ob ein Event diese Änderung meldet: Wenn es eines gibt, frischt es die Eigenschaft gleich mit auf, und das Zurücklesen liefert den tatsächlichen Zustand (is_address folgt dem Link, den der Benutzer anklickt, is_text seiner Eingabe). Andernfalls liefert das Lesen den letzten aus PowerBuilder gesetzten Wert (PB-Cache) — dann bleibt das Event, mit dem Wert als Parameter, der einzige Kanal (Gemeinsame Basis).

Ein Event wird nie ausgelöst #

Ein Menü oder ein Tooltip bleibt sichtbar #

Menüs und Tooltips sind echte Systemfenster: Sie schließen sich beim Klick daneben, mit Esc und beim Verlust des Vordergrunds, und ein Tooltip verschwindet spätestens nach 10 Sekunden. Ein verbleibender Fall: die Komponente zerstören, während eines ihrer Menüs offen ist — schließen Sie es zuerst.

Es erscheint überhaupt kein Tooltip #

Das ist Absicht: Tooltips werden nicht ausgelöst, wenn Ihre Anwendung nicht den Fokus hat. Klicken Sie zuerst in das Fenster.


Bilder und Symbole #

Ein Bild wird nicht angezeigt #

Ein Symbol mono: erscheint leer oder verzerrt #

Ein Symbol mono: ist eine Maske: Es hat keine natürliche Größe. Wenn die Komponente es nicht dimensioniert (ein seltener Fall außerhalb der Standardkomponenten), geben Sie ihm ausdrücklich eine Größe — zum Beispiel [picture=mono:img\ok.svg,16,16] im Rich-Text.

Ich habe ein Bild auf der Festplatte ersetzt, es wird weiterhin das alte angezeigt #

Bilder werden 5 Minuten lang zwischengespeichert, um Flackern beim erneuten Rendern zu vermeiden. Fügen Sie bei einem im laufenden Betrieb geänderten Bild dem Pfad ein wechselndes Suffix hinzu (img\logo.png?v=2).


Leistung #

Die erste Komponente erscheint langsam #

Das ist der Start des Edge-Prozesses, der nur einmal anfällt. Rufen Sie PBT_Warmup() beim Start der Anwendung auf: Die Kosten werden während des Ladens des Rests aufgefangen (Installation).

Die Anzeige flackert, während ich meinen Inhalt aufbaue #

Klammern Sie den Aufbau ein:

uo_grid.of_set_redraw(false)
… Hinzufuegen und Zuweisungen …
uo_grid.of_set_redraw(true)

Das Befüllen einer Komponente aus einem DataStore ist langsam #

Die Übertragung selbst ist linear und schnell. Die dominierenden Kosten liegen davor: Ihr Retrieve() oder Ihre Datenerzeugung in PowerScript. Befüllen Sie den DataStore bei großen, im Code erzeugten Datenmengen blockweise — das Verketten einer Zeichenkette von mehreren Megabyte ist in PowerScript quadratisch.


Zusammenspiel mit PowerBuilder #

Ein gehostetes PowerBuilder-Steuerelement liegt über allem #

Das ist das erwartete Verhalten: Ein gehostetes Steuerelement (Registerkartenseite, andockbares Panel) ist ein natives Fenster, das über der Web-Ebene gezeichnet wird. Im Gegenzug bleiben Ihre DataWindows scharf und schnell. Kein Web-Effekt kann darüber gezeichnet werden.

Die Komponente wird weiß, wenn ich im Debugger angehalten bin #

Strukturelles Verhalten von WebView2: Der UI-Thread ist durch den Debugger eingefroren, die Webview kann sich nicht mehr darstellen. Die kompilierte Anwendung ist nicht betroffen. Setzen Sie die Ausführung fort, die Anzeige kehrt zurück.

Gibt es msedgewebview2-Prozesse, die auslaufen? #

Nein: Jede Komponente gibt ihre Webview bei ihrer Zerstörung frei, übernommen vom destructor des Userobjects im normalen Ablauf des Fensterschließens.

Akzentzeichen werden falsch dargestellt #

Übergeben Sie Ihre Beschriftungen im Klartext aus PowerBuilder (normale PB-Zeichenketten). Verwenden Sie für Zeichen außerhalb der Tastatur Char() — zum Beispiel Char(8364) für das Eurozeichen — statt eines Codepage-Bytes.


Verschiedenes #

Ein Dateiexport schlägt fehl #

Das Rückgabe-Event (ue_file_saved, ue_xlsx_saved…) trägt ab_ok = false und eine Meldung. Häufige Ursachen: nicht beschreibbarer Ordner (Program Files), Datei bereits in einer anderen Anwendung geöffnet. Schreiben Sie in einen Benutzerordner (%TEMP%, %LOCALAPPDATA%).

Das Abzeichen „DEMO“ erscheint #

Die Lizenz ist in diesem Kontext nicht aktiv — siehe Lizenz und Demomodus.

Rückgabecodes der Methoden of_* #

RückgabeBedeutung
≥ 0OK (angewendet oder in die Warteschlange gestellt)
-2Komponente nicht erstellt (Runtime fehlt, ungültiger Host) — prüfen Sie of_is_created()
-4Vorgang fehlgeschlagen (Bildschirmfoto, Schreiben einer Datei…)
-5Ungültiges Argument (leerer Bezeichner, Wert außerhalb der Grenzen)

Einzelheiten zum letzten Fehlschlag: of_get_last_error().


Hilfe anfordern #

Legen Sie Ihrer Anfrage bei:


← Übergreifende Funktionen · Inhalt · Lizenz →