Newsgroup: it.comp.appl.access
Titolo: Campo non associato

In una casella di testo non associata come è possibile ripristinare il
valore precedente? Infatti Undo e OldValue non hanno nessun effetto.
C'è un modo più semplice di quello di memorizzare il valore precedente in
una variabile pubblica?
--
Ciao, Sandrobi
------------------
Se la tua email è fasulla, ti invito a leggere qui:
http://wiki.news.nic.it/AntiSpam

 una variabile pubblica?
Piu' o meno tutti i controlli hanno una proprieta' "Tag". Potresti 
conservartelo li'.
--
ac

 Ciao, Sandrobi
Purtroppo non essendo associato non disponi dell'uso di Undo ed
OldValue, ma
non capisco perchè ti sembra complesso usare variabili Public...!
Scomodo e poco flessibile forse si...!
Oltre a quanto ti ha suggerito A.C. che non sempre potrebbe essere
praticabile
a seconda della frequenza di utilizzo della proprietà TAG, potresti
usare una tecnica
un pò più raffinata, una Collection...!
Nella  collection puoi salvare una Classe con una Key, la classe
sarebbe il Controllo
e la Key il suo Nome, in quel modo la puoi richiamare.
Questo metodo è veloce e flessibile.
Ciao
@Alex

 Questo metodo è veloce e flessibile.
Sempre una variabile pubblica e'.
uhmmm....non so se ho capito. Vuoi fargli salvare il controllo nella 
collezione? Ai suoi fini non funzionerebbe. Mi permetto di ricordarti 
che gli oggetti vengono passati per "puntatore".
--
ac

Alessandro Cara ha scritto:

Aspetta....
Io ho una Classe che espone 2 proprietà, quando salvo la classe nella
Collection
con una Key, e la richiamo ho esattamente la Classe con le mie 2
proprietà....
vuoi dire che con i controlli la cosa è diversa...?(in ogni caso per i
controlli dovrei provare
ma per la classe ne sono certo)
Se hai ragione basta usare una Classe come appoggio con 2
proprietà...!
E' vero che sempre Public, ma non è UNA varaibile, bensì una
collection che
a livello di versatilità è meglio di un'array, ovvio che non conosco
l'esigenza, ma
qualora debba gestire più Controlli una sola variabile Public sarebbe
poco fattibile
ed usare un'array con il conseguente loop di ricerca sarebbe
decisamente lento ed inutile.
La tecnica migliore, nel caso si debbano avere più di un oggetto
memorizzato è l'uso di Classi e Collection.
@Alex

 ma per la classe ne sono certo)
Volevo dire questo:
myColl.add oControl,"myKey"
se modifico qualsiasi cosa su oControl me lo trovo modificato anche in 
myColl "mykey"
tutto cio' a meno che non "cloni" oControl.
E' chiaro che se fai
	set obj = new myclass
	mycoll.add myclass,"key1"
	set obj = new myclass
	mycoll.add myclass,"key2"
hai 2 istanze distinte e diverse di myclass e tutto fila liscio. Ma se 
ometti la secoda "set" hai una copia dello stesso oggetto. O meglio non 
hai una "copia" ma solo un nuovo puntatore alla stessa istanza. Se 
modifichi una qualsiasi proprieta' in uno te lo trovi modificato anche 
nell'altra.
Uso abbastanza spesso questa caratteristica per tenere in memoria 
"ordinamenti" differenti di collezioni piuttosto corpose.
Permettimi. Una variabile e' una variabile. Complessa come si vuole ma 
sempre variabile e' e richiede la sua definizione (ovviamente  a meno 
che non ometti option explicit)
i.e.
dim myColl as collection
 
--
ac

 ac
Ciao
@Alex

 ;-) fortunato....
mica tanto sono quasi obese.
s.e.& o.
--
ac

 ac

Alessandro Cara ha scritto:
[CUT]

Scusa Alessandro ma il codice che ti ho indicato prima è molto
differente da quello che
hai esposto ora tu...! Sono 2 cose opposte.
Io creo una Classe nella quale salvo l'Oggetto, che no nsarà più
legato all'originale, la Collection invece la dichiaro Public, e ci
salvo la Classe(non il controllo diretto)...!
Ripeto:
'------------------------------------------------------------
Classe Container
'------------------------------------------------------------
Private mMC as Control
Public Property Set MC (obj as Control)
   Set mMC=obj
End Property
Public Property Get MC ()
  Set MC = mMC
End Property
'------------------------------------------------------------
'------------------------------------------------------------
Nella Form:
'------------------------------------------------------------
Dim myColl as New Collection
Set myClass as new Container
Set myClass.MC=mControl
myColl.add myClass ,"myKey"
Ora per richiamare la classe devo fare:
Dim mret as Container
mret=myColl("myKey")
quì in mret ora ho la classe Container che conterrà il controllo,
quindi:
dim ctl as control
set ctl=mret.MC
Spero di essere stato più chiaro...!
Come l'hai prospettata tu concordo pienamente sia come dici, come
invece ti ho esposto io ho il dubbio di poter aver ragione, ma è solo
un dubbio e questa sera faccio un test poi ti sò dire.(se invece già
tu hai qualche certezza meglio)
Ciao
@Alex

 legato all'originale, 
e' solo questo il punto su cui siamo in disaccordo. Se hai salvato un 
oggetto  hai semplicemente un puntatore in piu' verso l'oggetto.
Questo e' il motivo di alcuni "memory leak". Finche' non vengono 
distrutti tutti i puntatori ad un oggetto quell'oggetto resta in piedi.
Ed access con le collezioni nidificate se non si sta attenti ci mette 
poco a mandare in stallo il sistema.
sempre salvo orrori e/o omissioni
--
ac

 ac
@Alex