PBToolboxAI v3 ← Site

stepbar — u_pbt_stepbar #

← Riferimento dei componenti · Sommario della guida

Sequenza di passaggi di una procedura guidata: i passaggi già compiuti, quello in corso e quelli ancora da affrontare, in orizzontale o in verticale.

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


In breve #

Userobjectu_pbt_stepbar
Classe degli itemn_pbt_stepbar_step (un passaggio)
Serve perMostrare all'utente a che punto si trova in una procedura guidata, in un modulo su più pagine, in un processo di approvazione
PrincipioLei dichiara i passaggi, poi sposta ii_current: gli stati si calcolano da soli

Avvio rapido #

// event open della finestra
uo_etapes.of_add_step(/*key*/ "compte",  /*etichetta*/ "Account")
uo_etapes.of_add_step(/*key*/ "profil",  /*etichetta*/ "Profilo")
uo_etapes.of_add_step(/*key*/ "paiement", /*etichetta*/ "Pagamento")
uo_etapes.of_add_step(/*key*/ "fin",     /*etichetta*/ "Conferma")

// Passaggio in corso (1 = il primo)
uo_etapes.ii_current = 1
// Pulsante Avanti della procedura guidata
uo_etapes.ii_current = uo_etapes.ii_current + 1

Il modello: un passaggio, tre stati automatici #

Un passaggio non ha uno stato da gestire a mano. Esso si deduce dalla sua posizione rispetto a ii_current:

PosizioneStatoResa
Prima del passaggio correntedone — terminatoPastiglia spuntata
Il passaggio correntecurrent — in corsoPastiglia messa in evidenza
Dopo il passaggio correntetodo — prossimoPastiglia numerata, tinta discreta

Un quarto stato, error, non si ottiene mai automaticamente: lo forza Lei su un passaggio che non è riuscito (vedere più avanti).


Proprietà #

ProprietàTipoPredefinitoRuolo
ii_currentinteger1Passaggio in corso, numerato a partire da 1
is_positionstring"top"Orientamento: top / bottom (sequenza orizzontale) oppure start / end (sequenza verticale) — costanti POSITION_TOP, POSITION_BOTTOM, POSITION_START, POSITION_END. START/END sono logiche e seguono il senso di scrittura
is_navigation_modestring"free"Ciò che un clic può raggiungere: NAV_FREE (qualunque passaggio, l'impostazione predefinita), NAV_BACKWARD (solo i passaggi già percorsi — tornare indietro, mai saltare avanti) oppure NAV_NONE (nulla: un semplice indicatore di avanzamento, guidato dal suo codice soltanto). Ciò che resta cliccabile solleva ue_step_clicked; la barra, invece, non si sposta mai su un clic
is_overflow_modestring"auto"Troppi passaggi per la larghezza: OVERFLOW_AUTO compatta la barra sotto una soglia leggibile per passaggio (ogni passaggio diventa un punto, solo quello corrente conserva l'etichetta, e tutti restano cliccabili), OVERFLOW_SCROLL conserva le etichette e fa scorrere, tenendo in vista il passaggio corrente, OVERFLOW_SHRINK le comprime fino ai puntini di sospensione. Una sequenza verticale non compatta mai
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

Proprietà di un passaggio — n_pbt_stepbar_step #

Ottenute tramite of_step(id):

ProprietàTipoPredefinitoRuolo
is_statestringSTATE_TODOForza lo stato del passaggio: STATE_TODO, STATE_CURRENT, STATE_DONE, STATE_ERROR. STATE_AUTO = ritorno al calcolo automatico; la rilettura restituisce lo stato effettivo del passaggio, non il forzamento
is_textstring—Cambia l'etichetta del passaggio, testo formattato con tag accettato
is_descriptionstring""Seconda riga del passaggio — « Facoltativo », una data, un importo. Testo formattato con tag accettato. Annunciata a un lettore di schermo come descrizione del passaggio, dopo il suo nome. Una stringa vuota la toglie; una barra compattata la abbandona per restare su una riga
is_imagestring""Icona mostrata al posto del numero del passaggio (forme accettate)
ib_enabledbooleantruePassaggio attivo; un passaggio disattivato non reagisce più al clic
ib_visiblebooleantrueNasconde il passaggio senza toglierlo dal modello

Metodi #

MetodoRuolo
of_add_step (string as_key, string as_label)Aggiunge un passaggio in fondo alla sequenza. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_add_step (string as_key, string as_label, string as_icon_file)Lo stesso, con l'icona al posto del numero del passaggio. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_add_step (string as_key, string as_label, string as_icon_file, string as_desc)Lo stesso, con l'icona e la seconda riga. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_insert_step (string as_key, string as_label, integer ai_index)Inserisce un passaggio nella posizione indicata (contata a partire da 1). Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_insert_step (string as_key, string as_label, string as_icon_file, integer ai_index)Lo stesso, con l'icona. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_insert_step (string as_key, string as_label, string as_icon_file, string as_desc, integer ai_index)Lo stesso, con l'icona e la seconda riga. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_move_step (string as_key, integer ai_index)Sposta un passaggio esistente. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_next ( )Passa al passaggio successivo, saltando quelli nascosti e disattivati — proprio quelli su cui ii_current + 1 atterrerebbe. Si ferma sull'ultimo raggiungibile. Il modo di navigazione non viene consultato: limita l'utente, non il suo codice. Nessuna domanda viene posta, ma ue_step_changed viene sollevato. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_previous ( )Torna al passaggio precedente, stesse regole. Dalla posizione « tutto terminato » torna sull'ultimo passaggio. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_remove_step (string as_key)Toglie un passaggio; gli altri conservano il proprio stato. Restituisce 0 una volta applicato, -5 per un argomento non valido (chiave vuota, indirizzo errato), -2 se il componente non è creato
of_clear_steps ( )Svuota la sequenza. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_step (string as_key) → n_pbt_stepbar_stepHandle di un passaggio, per impostarne le proprietà
of_reset ( )Svuota i passaggi e riporta tutte le proprietà ai valori predefiniti. Restituisce 0 una volta applicato, -2 se il componente non è creato
of_set_redraw (boolean)Raggruppa una raffica di modifiche in un solo 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

Il terzo argomento è l'icona, come ovunque nella libreria (of_add_item della listbar, of_add_panel della statusbar, of_add_tile della tilesbox). La seconda riga viene dopo.


Event #

EventAttivato quando
ue_step_clicked (integer ai_index, string as_key)L'utente ha cliccato un passo. La barra non si sposta: scrivete questo evento, fate i vostri controlli, poi impostate ii_current se accettate
ue_step_changed (integer ai_from_index, string as_from_key, integer ai_index, string as_key)La barra si è spostata: ii_current è stato impostato, oppure of_next / of_previous chiamato. Un clic non arriva mai qui
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 NON naviga da sola. Un clic riferisce (ue_step_clicked) e nient'altro: la barra resta dov'è. Siete voi a spostarla, impostando ii_current o chiamando of_next / of_previous — e quegli spostamenti si annunciano con ue_step_changed.

Questa divisione non è un vincolo, è il senso del componente: una barra di passi rispecchia un percorso che la vostra applicazione guida. Raggiungere il passo 3 di solito significa che un modulo era valido e che un record è stato salvato; nessun clic può deciderlo al vostro posto.

ue_step_clicked porta il passo mirato, ue_step_changed porta in più il passo lasciato — per identificatore funzionale quanto per rango. È questa coppia che permette di scrivere «indietro sì, saltare avanti no» in una riga.

is_navigation_mode resta il filtro del clic: NAV_NONE non solleva più nulla, NAV_BACKWARD lascia cliccare soltanto i passi già percorsi.


Da tastiera #

La barra è un solo arresto di tabulazione: una volta raggiunta, si percorre interamente da tastiera.

TastoEffetto
FrecceSpostano il fuoco da un passaggio all'altro, ciclando; i passaggi nascosti, disattivati o fuori portata (vedere is_navigation_mode) vengono saltati
Inizio / FinePrimo / ultimo passaggio raggiungibile
Invio o SpazioRiferisce un clic sul passaggio con il fuoco (ue_step_clicked) — la barra non si sposta per questo

Le frecce non selezionano, a differenza delle schede di un dockcontainer. Raggiungere un passaggio pone una domanda alla sua applicazione: percorrere una barra di otto passaggi ne invierebbe otto, e un rifiuto a metà strada lascerebbe il fuoco e il passaggio corrente disallineati.

Ogni passaggio è un vero pulsante: porta la propria etichetta e il proprio stato nel nome pronunciato ("Account - completato"), il passaggio corrente è contrassegnato con aria-current="step", e un passaggio disattivato è un pulsante disattivato — non soltanto un testo in grigio. Il pallino numerato non viene letto ad alta voce: un numero d'ordine non insegna nulla.


Esempi #

Avanzare nella procedura guidata #

uo_etapes.of_add_step(/*key*/ "compte",   /*etichetta*/ "Account")
uo_etapes.of_add_step(/*key*/ "profil",   /*etichetta*/ "Profilo")
uo_etapes.of_add_step(/*key*/ "paiement", /*etichetta*/ "Pagamento")
uo_etapes.of_add_step(/*key*/ "fin",      /*etichetta*/ "Conferma")

// I passaggi 1 e 2 passano automaticamente a "terminato" (spunta)
uo_etapes.ii_current = 3

Segnalare un passaggio in errore #

// Lo stato di un passaggio si forza tramite il suo handle
uo_etapes.of_step(/*key*/ "profil").is_state = n_pbt_stepbar_step.STATE_ERROR
// Una volta corretto il problema, si restituisce la mano al calcolo automatico
uo_etapes.of_step(/*key*/ "profil").is_state = n_pbt_stepbar_step.STATE_AUTO

Sequenza verticale #

// left / right : la sequenza si disegna verticalmente, ideale a lato di un modulo
uo_etapes.is_position = uo_etapes.POSITION_START

// Il TERZO argomento e l'icona : prende il posto del numero del passaggio
uo_etapes.of_add_step(/*key*/ "compte", /*etichetta*/ "Account", /*icona*/ "mono:img\packimages.dll:svg/samples/folder-open")

Etichette arricchite su due righe #

// L'etichetta di un passaggio accetta il testo formattato con tag
uo_etapes.of_add_step("compte",   "[b]Account[/b][br][size=9](accesso)")
uo_etapes.of_add_step("profil",   "[b]Profilo[/b][br][size=9](i suoi dati)")
uo_etapes.of_add_step("paiement", "[b]Pagamento[/b][br][size=9](carta)")
uo_etapes.of_add_step("fin",      "[accent][b]Terminato[/b][/accent]")

uo_etapes.ii_current = 2
// event ue_step_clicked de uo_etapes : (integer ai_index, string as_key)
// La barra NON si e spostata : qui si decide.
if ai_index > uo_etapes.ii_current then
    MessageBox("Procedura guidata", "Completate il passo corrente prima di proseguire.")
    return
end if
uo_etapes.ii_current = ai_index

Passaggio condizionale #

// Un cliente gia noto non ha un passaggio "Profilo" da compilare
uo_etapes.of_step("profil").ib_visible = false

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à

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