Creare Menu popup utilizzando l'Editor di menu

Da Gambas-it.org - Wikipedia.

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 .