PBToolboxAI v5 ← Site

statusbar — u_pbt_statusbar #

← Riferimento dei componenti · Sommario della guida

Barra di stato a pannelli: testo formattato, icone, larghezze fisse o automatiche, allineamento a sinistra o a destra, pannelli cliccabili, mini barra di avanzamento e stati colorati.

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


In breve #

Userobjectu_pbt_statusbar
Classe degli itemn_pbt_statusbar_panel (pannello) · n_pbt_statusbar_menu_item (voce di elenco)
Serve perMostrare in fondo alla finestra lo stato dell'applicazione: contesto, avanzamento, avvisi discreti
Opzioni opt-inib_announce

Avvio rapido #

// event open della finestra
// of_add_panel(chiave, testo, icona, allineamento, larghezza)
// la chiave ritrova il pannello in seguito ; larghezza 0 = adattata al testo, -1 = prende lo spazio libero
uo_status.of_add_panel(/*key*/ "state", /*text*/ "Ready",          /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ -1)
uo_status.of_add_panel(/*key*/ "pos",   /*text*/ "Line 12, Col 4", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 0)
uo_status.of_add_panel(/*key*/ "clock", /*text*/ "12:00",          /*icon_file*/ "", /*align*/ uo_status.ALIGN_END,   /*width*/ 140)
// Aggiornare un pannello in qualsiasi momento, tramite il suo identificatore
uo_status.of_panel(/*key*/ "state").is_text = "Salvataggio in corso..."

Il modello: pannelli con chiave #

La barra è una sequenza di pannelli, aggiunti nell'ordine. Alla creazione un pannello riceve un identificatore: è tramite questo che lo si ritrova in seguito per cambiarne il testo, l'icona o lo stato.

L'identificatore è una chiave di indirizzamento, non un interruttore di interattività:

// Il pannello mostra un nuovo testo
uo_status.of_panel(/*key*/ "state").is_text = "3 record modificati"

Vedere Base comune · Gli item.


Proprietà #

ProprietàTipoPredefinitoRuolo
ib_show_resize_gripbooleanfalseMostra la maniglia di ridimensionamento nell'angolo di fine barra; trascinarla ridimensiona la finestra che porta la barra — un foglio MDI, non la sua cornice — dal suo angolo in basso a destra (in basso a sinistra nella lettura da destra a sinistra). È disegnata solo quando la barra occupa l'angolo in basso di quella finestra e la finestra si può ridimensionare: ingrandita, senza bordo ridimensionabile o con la barra posta più in alto, scompare e la proprietà resta impostata
ib_announcebooleanfalsePer i lettori di schermo: a true, un testo o uno stato che cambia su un pannello visualizzato viene letto (una regione live cortese, che lascia al lettore finire la frase). Un messaggio di of_flash_panel è sempre letto, qualunque cosa dica questa proprietà: un messaggio è fatto per essere letto. Disattivato per impostazione predefinita: un orologio al secondo parlerebbe tutto il giorno
is_helpstring""La MicroHelp di una cornice PowerBuilder: ciò che scriveva SetMicroHelp. Mostrata SOPRA il testo del pannello che is_help_panel nomina — il suo is_text rilegge sempre il proprio testo —; "" restituisce al pannello il suo testo. Un messaggio di of_flash_panel passa davanti finché dura
is_help_panelstring""Chiave del pannello che mostra is_help — di solito il primo, quello di Ready. Vuoto = nessun pannello di aiuto: is_help aspetta che ne venga nominato uno
is_theme_stylestring""Stile visivo del componente (costanti THEME_STYLE_*); vuoto = quello dell'applicazione, seguito a ogni cambio
is_theme_modestring""Variante chiara o scura (costanti THEME_MODE_*); vuoto = quella dell'applicazione, seguita a ogni cambio
il_theme_accentlong-1Colore d'accento di questo componente (-1 = accento dell'applicazione, o quello 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_add_panel (string as_key, string as_text, string as_icon_file, string as_align, integer ai_width)Aggiunge un pannello in fondo alla barra; una larghezza di -1 ne fa una molla che prende lo spazio libero (ib_spring). Restituisce 0 una volta applicato, -5 se la chiave è già presa, contiene / o ` o comincia con __ (una chiave vuota aggiunge un pannello decorativo), -2` se il componente non è creato
of_add_sep ( )Inserisce una interruzione di gruppo nella posizione corrente. I pannelli si separano già con un filetto sottile : questa è più larga, così i pannelli prima e dopo si leggono come due gruppi. Da chiamare tra due of_add_panel ; apre il gruppo del pannello che la segue (dal lato di quello precedente quando viene per ultima). Un separatore non è un pannello : non conta né per of_count / of_keys_at né nelle posizioni. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_insert_panel (string as_key, string as_text, string as_icon_file, string as_align, integer ai_width, integer ai_index)Inserisce un pannello in una posizione precisa, contata in pannelli a partire da 1 (0 o meno = per primo, oltre l'ultimo = in fondo). Stessi rifiuti di of_add_panel. Restituisce 0 una volta applicato, -5 se la chiave è già presa o contiene / o `, -2` se il componente non è creato
of_move_panel (string as_key, integer ai_index)Sposta un pannello esistente in un'altra posizione, contata in pannelli a partire da 1. Restituisce 0 una volta applicato, -5 per una chiave vuota o mai data alla barra, -2 se il componente non è creato
of_remove_panel (string as_key)Elimina un solo pannello, con il suo elenco a discesa ; gli altri conservano il proprio stato. Restituisce 0 una volta applicato, -5 per una chiave vuota o mai data alla barra, -2 se il componente non è creato
of_panel (string as_key) → n_pbt_statusbar_panelRestituisce l'handle di un pannello (creato al primo accesso). Una chiave vuota (pannello decorativo), un indirizzo o un elenco non designano nulla: il loro handle non scrive da nessuna parte e si rilegge vuoto
of_flash_panel (string as_key, string as_text, long al_ms)Mostra un messaggio per al_ms millisecondi, poi rimostra il testo del pannello (al_ms ≤ 0 = 2 secondi). Il messaggio passa SOPRA il testo: is_text si rilegge sempre come il testo del pannello, mai come il messaggio. Restituisce 0 una volta applicato, -5 per una chiave vuota, un indirizzo o una chiave mai data alla barra, -2 se il componente non è creato
of_add_menu_item (string as_keys, string as_label) · (as_keys, as_label, as_image)Aggiunge una voce all'elenco a discesa di un pannello : as_keys ha due livelli, il pannello poi la voce ("enc/utf8"). Dalla prima voce il pannello diventa un selettore : il clic apre l'elenco, e la scelta torna con ue_panel_menu_clicked con lo stesso indirizzo. Un'etichetta vuota riprende la chiave. Restituisce 0 una volta applicato, -5 per un indirizzo che non ha due livelli, un pannello mai dato alla barra o una voce già presa, -2 se il componente non è creato
of_insert_menu_item (string as_keys, string as_label, integer ai_index) · (as_keys, as_label, as_image, ai_index)Inserisce una voce in una posizione precisa, contata in voci a partire da 1: un separatore non lo è. Restituisce 0 una volta applicato, -5 su un indirizzo che non ha due livelli, una chiave che comincia con __, un pannello che la barra non ha mai ricevuto o una voce già presa, -2 se il componente non è creato
of_add_menu_separator (string as_key)Linea di separazione nell'elenco del pannello as_key. Un separatore non ha indirizzo: solo of_clear_menu lo rimuove, e un elenco fatto di soli separatori non è un elenco (né freccia né clic). Restituisce 0 una volta applicato, -5 per una chiave vuota o un pannello mai dato alla barra, -2 se il componente non è creato
of_remove_menu_item (string as_keys)Rimuove una sola voce; partita l'ultima, il pannello ritrova il comportamento che gli dà ib_clickable. Restituisce 0 una volta applicato, -5 su un indirizzo che la barra non ha mai ricevuto, -2 se il componente non è creato
of_move_menu_item (string as_keys, integer ai_index)Sposta una voce in un'altra posizione della sua lista, contata in voci a partire da 1: un separatore non lo è. Restituisce 0 una volta applicato, -5 su un indirizzo che la barra non ha mai ricevuto, -2 se il componente non è creato
of_menu_item (string as_keys) → n_pbt_statusbar_menu_itemRestituisce l'handle di una voce (creato al primo accesso), per disattivarla, spuntarla o rinominarla. Un indirizzo senza due livelli non designa nulla : il suo handle non scrive da nessuna parte e si rilegge vuoto
of_clear_menu (string as_key)Rimuove l'intera lista a discesa; il pannello ritrova il comportamento che gli dà ib_clickable. Restituisce 0 una volta applicato, -5 su una chiave vuota, un indirizzo o un pannello che la barra non ha mai ricevuto, -2 se il componente non è creato
of_dock_bottom ( )Posiziona la barra lungo il bordo INFERIORE di ciò che la porta (una finestra, una scheda, un userobject), su tutta la larghezza; la sua altezza non cambia. Da chiamare nell'evento resize della finestra. In una cornice MDI, ridimensionate mdi_1 allo spazio che resta: WorkSpaceHeight() - uo_status.Height. Restituisce 0 una volta posizionata, -5 se la barra non è né su una finestra né su un userobject, -2 se il componente non è creato
of_clear ( )Svuota la barra: tutti i pannelli e tutti i separatori. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_reset ( )Svuota la barra e riporta le proprietà ai valori predefiniti. Restituisce 0 una volta applicato, -2 se il componente non è creato

Gli argomenti di of_add_panel #

ArgomentoValoriEffetto
as_keylibero, o ""Chiave del pannello, quella con cui lo si ritrova in seguito. Vuoto = pannello decorativo, né indirizzabile né cliccabile
as_texttestoContenuto del pannello. Il testo formattato con tag è accettato
as_icon_filepercorso di immagine, oppure ""Icona mostrata prima del testo (forme accettate)
as_alignALIGN_START (predefinito) oppure ALIGN_ENDLato verso cui il pannello viene spinto. Valori logici: START = inizio della lettura (a sinistra nella scrittura da sinistra a destra). Gli alias fisici "left" / "right" restano accettati
ai_widthpixel, 0 oppure -1Larghezza fissa. 0 = il pannello si adatta al proprio contenuto; -1 = una molla che prende tutto lo spazio libero della barra (ib_spring)

Su un pannello — n_pbt_statusbar_panel #

MembroTipoPredefinitoRuolo
is_textstring""Testo del pannello, testo formattato con tag accettato
is_imagestring""Icona del pannello, modificabile in qualsiasi momento
ib_enabledbooleantruePannello disattivato e non cliccabile
ib_visiblebooleantruePannello nascosto, senza essere rimosso dalla barra
ii_progressinteger—Mini barra di avanzamento nel pannello, accanto al testo, da 0 a 100 (oltre 100 la barra è piena e si rilegge 100); un valore negativo la fa sparire. Si rilegge -1 quando il pannello non ha barra (e 0 per una barra a 0 %)
is_statestring""Stato semantico del pannello, che ne colora il testo e ne segna il bordo iniziale: vedere le costanti qui sotto. Qualsiasi altro valore vale « nessuno stato » e si rilegge vuoto; un pannello disattivato è in grigio, segno di stato compreso
ib_indeterminatebooleanfalseBarra animata senza valore, per un'elaborazione di durata sconosciuta. Indipendente da ii_progress, che resta la percentuale esatta
ib_clickablebooleanfalseIl pannello reagisce al clic. Opt-in: un pannello resta inerte finché non lo si chiede, pur conservando la sua chiave — è pilotato e porta un suggerimento. Un pannello con elenco a discesa è cliccabile d'ufficio
ib_springbooleanfalseMolla: il pannello prende tutto lo spazio libero della barra, e il suo testo è il primo a essere troncato quando la finestra si restringe — il pannello Ready che cresce con la finestra. Più molle si dividono lo spazio; una larghezza fissa cede il passo
is_tooltipstring""Tooltip del pannello (markup di testo formattato accettato). Appare anche su un pannello disattivato, per dire perché. Senza tooltip, un pannello il cui testo è troncato mostra il testo intero al passaggio del mouse
is_super_tooltip_titlestring""Titolo del tooltip ricco del pannello (prevale su is_tooltip)
is_super_tooltip_textstring""Testo del tooltip ricco del pannello (markup accettato)
is_super_tooltip_imagestring""Immagine del tooltip ricco del pannello
il_accentlong-1Accento di questo pannello: il riempimento della sua mini barra di avanzamento. -1 = l'accento del componente
il_back_colorlong-1Sfondo di questo pannello a riposo. -1 = quello della barra
il_text_colorlong-1Colore del testo di questo pannello a riposo. Uno stato (is_state) o un pannello disattivato dipinge prima il proprio colore: il significato prevale sul colore. -1 = quello della barra
il_back_color_hoverlong-1Sfondo sotto il puntatore — solo un pannello cliccabile (ib_clickable) risponde al puntatore. -1 = quello del tema
il_text_color_hoverlong-1Colore del testo sotto il puntatore, su un pannello cliccabile. -1 = quello del tema

Su una voce di elenco — n_pbt_statusbar_menu_item #

Ottenuta con of_menu_item(/*keys*/ "enc/utf8"): l'indirizzo ha due livelli, il pannello poi la voce. L'elenco è un menu nativo: una proprietà cambiata mentre è aperto si vede all'apertura successiva.

MembroTipoPredefinitoRuolo
is_labelstring""Testo della voce
is_imagestring""Immagine prima del testo, modificabile in ogni momento
ib_enabledbooleantrueVoce disattivata: mostrata, ma impossibile da scegliere
ib_checkedbooleanfalseSpunta davanti alla voce, per il valore in uso
ib_visiblebooleantrueVoce tolta dall'elenco senza essere rimossa: rimostrarla non richiede altro

Le proprietà che ogni handle di item eredita — is_tooltip, is_super_tooltip_title, is_super_tooltip_text, is_super_tooltip_image, il_accent, il_back_color, il_text_color, il_back_color_hover, il_text_color_hover — sono senza effetto su una voce: la lista è un menu nativo, che non mostra né tooltip né colori di una voce. Sono ignorate e si rileggono vuote (-1 per un colore). Una posizione in una lista conta voci: un separatore non lo è, e of_count("enc"), of_keys_at("enc", n), of_has("enc/utf8") percorrono le voci di un pannello. Una chiave che comincia con __ è riservata al componente.

// The menu of the encoding panel, entry by entry
uo_status.of_add_menu_item(/*keys*/ "enc/utf8", /*label*/ "UTF-8")
uo_status.of_add_menu_item(/*keys*/ "enc/ansi", /*label*/ "ANSI")
uo_status.of_menu_item(/*keys*/ "enc/utf8").ib_checked = true     // the current value
uo_status.of_menu_item(/*keys*/ "enc/ansi").ib_enabled = false    // not available here

Costanti di stato #

CostanteValoreUso
STATE_NONE""Nessuno stato: aspetto normale
STATE_INFO"info"Informazione
STATE_WARNING"warning"Avvertimento
STATE_ERROR"error"Errore
STATE_SUCCESS"success"Successo

Come per ogni proprietà a valori predefiniti, utilizzi la costante anziché la stringa:

// The panel takes the colors of a warning
uo_status.of_panel(/*key*/ "state").is_state = n_pbt_statusbar_panel.STATE_WARNING

Event #

EventAttivato quando
ue_panel_clicked (string as_key)Viene cliccato un pannello cliccabile (ib_clickable)
ue_panel_double_clicked (string as_key)Un pannello cliccabile riceve un doppio clic — la scorciatoia classica dietro Riga 12, Col 4 che apre un "Vai alla riga". Mai su un pannello con elenco a discesa: il suo primo clic ha aperto l'elenco
ue_panel_rclicked (string as_key, long al_x, long al_y)Un pannello con una chiave riceve un clic destro — cliccabile o no (un menu contestuale non è un'attivazione), mai se è disattivato. Un solo evento per clic destro. al_x e al_y sono pixel schermo ; per un menu PowerBuilder, PopMenu(PointerX(), PointerY()) della vostra finestra. Da tastiera, il tasto Menu o Maiusc+F10 sul pannello che ha il focus lo solleva anch'esso, all'angolo in basso a sinistra del pannello
ue_panel_menu_clicked (string as_keys)Una voce di un elenco a discesa di pannello è stata scelta (vedere of_add_menu_item). as_keys porta i due livelli: il pannello, poi la voce — "enc/utf8". Da tastiera, Invio, Spazio, Freccia su o giù aprono l'elenco. Un pannello rimosso, disattivato o nascosto mentre il suo elenco è aperto lo chiude, e non viene attivato nulla
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)

Da tastiera #

La barra è un solo arresto di tabulazione: vi entrano soltanto i pannelli fatti per essere cliccati, e le frecce li percorrono.

TastoEffetto
FreccePassano al pannello interattivo precedente / successivo, ciclando; i pannelli di sola visualizzazione e quelli disattivati vengono saltati
Inizio / FinePrimo / ultimo pannello interattivo
Invio o SpazioAttiva il pannello — vale a dire ue_panel_clicked, oppure l'apertura del suo elenco a discesa se ne ha uno
Su / GiùSu un pannello che porta una lista a discesa: la aprono, sopra il pannello
Tasto Menu o Maiusc+F10ue_panel_rclicked del pannello che ha il focus, al suo angolo in basso a sinistra

Un pannello che si limita a visualizzare non è un controllo: non è né focalizzabile né annunciato come tale. Un pannello cliccabile ma disattivato resta invece annunciato come non disponibile, anziché passare per testo. Una barra di avanzamento annuncia il proprio valore, e una indeterminata non ne annuncia alcuno — quell'assenza è il senso della parola. Un pannello cliccabile disattivato mostra sempre il suo tooltip — quello che dice perché è disattivato — e un pannello con lista dice se la sua lista è aperta.

Un lettore di schermo sente i messaggi di of_flash_panel senza che il focus si sposti: è il ruolo di una barra di stato (una regione live cortese). Gli altri cambiamenti — un nuovo testo, un nuovo stato — sono letti solo con ib_announce = true; altrimenti un orologio al secondo parlerebbe tutto il giorno.

Il focus sopravvive alla ricostruzione della barra: un pannello aggiunto, rimosso, nascosto o disattivato la ricostruisce, e il focus torna sullo stesso pannello (sul successivo quando non può più prenderlo). Un testo, uno stato o un avanzamento cambiano sul posto, senza ricostruire nulla — un orologio al secondo non ruba mai il focus.


Esempi #

Larghezze fisse e larghezze automatiche #

// Larghezza 0 : il pannello occupa esattamente lo spazio del suo testo
uo_status.of_add_panel(/*key*/ "", /*text*/ "Pannello adattato al contenuto", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 0)

// Larghezza fissa in pixel : utile quando il testo cambia spesso,
// affinche i pannelli vicini non si spostino a ogni aggiornamento
uo_status.of_add_panel(/*key*/ "pos", /*text*/ "Riga 1, Col 1", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 150)

// Un pannello spinto all'estremita opposta
uo_status.of_add_panel(/*key*/ "clock", /*text*/ "12:00", /*icon_file*/ "", /*align*/ uo_status.ALIGN_END, /*width*/ 140)

Icone e pannelli cliccabili #

// Una chiave rende il pannello indirizzabile ; ib_clickable lo rende cliccabile
uo_status.of_add_panel(/*key*/ "save", /*text*/ "Salvato", /*icon_file*/ "mono:img\save.svg", /*align*/ uo_status.ALIGN_START, /*width*/ 0)
uo_status.of_add_sep()   // linea di separazione tra due gruppi di pannelli
uo_status.of_add_panel(/*key*/ "conn", /*text*/ "Connesso",   /*icon_file*/ "mono:img\plug.svg", /*align*/ uo_status.ALIGN_START, /*width*/ 0)
uo_status.of_add_panel(/*key*/ "user", /*text*/ "Alex Martin",  /*icon_file*/ "mono:img\user.svg", /*align*/ uo_status.ALIGN_END, /*width*/ 160)

// Solo questi due rispondono al clic (ue_panel_clicked)
uo_status.of_panel(/*key*/ "conn").ib_clickable = true
uo_status.of_panel(/*key*/ "user").ib_clickable = true
// event ue_panel_clicked di uo_status
choose case as_key
    case "conn" ; open(w_connection_settings)
    case "user" ; open(w_profile)
end choose

Testo formattato in un pannello #

I pannelli accettano il testo formattato con tag: stili, colori e piccole immagini direttamente nel testo.

// Un benvenuto a sinistra
uo_status.of_add_panel(/*key*/ "", /*text*/ "Benvenuto [b]in[/b] [accent]PBToolboxAI[/accent]", &
                       /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 0)

// Lo stato della connessione a destra
uo_status.of_add_panel(/*key*/ "", /*text*/ "[green]In linea[/green] [picture=mono:img\plug.svg,14,14]", &
                       /*icon_file*/ "", /*align*/ uo_status.ALIGN_END, /*width*/ 0)
// Variabili locali
long ll_changed

// Il testo formattato vale anche per gli aggiornamenti
ll_changed = dw_list.ModifiedCount()
uo_status.of_panel(/*key*/ "state").is_text = "[b]" + String(ll_changed) + "[/b] records changed"

Seguire un'elaborazione lunga #

// Local variables
n_pbt_statusbar_panel lnv_import

// Il pannello di importazione, poi il suo handle per seguirlo
uo_status.of_add_panel(/*key*/ "import", /*text*/ "Importazione", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 220)
lnv_import = uo_status.of_panel(/*key*/ "import")
// Variabili locali
long ll_percent

// Nel ciclo di elaborazione : la mini barra segue l'avanzamento
for ll_percent = 0 to 100 step 25
    lnv_import.ii_progress = ll_percent
    lnv_import.is_text     = "Import " + String(ll_percent) + " %"
next
// Alla fine : nascondere la mini barra e segnalare il risultato
lnv_import.ii_progress = -1                       // valore negativo = barra nascosta
lnv_import.is_text     = "Importazione completata"
lnv_import.is_state    = lnv_import.STATE_SUCCESS

Segnalare un avviso discreto #

// Local variables
n_pbt_statusbar_panel lnv_panel

// Il pannello della connessione
lnv_panel = uo_status.of_panel(/*key*/ "conn")

// Non in linea : il pannello segnala un errore ; connesso : torna normale
if not ib_connected then
    lnv_panel.is_text  = "Non in linea"
    lnv_panel.is_state = lnv_panel.STATE_ERROR
else
    lnv_panel.is_text  = "Connesso"
    lnv_panel.is_state = lnv_panel.STATE_NONE   // ritorno all'aspetto normale
end if

Adattare la barra al contesto #

// Nascondere un pannello senza eliminarlo : ritrovera il suo posto piu tardi
uo_status.of_panel(/*key*/ "user").ib_visible = ib_user_signed_in

// Disattivarlo quando l'azione corrispondente non ha senso
uo_status.of_panel(/*key*/ "save").ib_enabled = ib_document_open

// Riorganizzare : mettere il pannello di stato in testa (posizioni contate a partire da 1)
uo_status.of_move_panel(/*key*/ "state", /*index*/ 1)

// Rimuovere un pannello diventato inutile
uo_status.of_remove_panel(/*key*/ "import")

La maniglia di ridimensionamento #

// Trascinare la maniglia d'angolo ridimensiona la finestra che porta la barra (nascosta quando e ingrandita)
uo_status.ib_show_resize_grip = true

Un pannello che prende lo spazio libero #

Come il pannello « Pronto » di ogni barra di stato Windows: cresce con la finestra, spinge i pannelli di fine in fondo, ed è il suo testo il primo a essere troncato quando manca spazio.

// Una larghezza di -1 : il pannello prende tutto lo spazio libero
uo_status.of_add_panel(/*key*/ "state", /*text*/ "Ready", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ -1)
uo_status.of_add_panel(/*key*/ "clock", /*text*/ "12:00", /*icon_file*/ "", /*align*/ uo_status.ALIGN_END, /*width*/ 140)

// La stessa cosa su un pannello che esiste gia
uo_status.of_panel(/*key*/ "state").ib_spring = true

Posizionare la barra in fondo alla finestra #

of_dock_bottom la posa lungo il bordo inferiore di ciò che la porta, su tutta la larghezza: basta una chiamata nell'evento resize. In una cornice MDI, i fogli si dividono ciò che resta sopra.

// evento resize della finestra : la barra segue il bordo inferiore
uo_status.of_dock_bottom()
// evento resize di una cornice MDI : la barra in basso, i fogli sopra
uo_status.of_dock_bottom()
mdi_1.Resize(WorkSpaceWidth(), WorkSpaceHeight() - uo_status.Height)

Riprendere la MicroHelp #

In una cornice MDI con MicroHelp, PowerBuilder scrive l'aiuto della voce di menu sotto il puntatore, e SetMicroHelp scrive il vostro. La barra riprende questo ruolo: nominate una volta il pannello che mostra l'aiuto (is_help_panel), poi scrivete is_help dove chiamavate SetMicroHelp. L'aiuto appare sopra il testo del pannello, e "" gli restituisce il testo.

// Una volta : il pannello che mostra l'aiuto (di solito il primo)
uo_status.is_help_panel = "state"

// Dove chiamavate SetMicroHelp : l'aiuto appare sopra Ready
uo_status.is_help = "Saving the order..."

// "" restituisce al pannello il suo testo
uo_status.is_help = ""
// evento ue_item_hover di una menubar (uo_menu) : l'aiuto della voce sotto il puntatore
uo_status.is_help = this.of_item(/*keys*/ as_keys).is_tooltip
// evento getfocus di un campo (sle_name) : il suo Tag e il suo aiuto
uo_status.is_help = sle_name.Tag

Buone pratiche #

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.

MembriRuoloDescritto in
of_count · of_keys_at · of_hasPercorrere ciò che il componente contiene3.2 Gli item
of_resetRiportare il componente a zero3.6 Riportare un componente a zero: of_reset()
of_register_shortcut · of_clear_shortcutsScorciatoie da tastiera del componente3.5 Le scorciatoie da tastiera
of_is_created · of_is_ready · of_get_last_errorSe è nato, se è pronto, cosa è fallito3.7 Diagnostica
of_save_as_png · of_save_as_jpgEsportare il rendering in immagine3.8 Esportare il rendering come immagine
of_set_redrawRaggruppare le modifiche in un solo ridisegno3.10 Buone pratiche
of_preload_iconsIcone mostrate senza ritardoVisualizzazione istantanea: of_icon
of_set_translationTradurre una dicitura del componente5.2 Adattare un'etichetta: of_set_translation
of_focus_webviewDare il focus al componente6.4 Tastiera e focus
of_print · of_print_to_pdfStampare, o scrivere un PDF6.9 Stampare
of_set_property · of_get_property · of_component_namePilotare una proprietà per nome3.1 Il motore delle proprietà
is_accessible_name · is_accessible_descriptionIl nome e la descrizione che dice un lettore di schermo3.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.


← Riferimento dei componenti · Sommario della guida