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_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 #
| 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 (150 = 1,5 righe; 0 = predefinito) |
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 e copiare il testo (disattivato per impostazione predefinita, come un'etichetta) |
Aspetto del blocco (look da « intestazione ») #
| Proprietà | Tipo | Predefinito | Ruolo |
|---|---|---|---|
il_back_color | long | -1 | Sfondo del blocco RGB() (-1 = sfondo del tema) |
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 |
ii_padding | integer | 0 | Margine interno in pixel (0 = valore del tema) |
ib_hover_effect | boolean | false | Opt-in: leggero scurimento al passaggio del mouse, 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 |
is_marquee_direction | string | MARQUEE_START | Senso dello scorrimento: MARQUEE_START (verso l'inizio della lettura) o MARQUEE_END. Alias fisici "left" / "right" accettati |
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 |
ib_track_mouse | boolean | false | Opt-in: attiva ue_mouse_enter / ue_mouse_leave |
ib_auto_height | boolean | false | Opt-in: il blocco misura la propria altezza ideale e ridimensiona l'userobject; vedere Base comune |
is_theme_style | string | fluent | Stile visivo del componente (costanti THEME_STYLE_*) |
is_theme_mode | string | light | Variante chiara o scura (costanti THEME_MODE_*) |
il_theme_accent | long | -1 | Colore d'accento di questo componente (-1 = accento 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 |
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 #
| Event | Attivato 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 #
- 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.