Newsgroup: it.comp.lang.delphi
Titolo: Puntatori, Form & C.

Ciao a tutti,
Ho il seguente problema:
Ho un form principale (menù) e una serie di Form da creare
dinamicamente, il problema nasce dal fatto che i form secondari si
dovrebbero chiudere o quando si preme la X del form OPPURE quando premo
uno dei bottoni del menù (che a loro volta ne aprirebbero un altro)
Ho provato varie soluzioni ma niente.....
Mi date una dritta..........
Grazie
Massimo

 altro) Ho provato varie soluzioni ma niente.....
Close?
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

Si Close ma essendo n form ed essendo dinamici mi si pone il problema
dei puntatori, quando e come liberarli (Action := caFree) , pensavo di
usare un puntatore che mi dicesse se il form era allocato (nel menù)
ma quando chiudo il form con la X e libero il form caFree il puntatore
nel menù risulta sempre assegnato.
Massimo

 nel menů risulta sempre assegnato.
Intecetta la chiusura della form e notificalo alla form principale,
quest'ultima si occupera' di impostare a nil il puntatore alla form
appena chiusa.


 appena chiusa.
Forse, il problema si potrebbe risolvere anche usando il meccanismo di 
"ownership" di Delphi.
Sarebbe sufficiente specificare il form principale come owner dei form 
secondari nei quali si intercetta l'evento /OnClose/ impostando l'azione 
caFree per distruggere automaticamente l'oggetto.
Facendo l'override del metodo /Notification/ all'interno del form 
principale, quindi, è possibile venire a conoscenza quando uno dei form 
viene distrutto e, di conseguenza, aggiornare la struttura dati in cui 
si mantiene il riferimento a tale form ponendolo a *nil* o rimuovendolo 
dalla lista (tanto per fare alcuni esempi di possibili implementazioni) 
poichè il form a cui fa riferimento sta per essere distrutto.
Ciao,
   Marco.
-- 
Marco «Alka» Breveglieri	
http://www.marco.breveglieri.name
  «bvmcnxsjlkhròhyeq, potrei scrivere a questo punto,
   se mi addormentassi sui tasti» (Daniele Luttazzi)

Mi riesci a fare un esempio, ho provato ma non so se l'ho implementato
in maniera corretta, poichè come parametri ho visto che mi passa il
componente e che cosa sta fecendo ho fatto:
if component is torm and operation = opremove then
  MioPuntatore := nil
E' corretto ?
Grazie
Massimo

 ha scritto nel messaggio 
news:1124360225....@g47g2000cwa.googlegroups.com...
Ciao a tutti,
Ho il seguente problema:
Ho un form principale (menů) e una serie di Form da creare
dinamicamente, il problema nasce dal fatto che i form secondari si
dovrebbero chiudere o quando si preme la X del form OPPURE quando premo
uno dei bottoni del menů (che a loro volta ne aprirebbero un altro)


 E' corretto ?
Concettualmente mi sembra corretto, anche se il codice č solo una 
piccola parte dell'implementazione completa quindi non so se possono 
esserci situazioni in cui si verificano problemi nella tua applicazione.
Magari, verifica tutte le condizioni possibili (quelle che ti vengono in 
mente) e controlla il comportamento della tua applicazione, magari 
facendo il debug passo per passo; se funziona, io mi fido. :-P
Ciao,
   Marco.
-- 
Marco «Alka» Breveglieri	
http://www.marco.breveglieri.name
  «bvmcnxsjlkhrňhyeq, potrei scrivere a questo punto,
