Autore Topic: [Risolto] non riesco a far sì che un pulsante invii del testo a una label...  (Letto 871 volte)

Offline LuigiR

  • Gamberetto
  • *
  • Post: 2
    • Mostra profilo
Buongiorno a tutti.
Sono nuovo sia di qui che di Gambas e me lo sto studiando e sperimentando.
Vi pongo allora una prima domanda dopo un giorno che provo.
Premetto: Gambas 3 su Fedora in ambiente Mate.
Allora:
voglio che al clic di un pulsante appaia il testo da me indicato in una label.

Se costruisco in ambiente grafico il pulsante e la label funziona perfettamente.
Se lo faccio tramite codice mi appaiono sia il pulsante che l'etichetta ma al momento dell'avvio del programma subito mi dice: identificatore sconosciuto lbl nel FMain Class.
Son sicuro che è qualcosa di semplicissimo che non riesco a vedere, ma cosa?
Vi riporto il codice che inserisco sperando in una risposta.

Codice: [Seleziona]
Public Sub Form_Open()

  Dim nascondi As Button
  Dim lbl As Label
  nascondi = New Button(Me) As "nascondi"
  lbl = New Label(Me) As "label"
  nascondi.enabled = True
  nascondi.X = 50
  nascondi.Y = 200
  nascondi.Width = 200
  nascondi.Height = 30
  nascondi.Text = ""
  nascondi.Show
 
  lbl.enabled = True
  lbl.X = 50
  lbl.Y = 100
  lbl.Width = 200
  lbl.Height = 40
  lbl.Text = ""
  lbl.Background = Color.RGB(255, 255, 255)
  lbl.Foreground = Color.RGB(0, 0, 0)
  lbl.Show

End
Public Sub nascondi_click()
 
  lbl.Text = "Beppe"
 
End

Un saluto
Luigi
« Ultima modifica: 11 Luglio 2020, 15:20:20 da LuigiR »

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re:non riesco a far sì che un pulsante invii del testo a una label...
« Risposta #1 il: 11 Luglio 2020, 11:32:21 »
Ciao
devi dichiarare lbl all'inizio, fuori dalle funzioni, inoltre dalgi lo stesso nome
Citazione
  lbl = New Label(Me) As "lbl"

questo codice funziona
Citazione
Private lbl As Label

Public Sub Form_Open()

  Dim nascondi As Button
 
  nascondi = New Button(Me) As "nascondi"
  lbl = New Label(Me) As "lbl"
  nascondi.enabled = True
  nascondi.X = 50
  nascondi.Y = 200
  nascondi.Width = 200
  nascondi.Height = 30
  nascondi.Text = ""
  nascondi.Show
 
  lbl.enabled = True
  lbl.X = 50
  lbl.Y = 100
  lbl.Width = 200
  lbl.Height = 40
  lbl.Text = ""
  lbl.Background = Color.RGB(255, 255, 255)
  lbl.Foreground = Color.RGB(0, 0, 0)
  lbl.Show

End
Public Sub nascondi_click()
 
  lbl.Text = "Beppe"
 
End

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.311
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:non riesco a far sì che un pulsante invii del testo a una label...
« Risposta #2 il: 11 Luglio 2020, 12:17:09 »
devi dichiarare lbl all'inizio, fuori dalle funzioni

A quanto già spiegato da Golia, aggiungo solo che l'identificatore "lbl" dell'Oggetto Label non può essere visto anche nella subroutine "Public Sub nascondi_click()", poiché lo hai dichiarato come variabile locale nella subroutine "Public Sub Form_Open()".
Ciò significa che quell'identificatore di variabile potrà essere visto (scope) e, pertanto, preso in considerazione soltanto all'interno della subroutine ove è stato dichiarato.
Ecco perché Golia ti ha suggerito di effettuare una dichiarazione dell'identificatore di variabile "lbl" come Globale.
Vedi al riguardo:
  https://www.gambas-it.org/wiki/index.php?title=Le_Variabili#Variabili_globali_e_variabili_locali
  https://www.gambas-it.org/wiki/index.php?title=Lezioni:_introduzione_generale#Visibilit.C3.A0_all.27interno_della_Classe_e_del_Modulo:_.22Globale.22_e_.22Locale.22
« Ultima modifica: 11 Luglio 2020, 14:22:08 da vuott »
« 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:non riesco a far sì che un pulsante invii del testo a una label...
« Risposta #3 il: 11 Luglio 2020, 12:21:28 »
A quanto già suggerito aggiungo il mio  :P

Codice: [Seleziona]
' Gambas class file

Private lbl As Label
Private nascondi As Button

Public Sub Form_Open()

  nascondi = New Button(Me) As "nascondi"
  lbl = New Label(Me) As "label" ' As label serve a poco per una label
  nascondi.enabled = True
  nascondi.X = 50
  nascondi.Y = 200
  nascondi.Width = 200
  nascondi.Height = 30
  nascondi.Text = ""
  nascondi.Show
 
  lbl.enabled = True
  lbl.X = 50
  lbl.Y = 100
  lbl.Width = 200
  lbl.Height = 40
  lbl.Text = ""
  lbl.Background = Color.RGB(255, 255, 255)
  lbl.Foreground = Color.RGB(0, 0, 0)
  'lbl.Show '??? non seve se prima non l'hai nascosta

End
Public Sub nascondi_click()
 
  lbl.Text = "Beppe"
  nascondi.Visible = False

End

Ti do il Ben arrivato  pubblico :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:non riesco a far sì che un pulsante invii del testo a una label...
« Risposta #4 il: 11 Luglio 2020, 14:05:26 »
Ora che abbiamo risposto al tuo quesito, per evitare che tu intraprenda la solita strada sbagliata (credo che all'inizio lo abbiamo fatto tutti) su come si disegna una finestra, ti suggerisco di studiarti bene i contenitori.
La principale caratteristica di Gambas è quella che con pochi click ti permette di disegnare finestre professionali senza quasi l'ausilio di codice.
Per esempio puoi dare un'occhiata al post prima del tuo:
https://www.gambas-it.org/smf/index.php?topic=7859.0
Puoi scaricarti qualche mio progettino dalla farm, ma la cosa migliore è guardare direttamente il codice di Minisini, l'IDE di Gambas è scritta e disegnata in Gambas.
Se ci sono cose che non capisci basta chiedere.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline LuigiR

  • Gamberetto
  • *
  • Post: 2
    • Mostra profilo
Ragazzi, vi ringrazio. Quindi era sufficiente che dichiarassi innanzitutto le istanze (perché devono essere globali, vero?) come con le variabili, neanche sarebbe stato necessario metterle sotto il Sub. E dire che l'avevo anche letto.
Ma che volete, abituato a Python-Tkinter e Tcl-Tk ...

Tra parentesi, sto studiando Gambas su "A Beginner's Guide to Gambas" di John W. Rittinghouse, che fa riferimento alla versione 1.0.9. Ovvio che tengo conto delle dovute differenze con la 3.

Ancora grazie e un sauto :ciao:
Luigi

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo

Tra parentesi, sto studiando Gambas su "A Beginner's Guide to Gambas" di John W. Rittinghouse, che fa riferimento alla versione 1.0.9. Ovvio che tengo conto delle dovute differenze con la 3.


Oltre al nostro wiki, qui:
https://wordpress.gambas.one/a-book-by-gerry-buzolic/
e qui:
https://gambas-buch.de/dwen/doku.php
c'è qualcosa di più recente.

Per tutti gli altri link lascio la parola a vuott perché non ho trovato dove li ha scritti  :-[
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.311
  • Ne mors quidem nos iunget
    • Mostra profilo
« Ultima modifica: 27 Luglio 2020, 00:20:14 da vuott »
« 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.311
  • Ne mors quidem nos iunget
    • Mostra profilo
Quindi era sufficiente che dichiarassi innanzitutto le istanze (perché devono essere globali, vero?) come con le variabili, neanche sarebbe stato necessario metterle sotto il Sub.
Quel che è fondamentale in ordine alla visibilità di un simbolo identificatore, è il momento (o meglio la posizione all'interno dell'intero codice) della sua Dichiarazione, ossia della determinazione del tipo di dati al quale esso fa riferimento, e non della istanziazione di un Oggetto.




...sto studiando Gambas su "A Beginner's Guide to Gambas" di John W. Rittinghouse, che fa riferimento alla versione 1.0.9. Ovvio che tengo conto delle dovute differenze con la 3.
Sì, è un testo ad oggi eccessivamente obsoleto, vetusto... decrepito.   :skull:


« Ultima modifica: 11 Luglio 2020, 17:19:13 da vuott »
« 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 kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Citazione
https://wordpress.gambas.one/a-book-by-gerry-buzolic/
Di questo non sapevo niente!
Me lo guarderò con calma!!!
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.311
  • Ne mors quidem nos iunget
    • Mostra profilo
Me lo guarderò con calma!!!

...ma perché non gb.map ?!

« 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 kicco

  • Senatore Gambero
  • ******
  • Post: 1.703
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)