Impedire in una DrawingArea che si esegua il codice presente nell'Evento " Draw()" , qualora sia sollevato arbitrariamente più di una volta: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
(Creata pagina con "Come è noto, l'Evento "_Draw()" del Controllo ''DrawingArea'' viene sollevato all'inizio per tre volte. Può essere sollevato arbitrariamente anche più di una volta, anche q...")
 
Nessun oggetto della modifica
Riga 40: Riga 40:
  Public Sub DrawingArea1_Draw()
  Public Sub DrawingArea1_Draw()
   
   
   If c == i Then  
   <FONT Color=#B22222>If c == i Then  
     Inc c
     Inc c
     Return  
     Return  
   Endif
   Endif
   
   
   i = c
   i = c</font>
   
   
   Print i
   Print i
   
   
  End
  End

Versione delle 21:44, 2 mag 2023

Come è noto, l'Evento "_Draw()" del Controllo DrawingArea viene sollevato all'inizio per tre volte. Può essere sollevato arbitrariamente anche più di una volta, anche qualora venga sollecitato legittimamente dal previsto codice nel prosieguo del programma.

Per impedire che una volta sollecitato, l'Evento "_Draw()" della DrawingArea sia sollevato arbitrariamente per più della volta richiesta, possiamo adottare lo stratagemma, qui riportato all'interno dell'Evento "_Draw()":

Private DrawingArea1 As DrawingArea
Private c As Integer
Private i As Integer


Public Sub _new()
 
 With Me
   .Center
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With

 With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   .Background = Color.White
 End With

End

Public Sub Form_Open()

 Me.Show

 Do
   Inc c
   Wait 0.3
   If Object.IsValid(DrawingArea1) Then 
     DrawingArea1.Refresh
   Else 
     Break
   Endif
 Loop

End

Public Sub DrawingArea1_Draw()

 If c == i Then 
   Inc c
   Return 
 Endif

 i = c

 Print i

End