Creare Menu popup utilizzando l'Editor di menu
In questa pagina verrà spiegato passo dopo passo come creare un Menu popup, relativo ad un Oggetto grafico, usando l'Editor Menu dell'Ide di Gambas anziché il codice.
1° esempio
Di seguito viene mostrato una semplice modalità:
Cliccare sul pulsante "Editor Menu…" dalla barra dei pulsanti della IDE per aprire la finestra dell'Editor Menu.
Nella finestra, che si apre, premere sul pulsante "Inserisci": verrà inserito il primo Menu (Menu1).
Il menu creato non deve apparire nella barra dei menu del programma; pertanto cancellare il testo presente nella casella "Caption" (lasciandola vuota) oppure disattivare l'opzione "Visible". Ora l'identificatore del Menu Popup sul campo sinistro apparirà grigio, in grassetto e sottolineato.
Cliccare sul pulsante "Inserisci", per inserire un altro oggetto Menu, che dovrà essere reso un sotto-menu (Menu2) dell'Oggetto Menu principale (Menu1) cliccando sull'icona "Indenta" (con doppia freccia verso destra). Il nuovo Menu si sposterà a destra perdendo il grassetto, così diventando un Sotto-Menu.
Ripetiamo la precedente procedura per creare un altro sotto-menu di Menu1.
Il codice sarà il seguente:
Public Sub Menu2_Click() Print "Menu 2" End Public Sub Menu3_Click() Print "Menu 3" End
2° esempio
In quest'altro esempio sarà usato l'Evento "Action_Activate ()" per far fare qualcosa nel caso venga cliccato su un sotto-menu.
Dopo aver creato il Menu principale, reso invisibile con le modalità indicate nel precedente esempio, e uno o più sotto-menu, si avrà cura di inserire nel campo "Action" della finestra dell'Editor Menu una parola qualsiasi.
Quindi si imposterà il seguente codice, assumendo che si intende far aprire il Menu Popup cliccando con il tasto destro del mouse sul Form, avendo cura di assegnare alla proprietà ".PopupMenu" del Form il nome del Menu principale (in questo caso Menu1), contenente i sotto-menu.
Public Sub Form_Open() Me.PopupMenu = "Menu1" End Public Sub Action_Activate(sKey As String) As Boolean ' Mostra semplicemente nel margine superiore del Form il contenuto di sKey: Me.Caption = skey End
3° esempio
Mostriamo quest'altro esempio più complesso. [Nota 1]
Apriamo la IDE di Gambas e creiamo un nuovo progetto grafico (QT application). Dopo averlo nominato e salvato ci spostiamo nella scheda Fmain.Form .
Clicchiamo sul pulsante "Editor Menu…" dalla barra dei pulsanti della IDE; nella finestra che si apre agiamo sul pulsante "Insert " come suggerito dalla finestra, appare una nuova voce (Menu1). Selezioniamola cliccandoci sopra.
Ora sul lato sinistro della finestra appaiono nuove voci e controlli. Nella casella "Name" scriviamo mnuPopup. Quindi facciamo in modo che il menu creato non appaia nella barra dei menu del programma, cancellando il testo presente nella casella "Caption" (lasciandola vuota) oppure disattivando l'opzione "Visible". Ora l'identificatore del menu popup sul campo sinistro apparirà grigio, in grassetto e sottolineato.
Clicchiamo poi sul pulsante "Insert after" e quindi sull'icona "Indenta"; il nuovo menu si sposterà a destra perdendo il grassetto. Cambiamo, quindi, il "Name" in mnuTaglia, "Caption" in Taglia, "Action" in popup-taglia e in "Shortcut" spuntiamo la casella "CTRL" e scegliamo dal menu a discesa della combo la lettera "X".
Usando la stessa procedura completiamo il menu con le seguenti voci:
mnuCopia, Copia, popup-copia, "CTRL" C.
mnuIncolla, Incolla, popup-incolla, CTRL V.
MnuRosso, Testo &rosso, popup-testo-rosso, CTRL R.
Per separare con una linea di demarcazione le tre voci ("Taglia", "Copia", "Incolla") da "Testo Rosso" evidenziamo cliccandoci sopra la voce di menu "Incolla" quindi agiamo su "Insert after" e cancelliamo la casella "Caption" come abbiamo già visto.
Abbiamo finito.
Basta quindi aggiungere alla finestra una casella di testo (TextBox1), cambiarne la proprietà "PopupMenu" scegliendo dalla lista il nome mnuPopup e copiare il seguente codice in Fmain.class per vederne il funzionamento:
Public Sub Form_Open() TextBox1.Text = "Testo qualsiasi" TextBox1.Select() End Public Sub Action_Activate(sKey As String) As Boolean Select Case sKey Case "popup-taglia" PopupTaglia() Case "popup-copia" PopupCopia() Case "popup-incolla" PopupIncolla() Case "popup-testo-rosso" PopupRosso() End Select End Private Sub PopupTaglia() Clipboard.Current = 0 If TextBox1.Selected Then Clipboard.Copy(TextBox1.Text) TextBox1.Clear Endif End Private Sub PopupCopia() Clipboard.Current = 0 If TextBox1.Selected Then Clipboard.Copy(TextBox1.Text) End Private Sub PopupIncolla() Clipboard.Current = 0 TextBox1.Text = Clipboard.Paste() End Private Sub PopupRosso() TextBox1.Foreground = Color.Red End
Note
[1] La presente pagina è stata redatta dal membro Gianluigi del forum www.gambas-it.org .