@Antonio ha scritto:
Avrei bisogno di sapere se è possibile individuare a runtime tutti gli oggetti tframe che sono aperti all'interno di una form.
Una precisazione iniziale: i
TFrame non sono finestre, pertanto non si "aprono". Il massimo che puoi fare è creare una istanza di un
Frame, a runtime o anche a designtime, e posizionarlo all'interno di un
Form, o di un controllo che sta nel Form e che può agire da contenitore.
E' senz'altro possibile risalire a qualsiasi
Frame presente in un
Form: essendo che il
Form è probabilmente l'
Owner del componente
TFrame inserito al suo interno, usando la collection dei
Components assieme alla proprietà
ComponentCount, è possibile enumerare tutti i componenti presenti nel
Form di riferimento e verificare l'appartenenza alla classe
TFrame, o al discendente da questa inserito nel progetto (si veda come spunto).
@Antonio ha scritto:
in una toolbar ho tre button che mi creano e mi lanciano 3 frame diversi (fr1; fr2; fr3).
Anche qui, bisognerebbe definire con precisione cosa si intende con il termine "lanciare".
@Antonio ha scritto:
Effettuando la prima scelta creo la fr1 la lancio (attenzione questo lo posso fare anche con fr2 oppure fr3). A questo punto senza chiudere la frame aperta dalla scelta della toolbar vado a lanciare una frame diversa. A questo punto a runtime, io devo individuare quale è l'oggetto frame precedentemente aperto e chiuderlo oppure renderlo invisibile.
Se si vuole ripristinare un
Frame precedentemente aperto, sarebbe sufficiente memorizzarne il riferimento all'interno di una variabile. Se si tratta di più
Frame, sarebbe sufficiente usare una lista o un'altra struttura equivalente per mantenere più riferimenti.
Ho usato (e spiegato in dettaglio) una architettura simile in una live che ho fatto qualche tempo fa (puoi trovare la replica in due parti
qui e
qui).
Ciao!