It is currently 9 June 2025, 8:33 Advanced search

MessageConfirmEx in OnChangeLocking (videata con sottopann)

Domande e risposte su come utilizzare Instant Developer Foundation al meglio

MessageConfirmEx in OnChangeLocking (videata con sottopann)

Postby Dipa » 3 October 2014, 8:27

Buongiorno a tutti,

come da titolo, nella OnChangeLocking di una videata, uso la MessageConfirmEx per visualizzare un messaggio e far decidere all'utente se continuare con lo sblocco (modifica):
il problema è che, se l'utente decide di entrare in modifica della videata, si sbloccano solo i sottopannelli, mentre i campi presenti sulla videata rimangono disabilitati.

1.png
1.png (31.84 KiB) Viewed 6125 times


Dopo aver risposto "Si" alla MessageConfirmEx questo è il risultato:

2.png
2.png (25.22 KiB) Viewed 6125 times


Dove sto sbagliando?
Grazie.
Attachments
Supermercato.rar
(344.07 KiB) Downloaded 300 times
Maurizio
Dipa
 
Posts: 420
Joined: 1 July 2014, 14:01

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby eurekapv » 3 October 2014, 9:09

La messageConfirmEx è un po' particolare come funzione, cioè puo' essere richiamata solo in eventi ripetibili, in quanto per poter funzionare il server continua a eseguire la procedura dove la message è inclusa per attendere la risposta che arriva dal client.

Ho paura che la OnChangeLocking non sia ripetibile e che dia quindi strani effetti; potrei anche sbagliarmi ma credo sia per quello.

Pietro
Alchimisti Lab by Cavallini Pietro
https://www.alchimistilab.it

Image
User avatar
eurekapv
 
Posts: 2450
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby Dipa » 3 October 2014, 9:16

Grazie Pietro della risposta.

Si anche io avevo pensato che potesse essere quello il problema, ma non avendo trovato nulla nella documentazione, speravo fosse ripetibile.
Nel caso in cui effettivamente fosse questo il problema, come potrei aggirarlo e dare la stessa funzionalità all'utente?

Maurizio
Maurizio
Dipa
 
Posts: 420
Joined: 1 July 2014, 14:01

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby eurekapv » 3 October 2014, 13:03

L'unica cosa che mi viene in mente è NON usare la MessageConfirmEx ma costruire una form "stile" Message Confirm Ex (la chiamo frmDomanda)

Nella OnChangeLocking, nel momento di sblocco, chiami la nuova form in modalità modale (frmDomanda.show(Modal)) e lasci che il pannello si sblocchi;
(intanto c'e' sopra la modale che impedisce l'interazione con lo scontrino).

La modale ha due pulsanti Si e NO il cui codice collegato è
SI: close (true)
NO: close (false)

Ora nella videata dello scontrino intercetti l'evento EndModal e ti chiedi
if (LookupForm = frmDomanda.me and Result = false)
{
//RIBLOCCO LA VIDEATA
SCONTRINO.locked = true
}

Pietro
Alchimisti Lab by Cavallini Pietro
https://www.alchimistilab.it

Image
User avatar
eurekapv
 
Posts: 2450
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby Dipa » 3 October 2014, 13:20

Grazie Pietro della tua soluzione proposta, seguirò questa strada.

P.S. x progamma: trovo molto scomodo comunque dover attuare un workaround per un semplice "ask" sullo sblocco di un pannello, sempre ché effettivamente il problema sia dell'evento non ripetibile.
P.P.S. è possibile avere un elenco di tutti gli eventi non ripetibili?

Grazie.
Maurizio
Dipa
 
Posts: 420
Joined: 1 July 2014, 14:01

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby eurekapv » 3 October 2014, 13:26

Ciao,
Ti consiglio di scrivere un post nelle Proposte di modifica così che venga preso in considerazione.

Pietro
Alchimisti Lab by Cavallini Pietro
https://www.alchimistilab.it

Image
User avatar
eurekapv
 
Posts: 2450
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby Dipa » 3 October 2014, 13:40

Ok.
Grazie ancora.
Maurizio
Dipa
 
Posts: 420
Joined: 1 July 2014, 14:01

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby Dipa » 3 October 2014, 13:57

Ho implementato il workaround di Pietro, ma rimane fuori un dettaglio:
come faccio a distinguere nella OnChangeLocking, l'inserimento dalla modifica, dal momento che il nuovo documento viene inserito successivamente a tale evento (il mio messaggio dovrebbe apparire solo quando sblocco il pannello per la modifica e non per l'inserimento) ?

Grazie.
Maurizio
Dipa
 
Posts: 420
Joined: 1 July 2014, 14:01

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby g.lanzi » 6 October 2014, 8:31

È una bella domanda e la risposta è molto interessante. Devi sapere che il presentation layer è gestito da un framework javascript chiamato RD3 (cosa che immagino tu già sappia), che si occupa di creare e modificare gli oggetti del DOM della pagina che vede l'utente.

Il client e il server non si scambiano HTML, bensì XML contentente solo le informazioni degli oggetti dal mostrare. Ci pensa poi il framework javascript lato client (che gira nel browser) a creare e gestire tutti gli oggetti.

In questo contesto ci sono operazioni che devono essere gestite dal server e per le quali il client non può far nulla, come la validazione di una riga del pannello, mentre altre sono gestibili in autonomia. Ad esempio se il pannello va da lista a dettaglio lo fa da solo, informando il server della cosa solo in un evento posteriore all'effettivo cambio di layout. Cioè il presentation layer cambia layout "mentre" informa il server.

Il changeLocking è uguale, il client è in grado di farlo da solo e quindi l'evento è definito come gestibile sia lato client, sia lato server.

Per ottenere il risultato che vuoi è necessario usare l'evento di load della form e scrivere:
Code: Select all
pannello.toolbarEventType = ServerSide + Immediate + Blocking;

Che significa che l'evento non può essere gestito in autonomia dal client ma deve essere subito informato il server, senza comunicazione differita, bloccando l'interfaccia finché il server non risponde e agendo di conseguenza alla risposta.

Con un evento definito in questo modo puoi scrivere:
Code: Select all
int res = MessageConfirm("vuoi davvero cambiare il lock?");
if (res != true)
{
  cancel = true;
}

E vedere che il pannello cambia lock solo se l'utente risponde ok.

Allego un progettino in cui l'ho fatto funzionare.
Attachments
Forum 65860.zip
(410.12 KiB) Downloaded 298 times
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3504
Joined: 29 September 2010, 10:24
Location: Bologna

Re: MessageConfirmEx in OnChangeLocking (videata con sottop

Postby Dipa » 6 October 2014, 9:02

Grazie dell'esaustiva risposta, adesso funziona regolarmente.
Rimane fuori però il discorso dell'inserimento: come faccio dentro la OnChangeLocking a sapere se sono in inserimento o in modifica?

Grazie
Maurizio
Dipa
 
Posts: 420
Joined: 1 July 2014, 14:01

Next

Return to Tips & Tricks - Foundation

Who is online

Users browsing this forum: d.pierangeli, f.celi and 61 guests