Autore Topic: [Risolto] Menu, SubMenu e ammennucoli vari  (Letto 626 volte)

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
[Risolto] Menu, SubMenu e ammennucoli vari
« il: 04 Ottobre 2017, 00:34:48 »
Buona serata a tutti
E' da poco che sto "giochicchiando" con Gambas, ho provato a modificare un codice dei Menù trovato sulla Guida della Comunità, ma ovviamente ho commesso degli errori dovuti alla mia ignoranza in materia.
Volevo porvi un quesito, anzi due...
primo: dove posso trovare una documentazione completa ( e magari esaustiva) di tutte le classi, funzioni e moduli vari, possibilmente visionabile "off line" ?
secondo: Vi posto il codice, la prima sub funziona ( Public Sub submn_Click() ) ma la seconda no.
Cosa manca?
Codice: [Seleziona]
' Dichiarazione d'intenti ...
Public mn_1 As Menu
Public submn As Menu
Public sub_submn As Menu


Public Sub _new()

End

Public Sub Form_Open()
Dim i, j As Integer
Dim testo1, testo2 As String
' creazione dei vari menù e sub menù ...
mn_1 = New Menu(Me, False)
mn_1.Caption = "Operazioni"
' ciclo per la creazione ...
For i = 0 To 3
  Select Case i
    Case 0
      testo1 = "Documento"
    Case 1
      testo1 = "Salva"
    Case 2
      testo1 = "Stampa"
    Case 3
      testo1 = "Esci"         
  End Select
  With submn = New Menu(mn_1, False)
    .Caption = testo1
    .Name = testo1
  End With
  Object.Attach(submn, Me, "SubMn")
  If i = 0 Then
    For j = 0 To 1
      Select Case j
        Case 0
          testo2 = "Crea"
        Case 1
          testo2 = "Richiama"
      End Select
      With sub_submn = New Menu(submn, False)
        .Caption = testo2
        .Name = testo2
        '.Action = sub_submn.Name
      End With
      Object.Attach(sub_submn, submn, "SubSubMn")
    Next
  Endif
  If i = 2 Then
    For j = 0 To 1
      Select Case j
        Case 0
          testo2 = "Crea file Pdf"
        Case 1
          testo2 = "Direttamente"
      End Select
      With sub_submn = New Menu(submn, False)
        .Caption = testo2
        .Name = testo2
      End With   
      Object.Attach(sub_submn, submn, "SubSubMn")
    Next
  Endif
Next

End

Public Sub submn_Click() 

' Riscontriamo quale sotto-voce abbiamo scelto:
  Message.Info("Hai premuto il sotto-menu: " & Last.Name)
  If Last.Name = "Esci" Then
    Me.Close
  Endif
End

Public Sub sub_submn_Click() 

' Riscontriamo quale sotto-voce abbiamo scelto:
  Message.Info("Hai premuto il sotto-sotto-menu: ")
 
End
   
 :-\ Vi ringazio  ;)
Citazione
"siamo tutti ignoranti ma fortunatamente non della stessa cosa"
« Ultima modifica: 04 Ottobre 2017, 12:11:22 da Gianluigi »
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.303
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Menu, SubMenu e ammennucoli vari
« Risposta #1 il: 04 Ottobre 2017, 00:37:51 »
primo: dove posso trovare una documentazione completa ( e magari esaustiva) di tutte le classi, funzioni e moduli vari
Suggerirei questa pagina:

http://gambaswiki.org/wiki
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.303
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Menu, SubMenu e ammennucoli vari
« Risposta #2 il: 04 Ottobre 2017, 01:09:08 »
secondo: Vi posto il codice, la prima sub funziona ( Public Sub submn_Click() ) ma la seconda no.
Cosa manca?

1) Il secondo parametro attuale del Metodo .Attach( ) della Classe Object richiede il riferimento al Form principale (Me), e non alla variabile relativa al primo sotto-menu.

2) Il nome del Gruppo di Eventi "sub_submn", indicato nella seconda routine, è errato.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Menu, SubMenu e ammennucoli vari
« Risposta #3 il: 04 Ottobre 2017, 10:27:23 »
Ti allego il codice corretto (almeno spero) secondo i suggerimenti di Vuott e oltre.
Comunque la vera forza di Gambas è quella di permettere al programmatore di disegnare velocemente un'interfaccia grafica stupenda direttamente dalla IDE senza dover ricorrere al codice.
Questo esercizio può essere utile per capire certi meccanismi ma, se non hai particolari esigenze di dinamicità es. cambio del nome dei submenu, io ti consiglio di sfruttare le ottime caratteristiche proprie di Gambas.

Codice: [Seleziona]
' Dichiarazione delle variabili globali (queste variabili interessando solo questa classe devono essere dichiarate private)
' Nota: È buona norma evitare sempre le variabili pubbliche, se servissero ci si può rivolgere alle proprietà.
Private mn_1 As Menu
Private submn As Menu
Private sub_submn As Menu

Public Sub Form_Open()

  Dim i, j As Integer
  Dim testo1, testo2 As String
  ' creazione dei vari menù e sub menù ...
  mn_1 = New Menu(Me, False)
  mn_1.Caption = "Operazioni"
  ' ciclo per la creazione ...
  For i = 0 To 3
    Select Case i
      Case 0
        testo1 = "Documento"
      Case 1
        testo1 = "Salva"
      Case 2
        testo1 = "Stampa"
      Case 3
        testo1 = "Esci"
    End Select
    With submn = New Menu(mn_1, False)
      .Caption = testo1
      .Name = testo1
    End With
    Object.Attach(submn, Me, "submn")
    If i = 0 Then
      For j = 0 To 1
        Select Case j
          Case 0
            testo2 = "Crea"
          Case 1
            testo2 = "Richiama"
        End Select
        With sub_submn = New Menu(submn, False)
          .Caption = testo2
          .Name = testo2
          '.Action = sub_submn.Name
        End With
        Object.Attach(sub_submn, Me, "sub_submn")
      Next
    Endif
    If i = 2 Then
      For j = 0 To 1
        Select Case j
          Case 0
            testo2 = "Crea file Pdf"
          Case 1
            testo2 = "Direttamente"
        End Select
        With sub_submn = New Menu(submn, False)
          .Caption = testo2
          .Name = testo2
        End With   
        Object.Attach(sub_submn, Me, "sub_submn")
      Next
    Endif
  Next

End

Public Sub submn_Click() 

  ' Riscontriamo quale sotto-voce abbiamo scelto:
  Message.Info("Hai premuto il sotto-menu: " & Last.Name)
  If Last.Name = "Esci" Then
    Me.Close
  Endif

End

Public Sub sub_submn_Click() 

  ' Riscontriamo quale sotto-voce abbiamo scelto:
  Message.Info("Hai premuto il sotto-sotto-menu: " & Last.Name)

End

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:Menu, SubMenu e ammennucoli vari
« Risposta #4 il: 04 Ottobre 2017, 10:59:15 »
primo: dove posso trovare una documentazione ... possibilmente visionabile "off line" ?

Per avere la guida in linea molto ridotta anche quando si è offline occorre andare al Menu > Tools > Preferenze pagina Help & applications e spostare su ON l'interruttore e quindi fare il download della documentazione.
Ripristinare l'interruttore su OFF per ritornare attivi in linea.

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
[Risolto] Re:Menu, SubMenu e ammennucoli vari
« Risposta #5 il: 04 Ottobre 2017, 11:09:07 »
Grazie, grazie di cuore  :D
Sono un po arrugginito ( un po tanto a dir la verità ! ) ... crisi della terza età ?
Ora non mi resta che imparare.
 :-[ :-[ :-[
Grazie ancora, seguirò i suggerimenti.
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.303
  • Ne mors quidem nos iunget
    • Mostra profilo
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:[Risolto] Menu, SubMenu e ammennucoli vari
« Risposta #7 il: 04 Ottobre 2017, 12:14:59 »
Ciao vigiot,
questa volta l'ho messo a posto io, la prossima volta ricordati di inserire il Risolto nel primo oggetto agendo sul pulsante Modifica.

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro