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 9: Riga 9:
   
   
  Public Sub _new()
  Public Sub _new()
 
  With Me
    .Move(0, 0, Screen.AvailableWidth, Screen.AvailableHeight)
    .Arrangement = Arrange.Fill
  End With
   
   
   With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   Me.Arrangement = Arrange.Fill
    .Background = Color.White
  End With
  DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
   
   
  End
  End
Riga 42: Riga 37:
  Public Sub DrawingArea1_Draw()
  Public Sub DrawingArea1_Draw()
   
   
<FONT Color=gray>' ''Stratagemma:''</font>
   <FONT Color=#B22222>If c == i Then  
   <FONT Color=#B22222>If c == i Then  
     Inc c
     Inc c
Riga 49: Riga 45:
   i = c</font>
   i = c</font>
   
   
   Me.Title = i
<FONT Color=gray>' ''Codice considerato fondamentale:''</font>
  Dim n As Short
   inc n
<FONT Color=gray>' ''Dimostra nell'intestazione della finestra quante volte è stato eseguito il codice fondamentale quando è stato sollevato l'Evento "DrawingArea1_Draw()":''</font>
  Print "Sollevato l'Evento _Draw(): codice fondamentale elaborato \e[1m"; n; " \e[0mvolta"
  dec n
   
   
  End
  End

Versione delle 15:06, 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, qualora venga sollecitato dal previsto codice nel prosieguo del programma.

Per impedire che, sollecitato dal codice l'Evento "_Draw()" della DrawingArea, sia eseguito più di una volta il codice fondamentale presente al suo interno, possiamo adottare il seguente stratagemma:

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


Public Sub _new()

 Me.Arrangement = Arrange.Fill

 DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"

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()

' Stratagemma:
 If c == i Then 
   Inc c
   Return 
 Endif

 i = c

' Codice considerato fondamentale:
 Dim n As Short
 inc n

' Dimostra nell'intestazione della finestra quante volte è stato eseguito il codice fondamentale quando è stato sollevato l'Evento "DrawingArea1_Draw()":
 Print "Sollevato l'Evento _Draw(): codice fondamentale elaborato \e[1m"; n; " \e[0mvolta"

 dec n

End