Per distruggere un oggetto ci vuole l'istruzione delete, e qui ci siamo, però c'è qualcosa che non capisco: sempre riguardo la mia famosa simulazione della roulette (che sto mandando avanti con tempi bradipici :) ) ho aggiunto la possibilità di visualizzare tutta la serie attualmente memorizzata con una textarea creata sul momento tramite la voce apposita sul menù, in questa maniera:
Public Sub Visualizza_Click()
Dim vediserie As New TextArea(Me)
Dim i As Short, Tmp As String
If visualizza.Checked = False
For i = 0 To serie.Max
Tmp &= Str$(serie[i]) & " "
Next
With vediserie
.x = 50
.y = 340
.width = 1010
.height = 85
.text = "Serie attuale: " & Tmp
End With
visualizza.Checked = True
Else
visualizza.checked = False
'vediserie.visible = False
'vediserie.Hide
vediserie.delete
Endif
End
Teoricamente, ricliccando sulla voce di menù la textarea dovrebbe sparire, ma invece rimane li al suo posto, anche usando le 2 istruzione appena sopra il delete che ho remmato.
Ma se distruggo un oggetto questo non dovrebbe sparire, visto che non esiste più? O c'è qualcosa che mi sfugge? :-\
Ma se distruggo un oggetto questo non dovrebbe sparire, visto che non esiste più? O c'è qualcosa che mi sfugge? :-\
Sì, nel tuo caso devi porre la variabile del tipo "TextArea" (ossia: vediserie) come "Globale".
Inoltre, al fine di non avere un errore nel tentativo di ricreare un'altra TextArea mediante quella variabile, dovrai porre la riga che crea la TextArea all'interno della routine.
Quindi avremo:
Private vediserie As TextArea
....' quindi il resto del codice....
....' etc
Public Sub visualizza_Click()
Dim i As Short, Tmp As String
If visualizza.Checked = False
vediserie = New TextArea(Me) ' <-------------------
For i = 0 To serie.Max
Tmp &= Str$(serie[i]) & " "
Next
With vediserie
....
....
...' etc
....Inoltre, se vuoi evitare tutti quei .Checked, puoi anche usare una righetta di controllo dell'esistenza della TextArea, aggiungendovi solo il nome nelle sue proprietà:
Public Sub visualizza_Click()
Dim i As Short, Tmp As String
If IsNull(Me.Controls["vediserie"]) ' <-------------------
vediserie = New TextArea(Me)
For i = 0 To serie.Max
Tmp &= Str$(serie[i]) & " "
Next
With vediserie
.x = 50
.y = 100
.width = 200
.height = 85
.Name = "vediserie" ' <-------------------
...... ' etc
....... ' etc
Vanno eliminati ovviamente tutti i visualizza.Checked = .