Newsgroup: it.comp.lang.delphi
Titolo: calculared fields e visual form inheritance

Buongiorno a tutti.
Utilizzo D7.
In una form che non istanzio ho dei field persistenti collegati ad un db
ed ho inserito due calculated fields.
Da questa form poi eredito due altre form che istanzio a cui ho aggiunto
altri fields persistenti. Il problema è che i fields persistenti che ho
inserito nelle due subform sono bloccati (i valori che inserisco nei
dbedit vengono cancellati quando esco dai controlli e le dbcheckbox non
vengono selezionate o deselezionate).
Provando a rimuovere i due calculated fields nella classe iniziale e
inserendoli in ognuna delle due subforms tutta funziona correttamente.
Qualcuno di voi ha già incontrato questo problema?
Grazie in anticipo.
Saluti.
Alex Pileci.

 ed ho inserito due calculated fields.
quindi hai oggetti di accesso ai dati su un form?
Se la risposta è SI, ti stai mettendo nei casini.
I form sono INTERFACCIA UTENTE.
Gli oggetti di accesso ai dati vanno messi nei data module.
A.


Ciao,
l'oggetto in questione non esegue l'accesso ai dati ma semplicemente 
espone le proprietà di oggetti salvati e recuperati da un db (è un 
TInstantExposer del framework InstantObjects).
Le proprietà dell'oggetto esposto vengono mappate come campi di un 
dataset per potervi accedere tramite i normali controlli db-aware.
Saluti.
Alex Pileci.

 dataset per potervi accedere tramite i normali controlli db-aware.
Ok.
Premesso che non conosco Instant Objects, secondo me dipende da come
gestisci l'istanza.
Hai UN SOLO OGGETTO TInstantExposer, messo nella form radice, oppure N
oggetti, uno in ogni form ereditato?
Nel primo caso, hai forse un metodo dichiarato come virtual nel form
radice di cui i discendenti fanno l'override che si occupa di
aggiungere le definzioni di campo specifiche di ogni form?
A.

 
Ho una classe (TBasicEdit) astratta che è l'ancestrale di tutte le form 
che editano i dati del db; in questa form non ho nessun field e ho un 
TInstantExposer ed in ogni subform lo aggancio ad una classe particolare 
di oggetti che voglio editare con la form in cui è posizionato. In 
questo modo ho una classe di form per ogni classe di oggetti salvati sul 
db (con la VFI replichi la gerarchia delle classi del db nelle form).
Siccome TInstantExposer discende da TDataSet, imposto l'evento 
OnCalcFields nella form di base ed in quelle successive non aggiungo 
nulla quindi il comportamente è ereditato dall'ancestrale.
Probabilmente deve essere qualche bug relativo ad instantobjects poichè 
anche cercando sulla rete non ho trovato nulla.
Grazie lo stesso.
Saluti.
Alex Pileci.

 nulla quindi il comportamente è ereditato dall'ancestrale.
uhm...io farei un test, giusto x curiosita...
Pesumo tu abbia un metodo di cui fai l'override nei discendenti nel 
quale associ quello che ti serve a TInstantExposer, magari richiamato 
sulla OnCreate oppure da un tuo costruttore dedicato.
Metti un secondo metodo protected, del tipo Initform , nel quale prima 
richiami il metodo che appioppa al TInstantExposer quello che ti serve 
(overrided), e DOPO associ i campi calcolati..
Magari la assegnazione di un "qualcosa" a TIstantExposer resetta qualcosa...
A.

 A.
Proverò, grazie della dritta ;)
A presto.
Saluti.
Alex Pileci.