gran parte degli eventi vengono comunque intercettati dalla form, e quindi puoi agire di conseguenza.
Se è vero che gran parte degli eventi vengono intercettati prima dello stesso evento nella sfera di trattamento dentro le procedure dell'oggetto figlio, quali sono gli altri eventi che subiscono la stessa sorte dell'
evento KeyPress? La documentazione ufficiale di Gambas non riporta indicazioni in merito. Io ho cercato quella relativamente a KeyPress che ho letto da qualche parte a suo tempo, ma non ho trovato proprio niente. Forse non ne sono stato capace io.
Se non inserisci anche un metodo per l'oggetto figlio, la cosa termina nella form.
Rimanendo all'esempio dell'evento KeyPress che è quello su cui possiamo ragionare, perchè è l'unico che ho potuto realmente provare, se scriviamo due procedure evento: Form_KeyPress e OggettoFiglio_KeyPress, è certo che verranno esguite entrambe, prima, come già ampiamente discusso e provato, la procedura
Form_KeyPress e dopo la procedura
OggettoFiglio_KeyPress. Supponiamo infatti che la prima delle due emetta il messaggio n.1, mentre la seconda emetta il messaggio n.2, ecco descritte qui sotto le due procedure:
Public Sub Form_KeyPress()
'---------------------------------------------
Message.Info("Questo messaggio n.1 è stato prodotto dentro la procedura 'Form_KeyPress'")
End
Public Sub DescrMoDigTxt_KeyPress()
'-------------------------------------------
Message.Info("Questo messaggio n.2 è stato prodotto dentro la procedura 'DescrMoDigTxt_KeyPress'")
End
Ho provato, per riprova di quanto affermato sopra, ed ho ottenuto in sequenza, l'emissione dei due messaggi, prima il messaggio n.1 e poi il messaggio n.2.
Quindi possiamo concludere che,
- in caso di presenza di procedura evento KeyPress solamente nell'insieme delle procedure proprie della Form, l'evento KeyPress viene intercettato dalla Form_KeyPress;
- in caso di presenza di procedura evento KeyPress solamente nell'insieme delle procedure proprie di un OggettoFiglio, l'evento KeyPress viene intercettato dalla OggettoFiglio_KeyPress;
- in caso di presenza di procedura evento KeyPress sia nell'insieme delle procedure proprie della Form che in quelle proprie di un OggettoFiglio, l'evento KeyPress viene intercettato due volte, la prima dalla Form_KeyPress e la seconda dalla OggettoFiglio_KeyPress.
Sarebbe bello e comodo poter ottenere lo stesso effetto per altri eventi, come per. Es.: MouseDown. Sarebbe anche utile ottenere una descrizione dettagliata in merito ai criteri di intercettazione di alcuni eventi particolari nella struttura logica di Gambas come quelli oggetto di questa discussione.