Creare un menu popup su un campo a video in Foundation

Se in una applicazione web, realizzata con Instant Developer Foundation, ho bisogno di aprire un menu popup, cliccando con il tasto destro su di esso, per compiere una serie di azioni come posso fare?

In soldoni voglio ottenere questo risultato:

Per realizzarlo devo aggiungere alla mia videata un elemento CommandSet con le proprietà Toolbar e Menu impostate a false. A questo aggiungo gli elementi Command che mi occorrono con le relative procedure collegate.

Quindi aggiungo al pannello l’evento OnMouseClick con questo codice:

event Dati.Dati.onMousClick (
  int:mouseButtons Button  
  int X               
  int Y                
  int XB               
  int YB               
  int Column           
  int Row              
  inout boolean Cancel 
)
{
  if (Column == Dati.Codice.me() and Button == Right)
  {
    MenuPopup.openPopup(Bottom, Dati.me(), Dati.Codice.me(), ...)
  }
}

Dove Dati.Codice è il campo al quale voglio attaccare ii menu popup, MenuPopup è il mio menu da aprire.

Quindi cliccando con il tasto destro del mouse otterremo l’apertura del menu.

Allego il progetto di esempio
Menu Popup Campo.zip (484,2 KB)

6 Mi Piace

Menu popup generico per tutta l’applicazione

Nel caso io voglia fare si che il menu non sia specifico di un camp ma ve ne sia uno generico che si apre su qualunque campo venga cliccato posso procedere in questo modo:

  • il CommandSet lo creo a livello di applicazione e non dentro alla videata
  • rendo globale l’evento OnMouseClick

Il codice dell’evento globale

event NorthwindWeb.GlobalPanelMouseClick(
  IDPanel Panel        
  int:mouseButtons Button 
  lista valori MouseButtons
  int X
  int Y
  int XB
  int YB
  int Column
  int Row
  inout boolean Cancel 
)
{
  if (Button == Right && Column != -1)
  {
    TastoDestro.openPopupXY(XB, YB)
  }
}

Dove TastoDestro è il CommandSet da aprire.

Nota:

Per rendere un evento di pannello globale si può partire dallo specifico evento OnMouseClick aggiunto ad un pannello e poi con il tasto destro utilizzare la voce del menu contestuale, sull’evento, Vai alla funzione OnMouseClick.

Questo vi porterà nell’albero del progetto sul relativo evento del componente Libreria Pannello e qui sempre con il tasto destro cliccare sulla voce del menu contestuale Rendi Globale.

1 Mi Piace