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
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 |
||
| (6 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 1: | Riga 1: | ||
Come è noto, l'Evento "_Draw()" del Controllo ''DrawingArea'' viene sollevato all'inizio per tre volte. Può essere sollevato arbitrariamente anche più di una volta, | Come è noto, l'Evento "_Draw()" del Controllo ''DrawingArea'' viene sollevato all'inizio per tre volte. | ||
<BR>Può essere sollevato arbitrariamente anche più di una volta, qualora venga sollecitato dal previsto codice nel prosieguo del programma. | |||
Per impedire che | 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 DrawingArea1 As DrawingArea | ||
Private c As Integer | Private c As Integer | ||
| Riga 8: | Riga 9: | ||
Public Sub _new() | Public Sub _new() | ||
Me.Arrangement = Arrange.Fill | |||
DrawingArea1 = New DrawingArea(Me) As "DrawingArea1" | |||
End | End | ||
Public Sub Form_Open() | Public Sub Form_Open() | ||
| Riga 29: | Riga 24: | ||
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 37: | Riga 33: | ||
End | End | ||
Public Sub DrawingArea1_Draw() | Public Sub DrawingArea1_Draw() | ||
If c == i Then | <FONT Color=gray>' ''Stratagemma:''</font> | ||
<FONT Color=#B22222>If c == i Then | |||
Inc c | Inc c | ||
Return | Return | ||
Endif | Endif | ||
i = c | i = c</font> | ||
<FONT Color=gray>' ''== Codice considerato fondamentale ==''</font> | |||
Dim n As Short | |||
inc n | |||
<FONT Color=gray>' ''Dimostra 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 attuale delle 15:07, 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 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