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
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 19: Riga 19:
   
   
  End
  End
   
   
  Public Sub Form_Open()
  Public Sub Form_Open()
Riga 27: Riga 28:
     Inc c
     Inc c
     Wait 0.3
     Wait 0.3
     If Object.IsValid(DrawingArea1) Then  
     If Object.IsValid(DrawingArea1) Then
<FONT Color=gray>' ''Solleva l'Evento "DrawingArea1_Draw()":''</font>
       DrawingArea1.Refresh
       DrawingArea1.Refresh
     Else  
     Else  
Riga 35: Riga 37:
   
   
  End
  End
   
   
  Public Sub DrawingArea1_Draw()
  Public Sub DrawingArea1_Draw()

Versione delle 14:41, 2 ago 2025

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
   .Move(0, 0, Screen.AvailableWidth, 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
' Solleva l'Evento "DrawingArea1_Draw()":
     DrawingArea1.Refresh
   Else 
     Break
   Endif
 Loop

End


Public Sub DrawingArea1_Draw()

 If c == i Then 
   Inc c
   Return 
 Endif

 i = c

 Print i

End