Devo dire che programmo da diversi anni e un'esigenza come la tua non mi era mai capitata...tra l'altro, non conosco programmi che usano questo tipo di approccio: sei sicuro che sia la soluzione più adatta e, soprattutto, la più intuitiva?
A parte questo, fai attenzione ai memory leak: C++Builder, come Delphi, non è "garbage collected", quindi devi occuparti di distruggere tutto ciò che crei.
Se le tue form sono in "Auto create", allora vengono create all'inizio, utilizzate quante volte vuoi e distrutte alla chiusura del programma, liberando la memoria allocata; altrimenti, se le tue form vengono create nel momento in cui è necessario e successivamente distrutte (generalmente, con le finestre di dialogo modali si fa così), allora devi garantirti che l'istanza della finestra sia distrutta quando termini di usarla, anche in caso di errore.
In Delphi si usa una forma congeniale di questo tipo:
Il costrutto try...finally, che dovrebbe essere presente anche in C++Builder, garantisce che la form creata, anche in caso di errore, dopo la sua visualizzazione venga distrutta (con il conseguente rilascio della memoria) attraverso il metodo Free.codice:MyForm := TMyForm.Create(Application); try MyForm.ShowModal; finally MyForm.Free; end;
Ovviamente, è possibile fare questo solo con ShowModal, poichè la chiamata a questo metodo blocca l'esecuzione della routine fino a quando la finestra visualizzata non viene chiusa.
Ciao!![]()