Autore Topic: Eliminazione di una tab in una TabStrip  (Letto 1459 volte)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Eliminazione di una tab in una TabStrip
« il: 15 Febbraio 2008, 17:31:09 »
Dopo una serie indefinita di prove, penso di aver individuato un problema legato all'eliminazione a runtime di una tab all'interno di una TabStrip.

- Prendiamo come esempio una form, in cui è presente una TabStrip;
- A livello di codice aggiungiamo una nuova tab;
- Inseriamo alcuni nuovi controlli in questa tab, associando correttamente nomi ed eventi;

La form così costruita funziona alla grande.
Ora mettiamo il caso che una delle tab presenti e funzionanti non ci serva più; quini, proviamo ad eliminarla...

Domanda: come si fà?
Risposta: eseguiamo un bel hide()/delete() di tutti gli oggetti presenti nella tab, facciamo anche un bel detach() in modo da sganciare l'oggetto dal suo contenitore, decrementiamo l'indice dei tabs di uno controllando che ci siano altri tab magari posizionandosi sul primo per evitare problemi.

Questa logica, a mio avviso corretta, attualmente in Gambas non pare funzionare; la cancellazione del tab provoca un crash a causa di riferimenti a oggetti figli ancora collegati e presenti in memoria, anche se abbiamo tentto di cancellarli.

Unica soluzione trovata: eseguire un loop tra tutti i tab presenti, e agganciare gli oggetti figli presenti della tab da eliminare (es. con attach()).

Il mio dubbio è che forse il delete() non funziona bene, oppure non è possibile eliminare riferimenti in memoria una volta allocati...

Scusate i termini, ma essendo anche un vecchio programmatore in C, mi sono rimaste alcune abitudini... :-)

E' anche possibile che abbia capito male l'uso della TabSTrip, e se qualcuno ha trovato un rimedio, gliene sarei grato; altrimenti, credo che questo problemino si possa inserire tra l'elenco delle note da segnalare al team Gambas.

Bye