Newsgroup: it.comp.lang.delphi
Titolo: Re: Condivisione di variabili

 variazione di una delle variabili???
Credo che tu debba implementare un meccanismo di autenticazione 
prendendo spunto dal Design Pattern *Observer*.
L'idea di base è quella di dotare l'oggetto della classe posta sotto 
osservazione di una lista degli oggetti osservatori che devono essere 
notificati quando qualcosa accade nella classe osservata, attraverso la 
chiamata di un semplice metodo.
Di solito, nel legame viene introdotta una classe intermedia che funge 
da collegamento; ciascun oggetto collegamento viene creato dall'oggetto 
osservatore e conserva un riferimento a quest'ultimo.
Quando l'oggetto osservatore viene collegato, attraverso una proprietà, 
ad un oggetto da osservare, l'oggetto che costituisce il collegamento 
viene aggiunto ad una lista contenuta nell'oggetto da osservare.
La classe "osservata" prevede l'uso di una lista da parte di ciascun 
oggetto degli oggetti di collegamento; quando accade qualcosa, viene 
chiamato un metodo apposito di ciascun oggetto presente nella lista il 
quale, a sua volta, notificherà gli oggetti osservatori di quanto si è 
verificato.
Riassumendo, gli oggetti "osservati" possiedono una lista di oggetti che 
devono essere notificati di eventuali avvenimenti ("osservatori").
Un simile approccio è stato utilizzato da Borland nella creazione dei 
controlli Data Aware, i quali fanno uso di una classe *TDataLink* che 
funge da collegamento tra il controllo stesso e il DataSet al quale è 
collegato.
Ciascun controllo associato ai dati crea al suo interno un'istanza di 
*TDataLink*; quest'oggetto servirà a ricevere notifiche dal DataSet a 
cui verrà collegato.
Quando si associa un Data Control ad un componente DataSource, le 
proprietà del DataLink vengono impostate opportunamente e l'istanza 
stessa viene aggiunta all'insieme (lista) dei DataLink che devono 
ricevere notifiche dal DataSet associato quando avviene un determinato 
evento. Ogni diverso tipo di evento (Scroll, Open, Edit, Post...) 
corrisponde ad un diverso metodo chiamato di ciascun DataLink presente 
in lista, che si ripercuote poi sul controllo al quale è associato.
Quanto detto puoi verificarlo ispezionando il codice sorgente della VCL. :-)
Data l'ora, non garantisco la correttezza al 100% delle informazioni che 
ho riportato, tuttavia il concetto dovrebbe essere comprensibile. :-D
Ciao!
-- 
Marco «Alka» Breveglieri
  ABLS Team S.n.c. - Software & Web
  Via De Gasperi, 14
  42019 Scandiano (Reggio Emilia)
 
http://www.abls.it

ho riportato, tuttavia il concetto dovrebbe essere comprensibile. :-D
Sei un mito.... :D
Ciao
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

Nel classe da te creata implementa l'evento OnChange, quando questo si
attiva per la modifica della variabile richiami una funzione implementata in
ogni form che ad esempio passa il valore della variabile come parametro.
Naturalmente fai un controllo che le form esistino altrimenti hai un errore.
Potresti anche inviare un messaggio  che viene gestito da tutte le tue form,
avresti cosi' un vero e proprio evento: anche qui dovrai inviarne uno ad
ogni form presente a meno che non usi un BROADCAST che viene ricevuto da
tutte le Wind., comprese quelle degli altri processi (se non erro).
Giorgio Padoan

 
Concetto chiarissimo Grazie
***Gio***

 intermedia! (c'e' sempre qualcosa da imparare)
La classe intermedia non è d'obbligo, ma comporta alcuni vantaggi.
Ad esempio, per non rendere pubblici i metodi della classe da osservare 
che aggiungono o rimuovono oggetti da notificare dalla propria lista, 
tali metodi si inseriscono appunto nella classe che rappresenta il 
collegamento (link).
La classe che rappresenta il collegamento tra "osservatore" e 
"osservato" (link) è dichiarata nella stessa unit della classe 
"osservata", quindi è di fatto in grado di accedere anche ai membri 
privati di questa, che rimangono nascosti per tutti gli usi generici 
della classe, ma vengono "svelati" se si fa uso della classe apposita di 
collegamento.
Un'istanza della classe di collegamento viene poi creata dall'oggetto 
"osservatore" e memorizzata in un campo privato, pertanto anche questa 
non è visibile. In poche parole, sebbene gli oggetti "osservatori" e 
"osservati" siano in grado di colloquiare attraverso il collegamento, 
nessun utilizzatore (un oggetto esterno a questa relazione) è in grado 
di interferire in questo modo.
A parte questo utilizzo, la classe di collegamento può tornare utile se 
pianifichi di poter aggiungere qualcosa nel "legame intermedio" tra le 
classi...diciamo che è un grado di astrazione in più che ti riservi per 
ogni eventuale esigenza dovesse emergere.
Il tutto è spiegato in modo molto "maccheronico" e sicuramente 
migliorabile; per un'analisi dettagliata, fai riferimento al design 
pattern chiamato "Observer".
Ciao! :-)
