PBToolboxAI v1 ← Site

statictext — u_pbt_statictext #

← Riferimento dei componenti · Sommario della guida

Blocco di testo formattato: tag, allineamenti, collegamenti e azioni cliccabili, aspetto da intestazione, modalità scorrimento (marquee) e area di rilascio dei file.

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


In breve #

Userobjectu_pbt_statictext
Classe degli item— (componente senza item)
Serve perSostituire uno statictext di PowerBuilder con un blocco di testo formattato e cliccabile, capace di fungere da intestazione, da banner scorrevole o da area di rilascio
Opzioni opt-inib_auto_height, ib_track_mouse, ib_allow_drop, ib_selectable, ib_hover_effect

Avvio rapido #

// event open della finestra
uo_texte.is_text = "Benvenuto in [b][accent]PBToolboxAI[/accent][/b][br]" &
                   + "Consulti la [hyperlink=https://pbtoolboxai.net]documentazione[/hyperlink]."
uo_texte.is_align = uo_texte.ALIGN_CENTER
uo_texte.is_valign = uo_texte.VALIGN_CENTER

Il testo accetta il testo formattato con tag: è questo il componente che ne trae il massimo vantaggio, poiché è l'unico a rendere le aree [hyperlink=…] e [action=…] realmente cliccabili.


Costanti #

CostanteValorePer
ALIGN_START · ALIGN_CENTER · ALIGN_END · ALIGN_JUSTIFY"start" "center" "end" "justify"is_align
VALIGN_TOP · VALIGN_CENTER · VALIGN_BOTTOM"top" "center" "bottom"is_valign

start ed end sono logici: seguono il senso di scrittura (Lingua e RTL). I valori fisici left e right restano accettati come alias.


Proprietà #

Testo e formattazione #

ProprietàTipoPredefinitoRuolo
is_textstring""Il testo visualizzato, con il testo formattato con tag: [b], [i], [u], colori, [picture=…], [hyperlink=…], [action=…]
is_alignstring"start"Allineamento orizzontale: ALIGN_START, ALIGN_CENTER, ALIGN_END, ALIGN_JUSTIFY
is_valignstring"top"Allineamento verticale all'interno del controllo: VALIGN_TOP, VALIGN_CENTER, VALIGN_BOTTOM
ib_wrapbooleantrueA capo automatico. false forza una riga unica
ib_ellipsisbooleanfalseCon ib_wrap = false, tronca l'eccedenza con dei puntini di sospensione invece di tagliarla di netto
ib_ellipsis_tooltipbooleanfalseOpt-in: quando il testo non entra nel riquadro, mostrarlo per intero in un suggerimento (marcatura compresa). Non sostituisce mai un suggerimento impostato da lei con is_tooltip o is_super_tooltip_*: vince il suo
is_font_familystring""Carattere predefinito del blocco (vuoto = carattere del tema)
ii_font_sizeinteger0Dimensione predefinita in punti (0 = dimensione del tema)
il_text_colorlong-1Colore del testo RGB() (-1 = colore del tema). I tag [color] restano prioritari sulla propria porzione
ii_line_spacinginteger0Interlinea in percentuale (150 = 1,5 righe; 0 = predefinito)
ib_enabledbooleantrueBlocco attivo o disattivato (collegamenti e azioni inerti quando è disattivato)
ib_selectablebooleanfalseOpt-in: consente all'utente di selezionare e copiare il testo (disattivato per impostazione predefinita, come un'etichetta)

Aspetto del blocco (look da « intestazione ») #

ProprietàTipoPredefinitoRuolo
il_back_colorlong-1Sfondo del blocco RGB() (-1 = sfondo del tema)
il_border_colorlong-1Colore del bordo (-1 = nessun bordo)
ii_border_widthinteger0Spessore del bordo in pixel (0 = nessun bordo)
ii_corner_radiusinteger0Raggio di arrotondamento degli angoli, in pixel
ii_paddinginteger0Margine interno in pixel (0 = valore del tema)
ib_hover_effectbooleanfalseOpt-in: leggero scurimento al passaggio del mouse, per un'etichetta-pulsante

Modalità scorrimento (marquee) #

ProprietàTipoPredefinitoRuolo
ib_marqueebooleanfalseTrasforma il blocco in un banner scorrevole orizzontalmente
ii_marquee_speedinteger60Velocità di scorrimento, in pixel al secondo
is_marquee_directionstringMARQUEE_STARTSenso dello scorrimento: MARQUEE_START (verso l'inizio della lettura) o MARQUEE_END. Alias fisici "left" / "right" accettati
ib_marquee_overflow_onlybooleanfalseOpt-in: scorrere solo se il testo è troppo largo per il riquadro. Un banner che fa scorrere un testo già leggibile è puro rumore visivo. Disattivato per impostazione predefinita, perché ib_marquee = true continui a significare scorre
ib_marquee_pause_on_hoverbooleanfalseOpt-in: ferma lo scorrimento finché il puntatore è sul blocco, così un testo lungo si può leggere. La posizione del ciclo è conservata: nulla salta quando il puntatore se ne va

Interazioni opzionali #

ProprietàTipoPredefinitoRuolo
ib_allow_dropbooleanfalseOpt-in: accetta il rilascio di file da Esplora risorse di Windows; i percorsi completi arrivano tramite ue_drop_files
ib_track_mousebooleanfalseOpt-in: attiva ue_mouse_enter / ue_mouse_leave
ib_auto_heightbooleanfalseOpt-in: il blocco misura la propria altezza ideale e ridimensiona l'userobject; vedere Base comune
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)
is_tooltipstring""Tooltip semplice mostrato al passaggio del mouse sul componente
is_super_tooltip_titlestring""Titolo del tooltip avanzato (prevale su is_tooltip)
is_super_tooltip_textstring""Testo del tooltip avanzato (markup avanzato accettato)
is_super_tooltip_imagestring""Immagine del tooltip avanzato

Metodi #

MetodoRuolo
of_reset ( )Riporta tutte le proprietà ai valori predefiniti e svuota il testo
of_set_redraw (boolean)Raggruppa una raffica di modifiche in un unico rendering
of_save_as_png (string) · of_save_as_jpg (string)Esporta il rendering come immagine
of_scroll_to_end ( )Scende in fondo al testo. Per un registro, la cui riga più recente sta alla fine: senza questo essa scende sotto la linea di galleggiamento non appena il testo supera l altezza visibile

Event #

EventAttivato quando
ue_clicked ( )Clic sinistro sul blocco — non attivato su un'area [action] o [hyperlink] (nessun doppione)
ue_hyperlink (string as_url)Una zona [hyperlink=url] è stata cliccata. Il browser si apre da solo: l'event le arriva in più, per tracciare il clic o farne altro
ue_action (string as_id)È stata cliccata un'area [action=id]: sta a Lei collegarvi il Suo codice
ue_drop_files (string as_files[])Sono stati rilasciati dei file da Windows: percorsi completi, una voce per file. Richiede ib_allow_drop = true
ue_drag_enter ( )Un trascinamento di file entra nel componente (ib_allow_drop)
ue_drag_leave ( )Il trascinamento di file lascia il componente
ue_auto_height (long al_height)Il blocco ha calcolato la propria altezza ideale — richiede ib_auto_height = true
ue_rclicked ( )Clic destro sul blocco
ue_double_clicked ( )Doppio clic sul blocco, come lo StaticText nativo di PowerBuilder. Anche i clic singoli che lo precedono vengono emessi, nello stesso ordine. Non su una zona [action] o [hyperlink], che hanno un canale proprio
ue_text_overflow (boolean ab_truncated)Il testo ha smesso di entrare nel riquadro — o vi rientra. Emesso solo al cambiamento, mai a raffica: un blocco a capo conta come tagliato quando è rifilato in basso, uno su una riga quando è tagliato di lato. Da gestire per allargare una colonna, offrire un pulsante vedi altro, o semplicemente attivare ib_ellipsis_tooltip
ue_mouse_enter ( )Il mouse entra — richiede ib_track_mouse = true
ue_mouse_leave ( )Il mouse esce — richiede ib_track_mouse = true
ue_cycle ( )Solo in modalità scorrimento: il testo ha appena completato un passaggio intero
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)

Esempi #

Un'intestazione di sezione #

Sfondo pieno, testo bianco centrato e altezza adattata al contenuto: il blocco si legge come una vera barra del titolo.

uo_entete.of_set_redraw(false)

uo_entete.is_text  = "[b]Cruscotto delle vendite"
uo_entete.is_align = uo_entete.ALIGN_CENTER

// Sfondo pieno e testo bianco leggibile
uo_entete.il_back_color = RGB(/*rosso*/ 60, /*verde*/ 110, /*blu*/ 190)
uo_entete.il_text_color = RGB(/*rosso*/ 255, /*verde*/ 255, /*blu*/ 255)
uo_entete.ii_padding = 14

// Il blocco aderisce al suo contenuto : si legge come una barra del titolo
uo_entete.ib_auto_height = true

uo_entete.of_set_redraw(true)
// event ue_auto_height di uo_entete
of_repositionner_sous_entete(al_height)   // sposta il contenuto sotto l'intestazione

Testo formattato con collegamento e azione #

uo_texte.is_text = "La Sua licenza scade il [b]31/12[/b]. " &
                   + "[hyperlink=https://pbtoolboxai.net]Maggiori informazioni[/hyperlink] " &
                   + "oppure [action=renew]la rinnovi subito[/action]."
// event ue_action di uo_texte : (string as_id)
choose case as_id
    case "renew" ; of_ouvrir_renouvellement()
end choose

ue_hyperlink è riservato agli URL (il browser si apre da solo); [action=id] è la scelta giusta quando il clic deve restare dentro la Sua applicazione. La variante [invisibleaction=id] attiva lo stesso ue_action senza l'aspetto di un collegamento.

Un blocco comprimibile #

uo_recap.is_text = "[b]Ordine 2026-0148[/b][br]" &
                   + "[foldarea:[b]Consegna[/b]]Spedito il 12/07, entro 48 ore.[/foldarea]" &
                   + "[foldarea-closed:[i]Note legali[/i]]Reso accettato entro 14 giorni.[/foldarea]"

uo_recap.ib_auto_height = true   // il blocco si restringe quando una sezione viene compressa

Un [foldarea:Titolo] aggiunge un'intestazione cliccabile sopra il proprio contenuto: il lettore comprime la sezione con un clic e il marcatore passa da a +. [foldarea-closed:Titolo] produce lo stesso blocco, compresso fin dalla visualizzazione. I blocchi si annidano e la compressione non emette alcun event: è una questione di lettura, non di codice. Se ib_auto_height è attivo, l'altezza viene notificata di nuovo a ogni compressione. Il titolo è testo con tag: [foldarea:[b][accent]Ordine 2026-0148[/accent][/b]] rende il proprio in grassetto e con il colore d'accento.

Un banner scorrevole #

uo_bandeau.is_text = "[b]Informazione[/b] -- chiusura straordinaria del servizio venerdì 12."

// Modalita scorrimento, stile notiziario
uo_bandeau.ib_marquee = true
uo_bandeau.ii_marquee_speed = 90        // pixel al secondo
uo_bandeau.is_marquee_direction = uo_bandeau.MARQUEE_START

Lo scorrimento va in ciclo senza tempi morti. Per fermarlo, riporti ib_marquee a false: il testo riprende la sua impaginazione normale.

A ogni passaggio completo del testo viene attivato l'event ue_cycle — pratico per far ruotare più messaggi:

// In ue_cycle del banner : passare al messaggio successivo
ii_message = Mod(ii_message, UpperBound(is_messages)) + 1
uo_bandeau.is_text = is_messages[ii_message]

Un'area di rilascio dei file #

// Accettare i file trascinati da Esplora risorse di Windows
uo_zone.ib_allow_drop = true

uo_zone.is_text = "[size=32][accent][b]Rilasci qui i Suoi file[/b][/accent][/size][br][br]" &
                  + "Trascini uno o più file da Esplora risorse di Windows."
uo_zone.is_align  = uo_zone.ALIGN_CENTER
uo_zone.is_valign = uo_zone.VALIGN_CENTER
// event ue_drop_files di uo_zone : (string as_files[])
integer li

for li = 1 to UpperBound(as_files)
    of_importer(as_files[li])       // as_files[li] = percorso COMPLETO del file
next
// event ue_drag_enter di uo_zone : segnalare la destinazione durante il passaggio
uo_zone.il_border_color = RGB(/*rosso*/ 21, /*verde*/ 101, /*blu*/ 192)
uo_zone.ii_border_width = 2

I percorsi ricevuti sono completi: può passarli direttamente a FileOpen o alla Sua routine di importazione.

Un'etichetta che si comporta come un pulsante #

uo_lien.is_text = "Seleziona tutto"
uo_lien.il_text_color = RGB(/*rosso*/ 21, /*verde*/ 101, /*blu*/ 192)
uo_lien.ii_padding = 8
uo_lien.ii_corner_radius = 6
uo_lien.ib_hover_effect = true       // reagisce al passaggio del mouse come un pulsante
// event ue_clicked di uo_lien
of_tout_selectionner()

Buone pratiche #


← Riferimento dei componenti · Sommario della guida