Autore Topic: Chiarimento su Delete  (Letto 446 volte)

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Chiarimento su Delete
« il: 27 Dicembre 2012, 12:01:26 »
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:
Codice: [Seleziona]
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? :-\
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.311
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Chiarimento su Delete
« Risposta #1 il: 27 Dicembre 2012, 12:17:48 »
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:
Codice: gambas [Seleziona]

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à:
Codice: gambas [Seleziona]

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 = .
« Ultima modifica: 27 Dicembre 2012, 12:54:45 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 960
    • Mostra profilo
Re: Chiarimento su Delete
« Risposta #2 il: 31 Dicembre 2012, 21:31:00 »
Perfetto, adesso funziona, grazie. ;)
Però i .Checked li lascio perchè voglio far rimanere la spuntina sulla voce del menù. :)
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.