Scopo
Mostra un messaggio all'utente richiede una conferma da parte sua. Questa funzione può essere usata all'interno di una procedura per chiedere all'utente di prendere una decisione o di confermare una operazione.
Sintassi
boolean risposta = 0
//
risposta := MessageConfirm(messaggio)
//
risposta := MessageConfirm(messaggio)
Argomenti
Messaggio | Testo del messaggio da mostrare |
Valore di ritorno
Viene ritornato True se l'utente conferma l'operazione o False se l'utente non conferma.
Comunicazione Client-Server
Occorre tenere presente che l'applicazione web per richiedere ed ottenere una risposta dall'utente necessita di due step. L'elenco delle operazioni eseguite è il seguente:
Browser | Server |
Richiesta 1 | |
comunica che si è verificato un evento; | |
in risposta all'evento, viene eseguita la MessageConfirm. Siccome non si conosce ancora la risposta dell'utente, la funzione ritorna False e ordina al browser di mostrare la richiesta di conferma all'utente; | |
Richiesta 2 | |
mostra la richiesta all'utente e comunica la risposta; | |
riceve la risposta e risimula le istruzioni antecedenti alla richiesta di conferma per poter processare la risposta ottenuta. |
L'ultima azione del server cerca di riscatenare l'evento o la procedura che contiene la chiamata alla MessageConfirm, utilizzando gli stessi dati di input della volta precedente.
Questo implica che questa funzione è adatta ad essere usata in situazioni ripetibili come l'esecuzione di un comando. È invece sconsigliato il suo utilizzo in eventi come BeforeInsert, AfterInsert, AfterCommit etc. che non possono essere notificati più volte a seguito degli stessi dati di input. In tal caso l'applicazione non sarà in grado di utilizzare la risposta ottenuta dall'utente.
Note
- Dalla versione 8.5 è possibile distinguere la non risposta dell'utente dalla risposta negativa grazie alla MessageConfirmEx.
-
In RD3, per poter mostrare del testo su più righe sarebbe necessario utilizzare il tag HTML
</br>
, ma per facilitare la portabilità delle applicazione da RD3 il sistema sostituisce automaticamente i \n con il tag HTML.
Esempio di codice
// ****************************************************************************
// Evento notificato dal pannello il book (report) legato al pannello sta per
// essere stampato.
// ****************************************************************************
event Prodotti.Prodotto.OnPrint(
inout boolean Cancel // Impostando a True questo parametro si an...
inout int PrintDestination // Puoi modificare la destinazione del repo...
inout boolean SetWhereClause // Imposta a False questo parametro per evi...
)
{
Cancel := True
//
// Chiedo conferma
if NOT(MessageConfirm(FormatMessage(La stampa impiegherà |1 secondi per
essere completata. Sei sicuro di voler proseguire?, Prodotto.TotalRows()
, ??, ??, ??, ??)))
{
return
}
//
// Segnalo all'utente che è iniziata la stampa
EsempiMS.StartPhase(Prodotto.TotalRows(), Stampa in corso...
<br><br>Attendere prego, True)
//
// Lancio la stampa
this.StampaAnnullata := False
Stampa.Print(ONE, --(ONE))
//
// Se non è stata annullata
if NOT(this.StampaAnnullata)
{
// Apro il documento
EsempiMS.OpenDocument(Stampa.WebFileName(), ??, ??)
}
}
// Evento notificato dal pannello il book (report) legato al pannello sta per
// essere stampato.
// ****************************************************************************
event Prodotti.Prodotto.OnPrint(
inout boolean Cancel // Impostando a True questo parametro si an...
inout int PrintDestination // Puoi modificare la destinazione del repo...
inout boolean SetWhereClause // Imposta a False questo parametro per evi...
)
{
Cancel := True
//
// Chiedo conferma
if NOT(MessageConfirm(FormatMessage(La stampa impiegherà |1 secondi per
essere completata. Sei sicuro di voler proseguire?, Prodotto.TotalRows()
, ??, ??, ??, ??)))
{
return
}
//
// Segnalo all'utente che è iniziata la stampa
EsempiMS.StartPhase(Prodotto.TotalRows(), Stampa in corso...
<br><br>Attendere prego, True)
//
// Lancio la stampa
this.StampaAnnullata := False
Stampa.Print(ONE, --(ONE))
//
// Se non è stata annullata
if NOT(this.StampaAnnullata)
{
// Apro il documento
EsempiMS.OpenDocument(Stampa.WebFileName(), ??, ??)
}
}
Ultima modifica: 22/09/2021 / Validità: da 9.0.3940