pdfviewer — u_pbt_pdfviewer #
← Riferimento dei componenti · Sommario della guida
Visualizzatore PDF integrato: mostra un documento locale o pubblicato sul web, direttamente nella Sua finestra, con paginazione, zoom e stampa.
▶ Vederlo dal vivo — Applicazione dimostrativa, riquadro PDF viewer: l'anteprima, il codice che lo produce e questa pagina, affiancati.
In breve #
| Userobject | u_pbt_pdfviewer |
| Classe degli item | — (componente senza item) |
| Serve per | Visualizzare una fattura, un ordine d'acquisto, un contratto o un manuale senza avviare un'applicazione esterna |
| Opzioni opt-in | — |
Il componente sostituisce il classico « salvare il PDF in un file temporaneo e poi chiamare ShellExecute »: il documento resta all'interno della Sua applicazione, l'utente non lascia mai la schermata corrente.
Avvio rapido #
// event open della finestra : visualizzare un documento presente su disco
uo_pdf.is_source = "C:\factures\FA-2026-0142.pdf"
// event ue_load_completed di uo_pdf : (string as_source)
uo_status.of_panel(/*key*/ "main").is_text = "Documento visualizzato"
Tutto qui: impostare is_source è sufficiente per caricare e visualizzare il documento.
Proprietà #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_source | string | "" | Documento da visualizzare: un percorso di file (assoluto, relativo all'applicazione o di rete; un # fa parte del nome), un indirizzo file:///, un indirizzo web https://… servito come application/pdf, oppure un indirizzo data:application/pdf. Impostare il valore avvia il caricamento; impostare "" (o solo spazi) svuota il visualizzatore mantenendone le impostazioni. Tutto il resto viene rifiutato e segnalato da ue_load_failed — compreso http:// e un indirizzo che contiene nome utente e password (https://nome:segreto@…). Un PDF contenuto in un blob si visualizza con of_load_blob. Si rilegge come lo ha scritto |
ii_page | integer | 0 | Pagina di apertura, contata a partire da 1 (0 = la prima pagina del documento). Impostata mentre un documento è visualizzato, è la pagina di quel documento: si ricarica, aperto su di essa. Impostata a visualizzatore vuoto, vale per il documento successivo; altrimenti un nuovo documento si apre alla sua prima pagina. Per aprire un documento su una pagina, imposti is_source e poi ii_page: un solo caricamento. Ogni modifica ricarica il documento e attiva di nuovo ue_load_completed: il lettore legge la pagina solo al caricamento; lo stesso valore reimpostato non fa nulla. Solo in scrittura: rileggerla restituisce l'ultima pagina richiesta, non quella visualizzata. Il lettore è quello del motore web e non comunica nulla. |
ii_zoom | integer | 0 | Zoom in percentuale, da 25 a 500 — l'intervallo dei pulsanti del lettore (0 = lasciato al visualizzatore). Un valore fuori da questo intervallo vi viene ricondotto e si rilegge come applicato. Impostare uno zoom annulla is_fit, che lo contraddice. Solo in scrittura, come ii_page: se l'utente zooma con la barra del lettore, questa proprietà non segue. |
is_fit | string | "" | Adattamento: FIT_PAGE, FIT_WIDTH, FIT_HEIGHT, oppure "" per nessuno. Annulla ii_zoom |
ib_viewer_toolbar | boolean | true | Mostra la barra propria del lettore (sommario, numero di pagina, zoom, rotazione, ricerca, stampa, salvataggio). La nasconda quando la sua finestra porta essa stessa questi comandi. Il lettore integrato in WebView2 non ha un comando Schermo intero |
is_destination | string | "" | Apre il documento su una destinazione con nome del PDF — la destinazione di un segnalibro, scritta dallo strumento che ha prodotto il file. "" per nessuna; un nome che il documento non ha lo apre alla prima pagina. Mantenuta per i documenti successivi finché non la cambia. Ogni modifica ricarica il documento visualizzato |
ib_allow_save | boolean | true | Offre i comandi Salva e Salva con nome della barra del lettore e del suo menu. A false, il documento viene mostrato senza proporre di salvarne una copia. Ogni visualizzatore mantiene la propria impostazione: quella di un'altra finestra non cambia nulla qui. Non è una protezione: il file resta leggibile sul disco. Ogni modifica ricarica il documento visualizzato; impostata prima di is_source, il documento si carica una sola volta |
ib_allow_print | boolean | true | Offre il comando Stampa della barra del lettore e del suo menu. of_print stampa comunque: decide la Sua applicazione. Ogni visualizzatore mantiene la propria impostazione. Ogni modifica ricarica il documento visualizzato; impostata prima di is_source, il documento si carica una sola volta |
ib_allow_search | boolean | true | Offre il comando Cerca della barra del lettore. La ricerca appartiene all'utente (anche con Ctrl+F): il lettore non offre alcuna ricerca pilotata dalla Sua applicazione. Ogni visualizzatore mantiene la propria impostazione. Ogni modifica ricarica il documento visualizzato; impostata prima di is_source, il documento si carica una sola volta |
ib_allow_rotate | boolean | true | Offre il comando Ruota della barra del lettore. Ogni visualizzatore mantiene la propria impostazione. Ogni modifica ricarica il documento visualizzato; impostata prima di is_source, il documento si carica una sola volta |
ib_allow_navigation_pane | boolean | true | Offre il pulsante Sommario della barra del lettore, in alto a sinistra: apre il pannello laterale con i segnalibri e le miniature delle pagine. A false, il pulsante scompare. Che il pannello sia aperto riguarda il lettore e l'utente: la Sua applicazione offre il pulsante o no. Ogni visualizzatore mantiene la propria impostazione. Ogni modifica ricarica il documento visualizzato; impostata prima di is_source, il documento si carica una sola volta |
is_theme_style | string | "" | Stile visivo della superficie propria del componente: ciò che il visualizzatore mostra quando non contiene alcun documento (prima del primo, dopo is_source = "" o un documento rifiutato). Il lettore PDF mantiene il proprio aspetto: segue il tema dell'applicazione (PBT_SetDefaultTheme), solo chiaro o scuro, perché WebView2 dà a tutti i suoi lettori PDF uno stesso schema di colori. Vuoto = quello dell'applicazione, seguito a ogni cambio |
is_theme_mode | string | "" | Variante chiara o scura della superficie propria del componente, visibile quando il visualizzatore non contiene alcun documento. Il lettore PDF non la segue: la sua barra e i suoi margini prendono il chiaro o lo scuro del tema dell'applicazione (PBT_SetDefaultTheme). Vuoto = quella dell'applicazione, seguita a ogni cambio |
il_theme_accent | long | -1 | Colore d'accento di questo componente (-1 = accento dell'applicazione, o quello del tema). Nessun effetto visibile qui: né il lettore PDF né il visualizzatore vuoto disegnano con un accento. Il valore viene conservato e si rilegge come impostato |
Metodi #
| Metodo | Ruolo |
|---|---|
of_refresh ( ) | Rilegge il documento corrente (dal disco o dalla rete) senza toccare le impostazioni: il modo per mostrare un file rigenerato allo stesso percorso. La posizione di scorrimento non viene conservata: il lettore riparte da ii_page. Dopo un errore, ritenta lo stesso documento. Un documento rifiutato viene giudicato di nuovo: ue_load_failed viene sollevato di nuovo. Restituisce 0 una volta richiesto, -4 senza documento (is_source vuoto), -2 se il componente non è creato |
of_load_blob (blob ablb_pdf) · of_load_blob (blob ablb_pdf, string as_name) | Visualizza un PDF contenuto in un blob — letto dal database (SELECTBLOB) o ricevuto da un servizio — senza scrivere un file, qualunque sia la sua dimensione: i byte restano in memoria e sono serviti solo a questo visualizzatore. Il secondo argomento è il nome restituito da is_source e da ue_load_completed / ue_load_failed (document.pdf senza di esso). Il blob visualizzato prima viene liberato, questo lo sarà dal documento successivo o da of_reset. Restituisce 0 una volta richiesto (segue ue_load_completed), -5 se il blob è vuoto o non è un PDF, -4 se è troppo grande per questo processo (64 MB a 32 bit, 512 MB a 64 bit) — is_last_error dice perché —, -2 se il componente non è creato |
of_print ( ) · of_print (boolean) | Apre l'anteprima di stampa del documento — non della pagina che lo incornicia. Restituisce 0 una volta richiesta l'anteprima, -4 quando nessun documento è visualizzato, -2 se il componente non è creato. L'argomento qui non ha effetto: è sempre l'anteprima del lettore PDF |
of_print_to_pdf (string) · of_print_to_pdf (string, boolean) | Restituisce -4 su questo componente, senza scrivere nulla: la pagina stampata sarebbe solo il riquadro del lettore, mai il documento. Il documento è già un PDF: copi il file di is_source |
of_reset ( ) | Svuota il visualizzatore e riporta tutte le proprietà al valore predefinito. Restituisce 0 una volta applicato, -2 se il componente non è creato |
of_set_redraw (boolean) | Raggruppa una raffica di modifiche in un unico rendering. Restituisce 0 una volta applicato, -2 se il componente non è creato |
of_save_as_png (string) · of_save_as_jpg (string) | Esporta il rendering come immagine. Restituisce 0 una volta scritta l'immagine, -4 se la scrittura fallisce, -2 se il componente non è creato |
Event #
| Event | Attivato quando |
|---|---|
ue_load_completed (string as_source) | Il documento è visualizzato; as_source è is_source come lo ha scritto (per un blob, il nome dato a of_load_blob). Attivato anche da of_refresh e da ogni modifica di pagina, zoom, adattamento, barra del lettore, destinazione o di un comando ib_allow_* — li imposti prima di is_source per un solo caricamento; lo stesso valore reimpostato non lo attiva. Mai attivato su un errore |
ue_load_failed (string as_source, string as_reason) | Il documento non è stato visualizzato; as_reason è una delle costanti REASON_* qui sotto. Il visualizzatore resta vuoto |
ue_link_clicked (string as_url) | L'utente ha seguito un link del documento. Il visualizzatore resta sul documento: apra as_url dove preferisce (browser della postazione, webbrowser…). as_url è l'indirizzo del link così com'è (https://…, mailto:…); un link relativo di un documento locale arriva come percorso su disco. Un link verso un file locale della postazione (file:///) in un PDF non viene seguito: il lettore PDF di WebView2 lo blocca; nessun ue_link_clicked viene attivato |
ue_ready ( ) | Il componente ha terminato il caricamento; tutto ciò che è stato inviato prima è stato riprodotto |
ue_runtime_missing ( ) | Il runtime WebView2 è assente: il componente resta vuoto |
ue_bg_color (long al_color) | Il componente ha calcolato il colore di sfondo del proprio tema; l'userobject lo ha già adottato (backcolor) |
Perché un documento non viene visualizzato #
as_reason di ue_load_failed è una di queste costanti di u_pbt_pdfviewer. Un PDF si riconosce così: un file locale ha l'estensione .pdf e inizia con la firma %PDF-; un documento remoto è servito con il tipo application/pdf (l'unico che il motore consegna al suo lettore); un indirizzo data: dichiara application/pdf.
| Costante | Valore | Causa |
|---|---|---|
REASON_NOT_FOUND | "notfound" | File assente o illeggibile, indirizzo che risponde 404 |
REASON_NOT_PDF | "notpdf" | Non è un PDF: file locale senza la firma %PDF-, risposta remota che non è application/pdf (un file server che risponde application/octet-stream: scarichi prima il documento, vedere gli esempi), data: o blob di un altro tipo |
REASON_TOO_LARGE | "toolarge" | File troppo grande per questo processo (oltre 64 MB a 32 bit, 512 MB a 64 bit), o un indirizzo data: di oltre 2 MB di caratteri (circa 1,5 MB di PDF) |
REASON_INSECURE | "insecure" | http://: non supportato, servite il documento in https:// |
REASON_UNSUPPORTED | "unsupported" | Un altro tipo di indirizzo (ftp:, blob:…), o un indirizzo che contiene nome utente e password (https://nome:segreto@…) |
REASON_NETWORK | "network" | Server irraggiungibile, nome sconosciuto, connessione interrotta |
REASON_CERTIFICATE | "certificate" | Certificato del sito non valido, scaduto o revocato |
REASON_AUTH | "auth" | Il sito o il proxy richiede un'autenticazione: scarichi il documento con il restclient (token, credenziali), poi lo visualizzi (vedere gli esempi) |
REASON_HTTP | "http" | Un altro errore del server (403, 500…) |
REASON_REFUSED | "refused" | Il sito rifiuta di essere mostrato in un riquadro, o invia il PDF come download — il file non viene comunque scaricato |
REASON_FAILED | "failed" | Qualsiasi altra causa |
Che cosa può fare l'utente, senza una riga di codice #
Il visualizzatore mostra la sua barra degli strumenti integrata sopra il documento. Non c'è nulla da programmare: viene fornita e localizzata dal sistema.
| Azione | Come |
|---|---|
| Paginazione | Rotellina e barra di scorrimento, oppure digitando direttamente il numero di pagina nel contatore n / totale |
| Zoom | Pulsanti + / −, adatta alla pagina o alla larghezza |
| Ricerca | Il pulsante di ricerca della barra degli strumenti, nel testo del documento |
| Stampa | Pulsante stampante della barra degli strumenti (nascondibile con ib_allow_print), o of_print dal Suo codice |
| Salvataggio | Pulsante di download, per salvare una copia del documento (nascondibile con ib_allow_save) |
| Rotazione | Rotazione delle pagine dal menu della barra degli strumenti |
| Tastiera | Appena il componente ha il focus (Tab o of_focus_webview): PagGiù, le frecce, Home / Fine fanno scorrere il documento, senza clic preliminare |
Le scorciatoie del browser — Ctrl+F, Ctrl+P, Ctrl + rotellina — sono disattivate in tutti i componenti, compreso questo: usi i pulsanti della barra del lettore.
Ciò che il lettore non dice #
Il lettore è quello integrato nel motore web: niente da installare, stampa, ricerca e moduli PDF inclusi. In cambio, non comunica nulla alla Sua applicazione: né la pagina visualizzata, né il numero di pagine, né lo zoom reale, né il testo selezionato, e la ricerca non si pilota dal codice: il lettore ignora i parametri di apertura che evidenzierebbero un testo o aprirebbero il suo pannello laterale. Non ha un comando Schermo intero e segue il tema chiaro o scuro dell'applicazione, mai quello del componente. ii_page e ii_zoom dicono dove aprire il documento, non dove si trova l'utente. Un PDF protetto da password: il lettore la chiede da sé all'utente, la Sua applicazione non può fornirla. È una scelta deliberata; un rendering pilotabile da script richiederebbe una libreria esterna.
Esempi #
Aprire un documento locale #
// Percorso assoluto, oppure relativo alla directory dell'applicazione
uo_pdf.is_source = "doc\conditions-generales.pdf"
Aprire un documento pubblicato sul web #
// Un indirizzo web si carica esattamente come un file locale
uo_pdf.is_source = "https://www.monsite.fr/tarifs/catalogue-2026.pdf"
Ovviamente è necessaria una connessione a internet; il caricamento è asincrono, ue_load_completed Le segnala la fine.
Visualizzare il PDF appena prodotto da una DataWindow #
// Local variables
string ls_file
// Un file al giorno, nella cartella temporanea
ls_file = "C:\temp\report_" + String(Today(), "yyyymmdd") + ".pdf"
// La DataWindow produce il file...
dw_report.SaveAs(ls_file, PDF!, false)
// ...e il visualizzatore lo mostra immediatamente
uo_pdf.is_source = ls_file
Aggiornare dopo la rigenerazione del file #
// Il file e stato riscritto nella stessa posizione : ricaricare senza toccare is_source
uo_pdf.of_refresh()
Concatenare più documenti nello stesso visualizzatore #
// event rowfocuschanged di dw_list : (long currentrow)
// Local variables
string ls_pdf
// Il percorso del PDF della riga corrente
ls_pdf = dw_list.GetItemString(currentrow, "pdf_path")
// Senza allegato il visualizzatore si svuota (impostazioni mantenute) ; altrimenti lo mostra
if ls_pdf = "" then
uo_pdf.is_source = ""
else
uo_pdf.is_source = ls_pdf
end if
Seguire la fine del caricamento #
// event ue_load_completed di uo_pdf : (string as_source)
uo_wait.Hide()
// of_print stampa il documento visualizzato
uo_print_button.ib_enabled = true
Dire perché il documento non c'è #
// event ue_load_failed di uo_pdf : (string as_source, string as_reason)
uo_wait.Hide()
choose case as_reason
case uo_pdf.REASON_NOT_FOUND
uo_status.of_panel(/*key*/ "main").is_text = "Documento non trovato: " + as_source
case uo_pdf.REASON_NOT_PDF
uo_status.of_panel(/*key*/ "main").is_text = "Questo file non e un PDF"
case else
uo_status.of_panel(/*key*/ "main").is_text = "Documento non disponibile (" + as_reason + ")"
end choose
Aprire altrove un link del documento #
// event ue_link_clicked di uo_pdf : (string as_url)
// Il visualizzatore resta sul documento : il link si apre nel browser della finestra
uo_web.is_address = as_url
Stampare il documento #
// clicked del pulsante Stampa : l'anteprima del lettore PDF, sul documento stesso
if uo_pdf.of_print() = -4 then
uo_status.of_panel(/*key*/ "main").is_text = "Nessun documento da stampare"
end if
Mostrare senza lasciar salvare né stampare #
// Un documento riservato : ne Salva ne Stampa nella barra del lettore
uo_pdf.ib_allow_save = false
uo_pdf.ib_allow_print = false
uo_pdf.is_source = is_current_document
Le imposti prima di is_source: il documento si carica una sola volta. Ogni visualizzatore mantiene la propria impostazione. Non è una protezione: il file resta leggibile sul disco, e of_print stampa comunque.
Anteprima in una scheda, accanto all'inserimento dati #
// event open : il visualizzatore occupa una pagina della scheda, l'inserimento dati l'altra
uo_tab.of_add_page(/*key*/ "entry", /*title*/ "Inserimento", /*page*/ uo_page_entry)
uo_tab.of_add_page(/*key*/ "preview", /*title*/ "Anteprima", /*page*/ uo_page_preview)
// Il visualizzatore e collocato in uo_page_preview come qualsiasi altro controllo
uo_pdf.is_source = is_current_document
Il componente si ospita senza particolari precauzioni in un tab o in un pannello dockcontainer.
Verificare il file prima di visualizzarlo #
// Local variables
string ls_path
// Il file della fattura visualizzata
ls_path = "C:\factures\" + is_number + ".pdf"
// Nessun file, niente da mostrare : si svuota il visualizzatore invece di lasciare il documento precedente
if not FileExists(ls_path) then
uo_pdf.is_source = ""
uo_status.of_panel(/*key*/ "main").is_text = "Fattura non trovata"
return
end if
// Altrimenti, la fattura viene mostrata
uo_pdf.is_source = ls_path
Visualizzare un PDF letto dal database (blob) #
// Local variables
blob lblb_pdf
// La fattura salvata nel database, letta in un blob
SELECTBLOB pdf_file INTO :lblb_pdf FROM invoice WHERE invoice_no = :is_number USING SQLCA;
// Mostrata direttamente dalla memoria : nessun file temporaneo, qualunque sia la dimensione
if SQLCA.SQLCode = 0 then
uo_pdf.of_load_blob(/*pdf*/ lblb_pdf, /*name*/ "invoice-" + is_number + ".pdf")
end if
Il nome dato ritorna in is_source e in ue_load_completed; il blob viene liberato dal documento successivo o da of_reset.
Aprire su un capitolo #
// Aperto sul capitolo "prices" del catalogo; il pulsante Sommario del lettore elenca i segnalibri
uo_pdf.is_destination = "prices"
uo_pdf.is_source = "doc\catalogue-2026.pdf"
Il nome di una destinazione è quello scritto dallo strumento che ha prodotto il PDF: il Suo generatore di documenti lo conosce.
Un documento dietro un token, o servito come octet-stream #
// Local variables
long ll_status
string ls_file
// Il restclient (inv_rest, preparato all'apertura della finestra) invia il token e scarica il file
ls_file = "C:\temp\invoice-4152.pdf"
ll_status = inv_rest.of_download(/*url*/ "/orders/4152/invoice.pdf", /*path*/ ls_file)
// Poi il visualizzatore mostra il file, qualunque tipo abbia annunciato il server
if ll_status = 200 then
uo_pdf.is_source = ls_file
end if
Il lettore del motore non sa né inviare un token né mostrare una risposta application/octet-stream (REASON_AUTH, REASON_NOT_PDF): il restclient lo fa al suo posto.
Formati e percorsi accettati #
Forma di is_source | Esempio | Nota |
|---|---|---|
| Percorso assoluto | "C:\docs\contrat.pdf" | Il più affidabile |
| Percorso relativo | "doc\notice.pdf" | Relativo alla directory dell'applicazione |
| Percorso di rete | "\\serveur\partage\bon.pdf" | L'utente deve avere i diritti di lettura |
Nome con # | "C:\devis\Devis #12.pdf" | Il # fa parte del nome del file |
Indirizzo file: | "file:///C:/docs/contrat.pdf" | Convertito in percorso, come un percorso assoluto; anche file://localhost/C:/… e la forma UNC a quattro barre file:////server/condivisione/… |
| Indirizzo web | "https://…/catalogue.pdf" | Servito come application/pdf, caricamento asincrono. Un #page=… scritto nell'indirizzo viene ignorato: usi ii_page. Un indirizzo che contiene credenziali (https://nome:segreto@…) viene rifiutato (REASON_UNSUPPORTED): passi dal restclient |
| Documento in memoria | "data:application/pdf;base64,…" | Nulla viene scritto su disco. Oltre 2 MB di caratteri (circa 1,5 MB di PDF), ue_load_failed con REASON_TOO_LARGE: per un documento in memoria più grande, of_load_blob |
Indirizzo http:// | "http://intranet/bon.pdf" | Non supportato: ue_load_failed con REASON_INSECURE. Servite il documento in https:// |
| Vuoto | "" | Svuota il visualizzatore e ne mantiene le impostazioni; anche un valore fatto di spazi |
Questo componente supporta soltanto il PDF: tutto il resto viene rifiutato e segnalato da ue_load_failed (REASON_NOT_PDF). Per un'immagine, usi picture; per una pagina HTML, webbrowser.
Buone pratiche #
- Tenga d'occhio
ue_load_failed: un percorso non valido, un file che non è un PDF o un sito irraggiungibile vi viene segnalato con la sua causa, e il visualizzatore resta vuoto. - Per svuotare il visualizzatore (cambio di riga senza allegato), imposti
is_source = "": altrimenti il documento precedente resta visibile. Ancheof_reset()lo svuota, ma riporta inoltre tutte le impostazioni al loro valore predefinito — Salva e Stampa compresi. of_refresh()è il modo per mostrare un file rigenerato allo stesso percorso: rilegge il file senza toccare le impostazioni. Non conserva la posizione di scorrimento — il lettore riparte daii_page.- Ogni modifica di
ii_zoom,is_fit,ib_viewer_toolbar,is_destination,ib_allow_saveoib_allow_printricarica il documento (il lettore legge le impostazioni solo al caricamento) e attiva di nuovoue_load_completed: le imposti prima diis_sourceper un solo caricamento. Lo stesso valore reimpostato non ricarica nulla.ii_pageimpostato mentre un documento è visualizzato vale per quel documento: per aprirne un altro su una pagina, impostiis_sourcee poiii_page. - Preveda un indicatore di attesa per i documenti remoti o voluminosi, e lo nasconda su
ue_load_completede suue_load_failed. - Dia al componente una superficie confortevole (almeno metà della finestra): la barra degli strumenti integrata e il documento hanno bisogno di spazio per restare leggibili.
- Per visualizzare una pagina web anziché un PDF, usi webbrowser; per un'immagine, picture.
Ereditato dalla base comune #
Questi membri esistono su tutti i componenti visivi — non sono propri di questo. Sono descritti una sola volta, nei capitoli trasversali; questa tabella dice solo dove leggerli.
| Membri | Ruolo | Descritto in |
|---|---|---|
of_reset | Riportare il componente a zero | 3.6 Riportare un componente a zero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Scorciatoie da tastiera del componente | 3.5 Le scorciatoie da tastiera |
ib_created · ib_ready · is_last_error | Se è nato, se è pronto, cosa è fallito | 3.7 Diagnostica |
of_save_as_png · of_save_as_jpg | Esportare il rendering in immagine | 3.8 Esportare il rendering come immagine |
of_set_redraw | Raggruppare le modifiche in un solo ridisegno | 3.10 Buone pratiche |
of_preload_icons | Icone mostrate senza ritardo | Visualizzazione istantanea: of_icon |
of_set_translation | Tradurre una dicitura del componente | 5.2 Adattare un'etichetta: of_set_translation |
of_focus_webview | Dare il focus al componente | 6.4 Tastiera e focus |
of_print · of_print_to_pdf | Stampare, o scrivere un PDF | 6.9 Stampare |
of_set_property · of_get_property · is_component_name | Pilotare una proprietà per nome | 3.1 Il motore delle proprietà |
is_accessible_name · is_accessible_description | Il nome e la descrizione che dice un lettore di schermo | 3.4 Proprietà ed event opzionali |
Due aiuti non sono ereditati: of_icon e of_escape_markup vivono su n_pbt_utils. Ne dichiari uno — n_pbt_utils lnv_utils, niente da creare — e li chiami su di esso.