Gambas-it

Gambas3 => Programmazione => Topic aperto da: LuigiR - 11 Luglio 2020, 10:38:18

Titolo: [Risolto] non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: LuigiR - 11 Luglio 2020, 10:38:18
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
Titolo: Re:non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: Golia - 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
Titolo: Re:non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: vuott - 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
Titolo: Re:non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: Gianluigi - 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:
Titolo: Re:non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: Gianluigi - 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.
Titolo: Re:[Risolto] non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: LuigiR - 11 Luglio 2020, 15:34:46
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
Titolo: Re:[Risolto] non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: Gianluigi - 11 Luglio 2020, 16:23:54

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  :-[
Titolo: Re:[Risolto] non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: vuott - 11 Luglio 2020, 17:08:26
Per tutti gli altri link lascio la parola a vuott

(https://i.pinimg.com/originals/c5/f6/09/c5f609b5f03ecb30780bc0688e3af92c.gif)

Sito ufficiale di Gambas:
 - http://gambas.sourceforge.net/en/main.html

Wiki ufficiale di Gambas:
 - http://gambaswiki.org/wiki

Forum, Wiki ed altri siti esistenti su Gambas:
 - https://gambas-es.org/
 - https://foro.gambas-es.org/
 - http://www.gambasforge.org/
 - http://www.gambas-club.de/index.php
 - https://forum.gambas.one/
 - http://www.gambaslinux.fr/
 - https://www.gambas-it.org/smf/
 - http://www.gambas-it.org/wiki/index.php?title=Pagina_principale
 - https://de.wikibooks.org/wiki/Gambas
 - https://gambas-buch.de/dwen/doku.php
 - http://www.gambasforge.org/wiki
 - http://sologambas.blogspot.it/p/indice.html
 - https://cursogambas.blogspot.com/p/indice.html
 - https://pigalore.miraheze.org/wiki/Main_Page
 - http://icculus.org/piga/

Testi e manuali esistenti:
 - http://gambaswiki.org/wiki/doc/book?nh&l=en
 - https://en.wikibooks.org/wiki/Programming_Gambas_from_Zip
 - https://wordpress.gambas.one/a-book-by-gerry-buzolic/
Titolo: Re:[Risolto] non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: vuott - 11 Luglio 2020, 17:16:42
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:


Titolo: Re:[Risolto] non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: kicco - 11 Luglio 2020, 20:02:45
Citazione
https://wordpress.gambas.one/a-book-by-gerry-buzolic/
Di questo non sapevo niente!
Me lo guarderò con calma!!!
 :ciao:
Titolo: Re:[Risolto] non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: vuott - 11 Luglio 2020, 20:14:11
Me lo guarderò con calma!!!

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

(https://thumbs.gfycat.com/CoolInfantileCoelacanth-size_restricted.gif)
Titolo: Re:[Risolto] non riesco a far sì che un pulsante invii del testo a una label...
Inserito da: kicco - 11 Luglio 2020, 22:26:21
 :P