Non dovrei farlo, perchè se mi scoprono perdo la licenza di bravo programmatore...
Ma vabbè, solo per questa volta...
Come da tuo esempio, abbiamo due pulsanti, che nominiamo Button1 e Button2 rispettivamente.
Come ti avevo descritto nella precedente, hai due possibilità per gestire con un solo metodo i due eventi Click() scatenati dai due pulsanti, ovvero:
1) agire tramite l'ide di Gambas, definendo un nome alla proprietà Group (presente nella lista delle proprietà a destra e selezionando i due pulsanti). Questa proprietà deve avere un nome uguale per tutti e due i pulsanti, ad esempio la impostiamo a "Event" (lo scrivi nella proprietà). A questo punto, prendi e fai un doppio click su uno dei due bottoni. Vedrai che ti si apre l'editor del codice della Form, che nel frattempo ha aggiunto un nuovo metodo, appunto nominato:
PRIVATE SUB Event_Click()
END
Dentro questo metodo vai a scrivere il codice che ti server per poter stampare la variabile, cos'ì come hai descritto. Sempre come hai descritto, la variabile deve poter cambiare, dipendentemente da quale pulsante hai premuto, e quindi devi prima capire qual'è questo pulsante. Gambas ti fornisce la keyword LAST, che viene usata negli eventi (solo in quelli però), e che contiene il riferimento all'oggetto che lo ha scatenato, quindi:
PRIVATE SUB Event_Click()
DIM obj AS Object = LAST
IF (obj = Button1) THEN
PRINT "Hai premuto il pulsante 1"
ELSE
PRINT "Hai premuto il pulsante 2"
ENDIF
END
E' ovvio che questo che ho scritto è un esempio banalissimo, e più essere ampliato. La keyword LAST, come sopra detto, è un riferimento all'oggetto scatenzante, per cui puoi usarlo per accedere a tutte le proprietà e metodi dell'oggetto stesso (sempre se pubbliche), quindi potresti fare una cosa del genere:
PRIVATE SUB Event_Click()
DIM obj AS Object = LAST
IF (obj = Button1) THEN
PRINT "Hai premuto il pulsante " & obj.Name
ELSE
PRINT "Hai premuto il pulsante " & obj.Name
ENDIF
END
Dato che abbiamo parlato solo di due pulsanti la cosa si potrebbe fermare qui, ma tu pensa se con lo stesso metodo devi poter catturare gli eventi di oggetti di diversa natura. In questo caso sarà necessario capire pure che tipo di oggetto stiamo trattando, e agire di conseguenza (ti ricordo che gli oggetti non hanno tutte le stesse identiche proprietà), quindi:
PRIVATE SUB Event_Click()
DIM obj AS Object = LAST
IF (Object.Is(obj, "Button")) THEN
IF (obj = Button1) THEN
PRINT "Hai premuto il pulsante " & obj.Name
ELSE
PRINT "Hai premuto il pulsante " & obj.Name
ENDIF
ENDIF
END
In questo esempio vado prima a capire se il tipo di oggetto fà parte della classe Button generica di Gambas, quindi passo ad analizzarne il riferimento (così come definito nella Form).
2) Agire a livello di codice, associando l'oggetto ad una definizione, tramite il comando:
Object.Attach(Button1, ME, "Event")
Object.Attach(Button2, ME, "Event")
La keyword "ME" stà come riferimento alla classe proprietaria dell'oggetto, in questo caso la Form.
Ci sarebbe anche una terza alternativa, tramite Observer, ma semmai la vediamo in seguito...
Ho chiarito il concetto? ... sono 100 euri...