Autore Topic: Cercare oggetto istanziato usando la sua proprietà .text  (Letto 1884 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.373
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #15 il: 19 Agosto 2019, 18:50:58 »
Sì, forse una pausa può far bene.
« 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.705
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #16 il: 19 Agosto 2019, 19:04:26 »
SCOPERTO!
Prova a mettere i pulsanti dentro una picturebox.
a me  non funziona più!
 :-\
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.373
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #17 il: 19 Agosto 2019, 19:05:48 »
... da quando una PictureBox è diventata un Oggetto Container ?   :violent:




« Ultima modifica: 19 Agosto 2019, 19:18:43 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.705
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #18 il: 19 Agosto 2019, 19:10:49 »
Citazione
...e ci credo: da quando una PictureBox è diventata un Oggetto Container ?   :violent:
Ho bisogno di una immagine di fondo...
Ma nell'elenco degli oggetti che hanno proprietà .name c'è l'oggetto in questione e con il valore corretto!
 :-\
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.373
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #19 il: 19 Agosto 2019, 19:16:16 »
 :rolleyes:
« Ultima modifica: 19 Agosto 2019, 19:26:39 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.373
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #20 il: 19 Agosto 2019, 19:26:08 »
Il problema sta nel fatto che tra gli Oggetti verificati con l'IF c'è anche la PictureBox (che è anch'essa figlia di FMain come i Button), la quale non possiede una proprietà .Text.

Ecco perché.

Pertanto devi "filtrare" gli Oggetti da far verificare al IF.
« Ultima modifica: 19 Agosto 2019, 19:27:54 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.373
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #21 il: 19 Agosto 2019, 19:38:46 »
Pertanto devi "filtrare" gli Oggetti da far verificare al IF.

Facciamo un semplice esempio pratico.
Su un Form poniamo una PictruBox, sulla quale poniamo due Button.
Nell'IDE attribuiamo alla proprietà .Text del primo Button la stringa "kicco", mentre a quella del secondo la stringa "seveso".
Poi lanciamo in modalità passo-dopo-passo (F8) il seguente codice e vediamo come si comporta e cosa viene scritto in console:
Codice: [Seleziona]
Public Sub Form_Open()

  Dim cnt As Object

  For Each cnt In FMain.Controls
    Print cnt.Name
    If cnt = PictureBox1 Then Continue
    Print cnt.text
    If cnt.text = "kicco" Then Print "trovato !"
  Next

End
« Ultima modifica: 19 Agosto 2019, 19:39:21 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.705
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #22 il: 19 Agosto 2019, 20:29:46 »
 :ciao:
Ho usato
Codice: [Seleziona]
If Str(hCon.text) = "c1" Then
e funziona!
 :2birre:
 e da queste parti la birra va a fiumi!!!!
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #23 il: 20 Agosto 2019, 00:01:38 »
Tu hai bisogno di avere un'immagine di fondo per la tua form.
Mi spieghi come fai ad ottenerla con una PictureBox?
Devi sempre pensare a come lavora Gambas, che tutta la grafica si basa sui container.
Un tipo di sfondo così andrebbe bene?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.373
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #24 il: 20 Agosto 2019, 10:26:47 »
Ho usato
Codice: [Seleziona]
If Str(hCon.text) = "c1" Then
e funziona!
Sì, nel post, che poi ho cancellato/sostituito, ti avevo suggerito di usare la funzione nativa di Gambas Str( ).
Non viene più sollevato l'errore, perché - a mio modesto avviso - quanto ricevuto viene "adeguato", adattato alla modalità Stringa dalla variabile Str() da te utilizzata. Insomma in questo caso la funzione nativa Str() rende comprensbile, nelle modalità strutturali di una stringa di caratteri come stabilite dal linguaggio Gambas, ciò che riceve in modo incomprensibile per essere una "stringa" secondo il protocollo Gambas.
In tal senso anche il Null di Gambas assume ovviamente una forma, prevista dal linguaggio Gambas, affinché possa essere concepito come una stringa Null.
Una Stringa in Gambas viene gestita attraverso una Struttura, scritta in C, chiamata "VALUE_STRING" visibile nel file header gbx_value.h dei sorgenti di Gambas.

Pertanto, l'uso di quella funzione Str() diventa un astuto stratagemma per superare l'ostacolo, per evitare la sollevazione dell'errore, ma non è certo una soluzione pulita ed elegante.
La soluzione ortodossa e giusta è pensare ad un filtro per saltare la valutazione dell'Oggetto PictureBox all'interno della riga del IF.


« Ultima modifica: 20 Agosto 2019, 10:28: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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #25 il: 20 Agosto 2019, 11:33:55 »
...
Pertanto, l'uso di quella funzione Str() diventa un astuto stratagemma per superare l'ostacolo, per evitare la sollevazione dell'errore, ma non è certo una soluzione pulita ed elegante.
La soluzione ortodossa e giusta è pensare ad un filtro per saltare la valutazione dell'Oggetto PictureBox all'interno della riga del IF.

Non riesco ad afferrare quello che intendi, se guardi il mio esempio vedrai che non c'è nessuna picturebox, ma se non uso Str() ...
Cosa mi sfugge?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.373
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #26 il: 20 Agosto 2019, 11:58:13 »
se guardi il mio esempio vedrai che non c'è nessuna picturebox....
Cosa mi sfugge?

Ti sfugge l'Oggetto Panel che è un "Figlio" di FMain.

La cosa che sfugge invece a me è perché non viene prioritariamente sollevato l'errore di Proprietà non posseduta dall'oggetto rappresentato dalla variabile di tipo Object, invece di dire che il Tipo di dato non è corrispondente.
Ho provato a mettere il nome inventato di una presunta proprietà alla variabile di tipo Object, e anche in questo caso mi solleva semplicemente l'errore del Tipo non corrispondente.
Se pongo quella proprietà, da me inventata, nella funzione Str(), ecco che mi solleva l'errore del simbolo (quindi della Proprietà) sconosciuto.
Forse Object tende preliminarmente ad accettare tutti i "simboli" possibili per i vari Oggetti esistenti in Gambas, salvo verifica successiva. ...ma perché accetta pure i nomi inventati ? Mah !
« Ultima modifica: 20 Agosto 2019, 12:12:20 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.161
  • Tonno verde
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #27 il: 20 Agosto 2019, 14:12:50 »
Si hai ragione.
Un modo per poter filtrare credo è questo:
Codice: [Seleziona]
Public Sub Form_Open()

  Dim obj As Object

  Button1_Click
  For Each obj In Me.Controls
    If object.Type(obj) = "Button" Then
      If obj.Text = "Lilla" Then obj.Background = Color.Blue
    Endif
  Next

End

Avevo scritto delle cavolate, occorre sempre pensare che se gli oggetti sono all'interno di un contenitore, automaticamente diventano figli del contenitore.
Ora vedo se con una bella tazzona di caffè mi sveglio  ;D
« Ultima modifica: 20 Agosto 2019, 14:48:26 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.705
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #28 il: 20 Agosto 2019, 14:41:14 »
 :ciao:
Citazione
Tu hai bisogno di avere un'immagine di fondo per la tua form.
Mi spieghi come fai ad ottenerla con una PictureBox?
Devi sempre pensare a come lavora Gambas, che tutta la grafica si basa sui container.
Un tipo di sfondo così andrebbe bene?
Grazie Gianluigi!
L'immagine che ho bisogno deve essere tutta visibile. Ecco perchè di primo acchito l'ho "infilata" in una PictureBox, lasciando libero uno spazio per i pulsanti.
La soluzione che hai proposto, Gianluigi l'ho pensata anch'io e per ovviare all'occupazione di spazio sul Form ho deciso di usare solo il menu che appare col tasto destro del mouse. Modo operativo che in genere mi piace molto e che in parte ho già implementato.

Resta la questione sollevata da Vuott su Str() per adattare il formato che sembra irritare (non poco) San Midi (semper laudatur!). sanmidi
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #29 il: 20 Agosto 2019, 14:50:37 »
...

Resta la questione sollevata da Vuott su Str() per adattare il formato che sembra irritare (non poco) San Midi (semper laudatur!). sanmidi
 :ciao:

La soluzione (filtro) da me proposta non ti garba?
A San Midi credo che vada bene...
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro