PBToolboxAI v1 ← Site

webbrowser — u_pbt_webbrowser #

← Riferimento dei componenti · Sommario della guida

Browser web integrato nella Sua finestra: visualizzazione di una pagina, barra degli indirizzi, cronologia Indietro / Avanti, menu contestuale di navigazione.

Vederlo dal vivo — Applicazione dimostrativa, riquadro Web browser: l'anteprima, il codice che lo produce e questa pagina, affiancati.


In breve #

Userobjectu_pbt_webbrowser
Classe degli item— (componente senza item)
Serve perMostrare una pagina web, un portale interno, una documentazione online o un contenuto HTML generato, senza uscire dall'applicazione
Due modalità di visualizzazioneintegrata (predefinita) o pagina intera, a seconda della tolleranza del sito visitato

Avvio rapido #

// event open della finestra
uo_navigateur.ib_address_bar = true    // barra degli indirizzi + pulsanti di navigazione
uo_navigateur.is_address = "https://fr.wikipedia.org/wiki/PowerBuilder"

Impostare is_address è l'atto di navigazione: ogni assegnazione apre la pagina richiesta. Un indirizzo privo di protocollo ("esempio.it") riceve automaticamente https://.


Proprietà #

ProprietàTipoPredefinitoRuolo
is_addressstring""Indirizzo visualizzato. Assegnare questa proprietà attiva la navigazione. Rileggendola si ottiene la pagina realmente visualizzata: se l'utente segue un collegamento, la segue anche lei (ue_load_completed avvisa). Sono accettati tutti gli schemi, compresi data: e file:
ib_address_barbooleanfalseMostra la barra degli indirizzi integrata: campo URL, pulsanti Indietro / Avanti / Ricarica
ib_context_menubooleanfalseAttiva il menu contestuale di navigazione con il clic destro: Indietro, Avanti, Ricarica
is_theme_stylestringfluentStile visivo del componente (costanti THEME_STYLE_*)
is_theme_modestringlightVariante chiara o scura (costanti THEME_MODE_*)
il_theme_accentlong-1Colore d'accento di questo componente (-1 = accento del tema)

Metodi #

MetodoRuolo
of_refresh ( )Ricarica la pagina corrente
of_go_back ( )Torna alla pagina precedente
of_go_forward ( )Avanza alla pagina successiva
of_can_go_back ( ) → booleantrue se esiste una pagina precedente — per attivare o disattivare il Suo pulsante Indietro
of_can_go_forward ( ) → booleantrue se esiste una pagina successiva
of_stop ( )Interrompe il caricamento in corso
of_execute_javascript (string as_script)Esegue uno script nella pagina visualizzata e ne restituisce il valore come stringa (JSON: un testo torna fra virgolette, un numero no). Una sola condizione, ed è strutturale: la pagina deve aver finito di caricarsi, quindi la chiami da ue_load_completed, mai subito dopo aver impostato is_address. Restituisce una stringa vuota se lo script fallisce o se non c'è alcuna pagina
of_reset ( )Riporta il componente allo stato iniziale: pagina svuotata, cronologia di navigazione cancellata, barra degli indirizzi nascosta, menu contestuale disattivato, ritorno alla modalità integrata
of_save_as_png (string) · of_save_as_jpg (string)Esporta il rendering come immagine

Event #

EventAttivato quando
ue_load_completed (string as_url)Una pagina ha terminato il caricamento; as_url è l'indirizzo effettivamente visualizzato
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)

La barra degli indirizzi integrata #

È la soluzione più rapida: una proprietà, e l'utente dispone di un campo URL e dei pulsanti Indietro / Avanti / Ricarica, a tema come il resto dell'applicazione.

uo_navigateur.ib_address_bar = true
uo_navigateur.is_address = "https://fr.wikipedia.org/wiki/PowerBuilder"

I pulsanti si disattivano da soli quando non c'è alcun posto dove andare.

I Suoi pulsanti personali #

Se preferisce pilotare la navigazione dalla Sua barra degli strumenti, nasconda la barra integrata e utilizzi i metodi:

// Pulsanti Indietro / Avanti della Sua finestra
uo_navigateur.of_go_back()
uo_navigateur.of_go_forward()
// event ue_load_completed di uo_navigateur : (string as_url)
// Aggiornare lo stato dei Suoi pulsanti dopo ogni pagina
uo_barre.of_bar("main").of_item("precedent").ib_enabled = uo_navigateur.of_can_go_back()
uo_barre.of_bar("main").of_item("suivant").ib_enabled   = uo_navigateur.of_can_go_forward()

// E rispecchiare l'indirizzo reale (redirezioni comprese)
sle_url.text = as_url

Il menu contestuale di navigazione #

ib_context_menu aggiunge al clic destro un piccolo menu Indietro / Avanti / Ricarica, a tema e disegnato dall'applicazione. Condivide esattamente la stessa cronologia della barra degli indirizzi: i due restano quindi sempre coerenti.

uo_navigateur.ib_context_menu = true

Interrompere un caricamento #

// Pulsante Stop : interrompe una pagina che tarda
uo_navigateur.of_stop()

Siti che rifiutano la visualizzazione integrata #

Alcuni siti — Google, la maggior parte delle banche, molte applicazioni SaaS — inviano intestazioni di sicurezza che vietano la visualizzazione all'interno di un'altra pagina. Il componente non è interessato: non mostra mai un sito in un riquadro. La pagina viene aperta come documento principale, esattamente come fa il Suo browser, e quelle intestazioni non si applicano più.

Non c'è quindi nulla da impostare, né alcun caso particolare da gestire nel Suo codice.

// Un sito che rifiuta di essere integrato in una pagina : niente di speciale da fare
uo_navigateur.ib_address_bar = true
uo_navigateur.is_address = "https://www.google.com"

In cambio, la pagina occupa tutta la superficie del componente sotto la barra degli indirizzi: ciò che disegnasse sopra di essa (fasce, sovrapposizioni a tema) non è visibile durante la navigazione.


Contenuto HTML senza rete #

Ogni indirizzo è accettato, compresa una pagina HTML fornita direttamente. Comodo per l'anteprima di una lettera, di un ticket, di una fattura o di un report generato dalla Sua applicazione, senza alcuna chiamata di rete né file temporaneo:

string ls_html

ls_html = "<html><head><meta charset='utf-8'></head><body>" &
        + "<h1>Riepilogo dell'ordine</h1>" &
        + "<p>Grazie per la fiducia accordataci.</p>" &
        + "</body></html>"

uo_navigateur.is_address = "data:text/html," + ls_html

Un file locale si apre allo stesso modo con file:///C:/temp/rapport.html.


Ripartire da zero #

of_reset() non si limita a svuotare la pagina: cancella anche la cronologia di navigazione. Un utente non può quindi tornare, con il pulsante Indietro, su una pagina consultata dall'utente precedente o in un'altra pratica.

// Cambio di pratica : si riparte da un browser vergine, senza cronologia
uo_navigateur.of_reset()

uo_navigateur.ib_address_bar = true
uo_navigateur.is_address = ls_url_du_dossier

È il riflesso da avere ogni volta che uno stesso componente serve a mostrare contenuti di contesti differenti.


Esempio completo #

// event open della finestra : pagina iniziale del portale interno
uo_navigateur.of_reset()                  // ripartire puliti (cronologia compresa)

uo_navigateur.ib_address_bar  = true      // campo URL + Indietro / Avanti / Ricarica
uo_navigateur.ib_context_menu = true      // stessa navigazione con il clic destro
uo_navigateur.is_address = "https://intranet.societe.fr/accueil"
// event ue_load_completed di uo_navigateur : (string as_url)
uo_statut.of_item("main").is_text = "Pagina caricata: " + as_url

Buone pratiche #


← Riferimento dei componenti · Sommario della guida