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 #
| Userobject | u_pbt_statictext |
| Classe degli item | — (componente senza item) |
| Serve per | Sostituire 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-in | ib_auto_height, ib_auto_width, ib_follow_end, ib_track_mouse, ib_track_cycle, ib_allow_drop, ib_selectable, ib_hover_effect |
Avvio rapido #
// event open della finestra
uo_text.is_text = "Benvenuto in [b][accent]PBToolboxAI[/accent][/b][br]" &
+ "Consulti la [hyperlink=https://pbtoolboxai.net]documentazione[/hyperlink]."
uo_text.is_align = uo_text.ALIGN_CENTER
uo_text.is_valign = uo_text.VALIGN_CENTER
Il testo accetta il testo formattato con tag: è questo il componente che ne trae il massimo vantaggio, poiché è l'unico a rendere cliccabili le aree [action=…] (un [hyperlink=…] si apre ovunque).
Costanti #
| Costante | Valore | Per |
|---|---|---|
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à | Tipo | Predefinito | Ruolo |
|---|---|---|---|
is_text | string | "" | Il testo visualizzato, con il testo formattato con tag: [b], [i], [u], colori, [picture=…], [hyperlink=…], [action=…] |
is_align | string | "start" | Allineamento orizzontale: ALIGN_START, ALIGN_CENTER, ALIGN_END, ALIGN_JUSTIFY |
is_valign | string | "top" | Allineamento verticale all'interno del controllo: VALIGN_TOP, VALIGN_CENTER, VALIGN_BOTTOM |
ib_wrap | boolean | true | A capo automatico. false forza una riga unica |
ib_ellipsis | boolean | false | Con ib_wrap = false, tronca l'eccedenza con dei puntini di sospensione invece di tagliarla di netto |
ib_ellipsis_tooltip | boolean | false | Opt-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_family | string | "" | Carattere predefinito del blocco (vuoto = carattere del tema) |
ii_font_size | integer | 0 | Dimensione predefinita in punti (0 = dimensione del tema) |
il_text_color | long | -1 | Colore del testo RGB() (-1 = colore del tema). I tag [color] restano prioritari sulla propria porzione |
ii_line_spacing | integer | 0 | Interlinea in percentuale, da 50 a 400 (150 = 1,5 righe; 0 = predefinito). Un valore fuori da questi limiti viene riportato al più vicino, e si rilegge così come applicato |
ib_enabled | boolean | true | Blocco attivo o disattivato (collegamenti e azioni inerti quando è disattivato) |
ib_selectable | boolean | false | Opt-in: consente all'utente di selezionare il testo e di copiarlo con Ctrl+C (disattivato per impostazione predefinita, come un'etichetta). Rilasciare il mouse dopo una selezione non genera ue_clicked |
Aspetto del blocco (look da « intestazione ») #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
il_back_color | long | -1 | Sfondo del blocco RGB() (-1 = sfondo del tema). Con ii_corner_radius segue l'arrotondamento, e fuori dagli angoli il blocco mostra il colore dell'oggetto su cui è posato |
il_border_color | long | -1 | Colore del bordo (-1 = nessun bordo) |
ii_border_width | integer | 0 | Spessore del bordo in pixel (0 = nessun bordo) |
ii_corner_radius | integer | 0 | Raggio di arrotondamento degli angoli, in pixel. Il bordo E lo sfondo il_back_color lo seguono |
ii_padding | integer | -1 | Margine interno in pixel: -1 = quello del tema (predefinito), 0 = nessun margine (il testo si allinea al bordo di un campo vicino), oltre = pixel |
ib_hover_effect | boolean | false | Opt-in: leggero scurimento al passaggio del mouse (schiarimento su un tema scuro), per un'etichetta-pulsante |
Modalità scorrimento (marquee) #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
ib_marquee | boolean | false | Trasforma il blocco in un banner scorrevole orizzontalmente |
ii_marquee_speed | integer | 60 | Velocità di scorrimento, in pixel al secondo (0 = velocità predefinita, 60) |
is_marquee_direction | string | MARQUEE_START | Senso dello scorrimento: MARQUEE_START (verso l'inizio della lettura) o MARQUEE_END. Alias fisici "left" / "right" accettati: restano fisici, qualunque sia il senso di lettura. Qualsiasi altro valore vale, e si rilegge, MARQUEE_START |
ib_marquee_overflow_only | boolean | false | Opt-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_hover | boolean | false | Opt-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à | Tipo | Predefinito | Ruolo |
|---|---|---|---|
ib_allow_drop | boolean | false | Opt-in: accetta il rilascio di file da Esplora risorse di Windows; i percorsi completi arrivano tramite ue_drop_files. Un testo disattivato (ib_enabled = false) rifiuta ogni rilascio |
ib_track_mouse | boolean | false | Opt-in: attiva ue_mouse_enter / ue_mouse_leave |
ib_track_cycle | boolean | false | Opt-in: attiva ue_cycle, sollevato alla fine di ogni passaggio dello scorrimento; senza, il testo scorre in silenzio |
ib_auto_height | boolean | false | Opt-in: il blocco misura la propria altezza ideale e ridimensiona l'userobject; vedere Base comune |
ib_auto_width | boolean | false | Opt-in: l'userobject prende la LARGHEZZA del proprio testo — la riga più lunga, senza a capo (i [br] contano), più margine e bordo; un nuovo testo, un carattere o un margine lo ridimensionano di nuovo, e ue_auto_width indica la larghezza adottata. Un testo scorrevole (ib_marquee) non ha larghezza naturale e non ne riporta alcuna |
ib_follow_end | boolean | false | Opt-in, per un registro scritto con of_append_text: la vista resta IN FONDO man mano che arrivano le righe — tranne se il lettore è risalito a leggere una riga più vecchia: non ne viene mai strappato via |
is_theme_style | string | "" | Stile visivo del componente (costanti THEME_STYLE_*); vuoto = quello dell'applicazione, seguito a ogni cambio |
is_theme_mode | string | "" | Variante chiara o scura (costanti THEME_MODE_*); 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) |
is_tooltip | string | "" | Tooltip semplice mostrato al passaggio del mouse sul componente |
is_super_tooltip_title | string | "" | Titolo del tooltip avanzato (prevale su is_tooltip) |
is_super_tooltip_text | string | "" | Testo del tooltip avanzato (markup avanzato accettato) |
is_super_tooltip_image | string | "" | Immagine del tooltip avanzato |
Metodi #
| Metodo | Ruolo |
|---|---|
of_reset ( ) | Riporta tutte le proprietà ai valori predefiniti e svuota il testo. 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 |
of_refresh_parent_color ( ) | Rilegge il colore dell'oggetto su cui è posato il blocco. Con il_back_color e ii_corner_radius, gli angoli arrotondati mostrano quel colore, letto quando queste due proprietà vengono impostate: la chiami dopo aver cambiato il BackColor della Sua finestra, o spostato il blocco verso un altro padre. Restituisce 0 una volta inviato, -2 se il componente non è creato |
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. Restituisce 0 una volta inviato, -2 se il componente non è creato |
of_append_text (string as_markup) | Aggiunge UNA riga alla fine del testo, per un registro: solo quella riga parte verso il componente e solo essa viene disegnata — riscrivere is_text a ogni riga rinviava e ridisegnava l'intero registro. as_markup accetta lo stesso markup di is_text; riletto, is_text contiene tutte le righe, unite da [br]. Con ib_follow_end la vista resta in fondo. Restituisce 0 una volta inviato, -2 se il componente non è creato |
Event #
| Event | Attivato quando |
|---|---|
ue_clicked ( ) | Clic sinistro sul blocco — non attivato su un'area [action] o [hyperlink] (nessun doppione), sull'intestazione di un [foldarea] (ripiegare non genera nulla), né dopo una selezione di testo |
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_key) | È stata cliccata un'area [action=id]: sta a Lei collegarvi il Suo codice. L'area si raggiunge anche da tastiera: Tab fino ad essa, poi Invio o Spazio |
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_auto_width (long al_width) | Il blocco ha preso una nuova larghezza, in unità PowerBuilder — richiede ib_auto_width = 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 (un'animazione ALL'INTERNO del testo non conta mai come passaggio) — richiede ib_track_cycle = true |
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.
// Congelare la visualizzazione mentre si imposta tutto
uo_header.of_set_redraw(/*on*/ false)
// Il titolo, centrato
uo_header.is_text = "[b]Cruscotto delle vendite"
uo_header.is_align = uo_header.ALIGN_CENTER
// Sfondo pieno e testo bianco leggibile
uo_header.il_back_color = RGB(/*red*/ 60, /*green*/ 110, /*blue*/ 190)
uo_header.il_text_color = RGB(/*red*/ 255, /*green*/ 255, /*blue*/ 255)
uo_header.ii_padding = 14
// Il blocco aderisce al suo contenuto : si legge come una barra del titolo
uo_header.ib_auto_height = true
// Tutto viene disegnato in una volta
uo_header.of_set_redraw(/*on*/ true)
// event ue_auto_height di uo_header
of_reposition_below_header(al_height) // sposta il contenuto sotto l'intestazione
Testo formattato con collegamento e azione #
// Un link a una pagina web e un'azione gestita dalla Sua applicazione (ue_action)
uo_text.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_text : (string as_key)
choose case as_key
case "renew" ; of_open_renewal()
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 #
// Due sezioni comprimibili : la seconda parte compressa
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]"
// Il blocco si restringe quando una sezione viene compressa
uo_recap.ib_auto_height = true
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 #
// Il messaggio del banner
uo_banner.is_text = "[b]Informazione[/b] -- chiusura straordinaria del servizio venerdì 12."
// Modalita scorrimento, stile notiziario
uo_banner.ib_marquee = true
uo_banner.ii_marquee_speed = 90 // pixel al secondo
uo_banner.is_marquee_direction = uo_banner.MARQUEE_START
Lo scorrimento va in ciclo senza tempi morti. Per fermarlo, riporti ib_marquee a false: il testo riprende la sua impaginazione normale.
Una volta impostato ib_track_cycle = true, 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_banner.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
// Cio che la zona mostra, centrato
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
// Ogni file rilasciato, uno dopo l'altro
for li = 1 to UpperBound(as_files)
of_import(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(/*red*/ 21, /*green*/ 101, /*blue*/ 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 #
// Un testo che si comporta come un pulsante-link
uo_link.is_text = "Seleziona tutto"
uo_link.il_text_color = RGB(/*red*/ 21, /*green*/ 101, /*blue*/ 192)
uo_link.ii_padding = 8
uo_link.ii_corner_radius = 6
uo_link.ib_hover_effect = true // reagisce al passaggio del mouse come un pulsante
// event ue_clicked di uo_link
of_select_all()
Un registro scritto riga per riga #
Ogni chiamata invia solo la riga aggiunta; ib_follow_end tiene l'ultima in vista finché il lettore non risale.
// Once, when the window opens
uo_log.ib_follow_end = true
uo_log.is_text = "[b]Import[/b]"
// For every row imported : one line, sent alone
uo_log.of_append_text(/*markup*/ "Row " + String(ll_row) + " [color=#2e7d32]imported[/color]")
Un'etichetta larga quanto il suo testo #
// A status chip : background, rounded corners, and the width of its text
uo_status.is_text = "[b]Status :[/b] connected"
uo_status.il_back_color = RGB(/*red*/ 232, /*green*/ 245, /*blue*/ 233)
uo_status.ii_corner_radius = 12
uo_status.ib_auto_width = true
Buone pratiche #
- Un testo senza tag non comporta alcun costo aggiuntivo: non esiti a sostituire sistematicamente i Suoi
statictextdi PowerBuilder, anche per il testo semplice. - Preferisca
is_align = uo.ALIGN_STARTa"left": la Sua schermata resterà corretta se l'applicazione passa alla scrittura da destra a sinistra. ib_selectableresta disattivato per impostazione predefinita, come un'etichetta. Lo attivi solo dove la copia ha senso (numero di pratica, messaggio di errore tecnico).- Per un'intestazione, combini
il_back_color+ii_padding+ib_auto_height: il blocco si dimensiona da solo quando il testo cambia lunghezza. - Attivi
ib_track_mousesolo se scrive davvero il codice diue_mouse_enter/ue_mouse_leave. - Chiami
of_reset()prima di riutilizzare un blocco per un altro contenuto: senza di esso, uno sfondo, un bordo o la modalità scorrimento precedenti restano attivi.
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 |
of_is_created · of_is_ready · of_get_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 · of_component_name | Pilotare una proprietà per nome | 3.1 Il motore delle proprietà |
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.