Documentation
No wizard, no COM registration, no administrator rights: two files to copy, then you drop the component like any PowerBuilder control.
Copy pbtoolboxai.pbl into your application folder and add it to the target's library list. The external function declarations already live on the ancestor: nothing to redeclare.
A single self-contained file, pbtoolboxai.dll: the web bundles, themes and dictionaries are embedded in it. The x86 copy sits next to pbXXX.exe for the IDE, the x64 one next to a 64-bit executable.
Insert → Control → User Object, pick u_pbt_statictext, name it, size it. In the painter it shows a grey frame: the real rendering happens at runtime.
Assign the properties, script the events. Commands issued before the component is ready are queued and replayed: there is no initialization order to respect.
// Window constructor -- the component is not created yet : these commands
// are queued and replayed as soon as it is ready.
uo_text.is_theme_style = uo_text.THEME_STYLE_FLUENT
uo_text.is_theme_mode = uo_text.THEME_MODE_DARK
uo_text.is_text = "Welcome to [b]PBToolboxAI[/b] !"
uo_text.is_align = uo_text.ALIGN_CENTER
uo_text.il_text_color = RGB(0, 103, 192)
// ue_clicked event of u_pbt_statictext
Open(w_detail)
What you learn on one component holds for every other: same prefixes, same conventions, same return codes.
uo_text.is_text = "Hello" — no setter to remember. And reading back is live: a property the user changed with the mouse reads back up to date.
Every property with predefined values exposes its constants on the component: ALIGN_CENTER, THEME_MODE_DARK… auto-completed by the IDE, and no typos.
ue_clicked, ue_selection_changed… with their arguments. Some are vetoable: your code can refuse the change before it happens.
The of_* methods return a long: ≥ 0 = done, < 0 = error. The library never pops a box on your behalf.
Eight guide chapters, one reference page per component, plus an interactive documentation inside the demo application: every property has its runnable example there, whose code you copy.
Requirements, files to ship, IDE integration, WebView2 runtime
Open and migrate the shipped demo, first component on screen
u_pbt_baseProperty engine, items, events, life cycle, of_reset
Themes (style × mode), accent color, token overrides, icons, rich text
PBT_SetLanguage, translations, RTL
Tooltips, hosting PB controls, file drop, keyboard focus, image export, non-visual utilities
Common symptoms and what causes them
dev / runtime / demo keys, demo mode
All of it in six languages — French, English, German, Italian, Spanish, Portuguese — as self-contained HTML pages, readable offline in a browser, in the Documentation\ folder shipped with the product.
The same documentation, served to your AI assistant: Claude Code, Claude Desktop, Cursor or VS Code look up the components, members and examples of your version there, and have the PowerScript they propose checked. Chapter 13 explains how to connect it in a few lines.
10.2 → 2025, 32-bit and 64-bit alike. Both copies of the DLL carry the same name: you develop in the 32-bit IDE and compile to 64-bit without changing a line of PowerScript.
10 and 11, Server 2016 and above.
Already present on an up-to-date Windows 10/11. On Server or LTSC, a 2 MB bootstrapper installs it once, silently.
No .NET, no ActiveX, no PBNI, no COM registration, no administrator rights for the library itself.
No, never. The web engine is an implementation detail: all you see are PowerBuilder userobjects, properties and events.
The file you deploy, and nothing else. Same DLL name, same declarations, same PowerScript.
Yes: tabs and dock panels host real PB controls — a DataWindow, an entry form, another component. That is Win32 parenting, not a picture.
The theme is a property of the component (is_theme_style × is_theme_mode, plus an accent color), applied live. The language is process-wide: one call to PBT_SetLanguage in the application open, and every component follows.
The FAQ and troubleshooting chapter of the shipped documentation lists the frequent symptoms and their cause — DLL not found, runtime missing, control placed outside the visible window.