Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

notify

10 views
Skip to first unread message

aurora...@gmail.com

unread,
Dec 16, 2019, 8:20:54 AM12/16/19
to
Buon pomeriggio,
innanzitutto auguri di tutti di Buon Natale e di un Felice Anno Nuovo.

Mi servirebbero degli esempi per l'applicazione del metodo Notify()
In pratica in un applicativo di contabilità voglio aggiornare il saldo del cliente (dare, avere e saldo) sulla maschera della fatturazione.

È semplice se parto dall'elenco clienti, compongo la fattura e quindi la stampo.
Io invece parto dal magazzino, compongo la fattura ed è nella maschera di stampa che scelgo il cliente da fatturare. Questa è l'impostazione iniziale dell'applicativo che ho ereditato e che l'utilizzatore non vuole cambiare.
Cambiando cliente dall'elenco (datawindows) vorrei ovviamente cambiare il saldo.

Qualche esempio spicciolo mi sarebbe utile.
Grazie
Aurora Baccio

Wolfgang Riedmann

unread,
Dec 16, 2019, 9:24:44 AM12/16/19
to
Buon giorno Aurora,

il metodo Notify() può essere utilizzato per notificare i clients di
un server di uno/più cambiamenti.

Faccio un esempio:
sulla DataWindow "DW1" ho collegato un DBServer "DBS1" con un campo
"campo1".
Se eseguo sulla nella finestra il metodo:

oDW1:Notify( NOTIFYFIELDCHANGE, #Campo1 )

la finestra rileggerà il contenuto del campo "campo1" dal server
sottostante (attenzione: non dal disco!).

Questa funzione è particolarmente indicata nel caso di campi calcolati
tramite un access. Prendiamo il caso di un campo valore:

access valore class DBS1
return self:FieldGet( #quantita ) * self:Fieldget( #prezzo )

Nella finestra si potrebbe creare un metodo

method Notify( kNotify, uDesc ) class DW1
local uReturn as usual

uReturn := super:Notify( kNotify, uDesc )
if kNotify == NOTIFYFIELDCHANGE .and. IsSymbol( uDesc ) ;
.and. ( uDesc == #quantita .or uDesc == #prezzo )
oDCValore:Value := self:Server:Valore
endif

return uReturn

Nel momento che viene modificato uno dei campi "quantita" oppure
"prezzo", verrà mandato il messaggio di Notify alla finestra che
provvederà a mettere il valore giusto nel campo "valore".

Spero di aver reso l'idea.

Saluti

Wolfgang
--

0 new messages