Non so se veramente mi ha aiutato la spiegazione glottologica di md9327, dopo aver creato i Menu - come da te suggerito - ho fatto questi test:
1) premere semplicemente su un Button:
Public Sub Button1_Click()
Print Menu2.Checked, Menu2.Value
End
ottengo in console il risultato:
False False
2) cliccare sul Menu2 e poi sul Button1; come prima ottengo:
False False
3) Nella routine dell'evento _Click() sollevato dal Menu2 ho impostato a True la proprietà .Checked del Menu medesimo:
Public Sub Menu2_Click()
Menu2.Checked = True
Print Menu2.Checked, Menu2.Value
End
sollevando questo evento dal Menu2 ottengo in console il seguente risultato:
True False
No, aspè...
La gestione della proprietà "checked" è DEMANDATA all'utente, e non a gambas, in quanto ha come utilità il segnalare l'abiltazione o meno di una certa opzione, diciamo che è una sorta di pulsante, e non un interruttore. Con questo voglio dire che il check può venir impostato con il click dall'utilizzatore, ma può anche farlo l'applicazione in base a certe logiche. La selezione della voce di menu deve comportarsi come tutte le normali voci. L'abiltazione o meno dello sbuffo è demandata al programma, in quanto può utilizzarlo per configurare opzioni interne, oppure anche invertirne il valore in base di variabili interne.
Un esempio potrebbe essere:
Private variabile As Boolean = True
Public Sub _new()
Menu2.Checked = variabile
End
...
Public Sub Button1_Click()
variabile = Menu2.Checked
End
@md9327: Please, leggi fino in fondo.. poi capisci :-*
*************************
Capisco, e ripeto che il "problema" da me evidenziato in realtà non è un problema vero e proprio, ma una non logicità.
Infatti se dalla Gui (cioè l'utente sbuffa il menù) è ovvio, naturale, sensato, e chi più ne ha ne metta che il Menu2.checked deve essere invertito di stato ! Altrimenti l'utente che lo seleziona a fare?
E' una mancanza da parte di Gambas, cioè oserei dire un codice a metà...
Spero di essere stato chiaro.
Poi è ovvio che uno aggira il problema con:
Public Sub Menu2_Click()
Menu2.Checked = Not Menu2.Checked
Print Menu2.Checked
End
Come vedi dal codice sopra, è naturale che Menu2.checked sia cambiato di stato, altrimenti che lo clicchi a che fare?
Potresti rispondermi che hai bisogno di sottomenù che non si possa sbiffare..
Bene, allora basta aprire l'editor dei menù e NON selezionare la voce "Checked": vedrai che quando lo clicchi non cambierà di stato !
Capito ora? :-[