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

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.705
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Picturebox con una serie di oggetti pulsanti.
Voglio identificarne uno tramite la proprietà .name.
se uso:
Codice: [Seleziona]
 For Each hCon In Me.Controls
                            If hCon.text = "pippo" Then
                               hCon.Background = Color.red
                            Endif
            Next
Mi dice chiaramente che .name non è una proprietà di control.
Non riesco a capire come aggirare l'ostacolo!  :-\
 :ciao:
« Ultima modifica: 19 Agosto 2019, 17:07:59 da kicco »
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 col suo "nome" .name
« Risposta #1 il: 19 Agosto 2019, 16:55:26 »
.name non è una proprietà di control.

Se parli della Classe "Control", questa Classe possiede la proprietà .Name !
« 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 col suo "nome" .name
« Risposta #2 il: 19 Agosto 2019, 17:06:15 »
 :ciao:
Citazione
Se parli della Classe "Control", questa Classe possiede la proprietà .Name !
:bad:  scusa! molevo dire .text non .name
 :bad:

PS: correggo anche il titolo!
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 col suo "nome" .name
« Risposta #3 il: 19 Agosto 2019, 17:08:42 »
Allora... torniamo alle "origini": ...questi pulsanti sono in via "astratta" innanzitutto degli................. ?   ;)


« Ultima modifica: 19 Agosto 2019, 17:11:16 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 #4 il: 19 Agosto 2019, 17:21:57 »
Citazione
Allora... torniamo alle "origini": ...questi pulsanti sono in via "astratta" innanzitutto degli................. ? 
..."cosi" che se premo fanno qualcosa. Ma devono anche cambiare "faccia" e descrizione (.text) a seconda della "luna" dell'utente.
Sono generati (attribuendo la proprietà .name), posizionati ed etichettati (.text) sempre dall'utente che può muoverli per una picturebox.
Creazione, drag & Drop e memorizzazione è già tutto fatto e funziona anche bene.
Quando mi arriva un segnale esterno (seriale), dal quale capisco quale pulsante modificare di stato. Ma ho un ID che corrisponde a .text.
 :-\
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 #5 il: 19 Agosto 2019, 17:30:07 »
No, non sono stato chiaro.

Guarda, la risposta al tuo problema ce l'hai davanti agli occhi, e l'hai già scritta tu nel titolo del tuo post.

I pulsanti, i Button, prima ancora di essere dei "Controlli", sono innanzitutto degli "Oggetti", in quanto istanze, ossia creazioni fattuali, concrete, di una Classe astratta.
Quindi la variabile, dalla quale leggere nell'If la proprietà .Text, andrà dichiarata di tipo....... ?
« 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 #6 il: 19 Agosto 2019, 17:56:08 »
Citazione
Quindi la variabile, dalla quale leggere nell'If la proprietà .Text, andrà dichiarata di tipo....... ?
dim hCom as object ?
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 #7 il: 19 Agosto 2019, 17:59:44 »
Appunto.

In un linguaggio orientato agli Oggetti (quasi) tutto è un Oggetto, quale Particolare che partecipa delle caratteristiche formali di una Classe, ossia di un Universale. Universale qui nel senso che vale per tutte le individuali istanze concrete di quella Classe.

Guarda qui ad esempio:
Codice: [Seleziona]
Public Sub Main()

   Dim ob As Object
   Dim ii As Integer[] = [111, 2222, 33333, 444444]
   Dim i As Integer

  ob = ii

  For Each i In ob
    Print i
  Next

End

Nel tuo programma la Classe Button potenzialmente può esprimere la proprietà .Text; cosa, questa, che verrà effettuata da vari Oggetti concreti, ossia i Button creati e posti in un Contenitore, all'interno di un'applicazione grafica.
« Ultima modifica: 19 Agosto 2019, 18:09:57 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 cogier

  • Gambero
  • **
  • Post: 58
    • Mostra profilo
Re:Cercare oggetto istanziato usando la sua proprietà .text
« Risposta #8 il: 19 Agosto 2019, 18:09:21 »
Changing the colour of buttons does not work very well in Gambas.

To do something similar I would do it like this: -

Codice: [Seleziona]
Public Sub Form_Open()
Dim oObj As Object

For Each oObj In Me.Children
  If Not IsNull(oObj.Text) Then
    If oObj.text = "pippo" Then
      oObj.Font.Bold = True
      oObj.Font.Size = 14
    End If
  Endif
Next

End

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 #9 il: 19 Agosto 2019, 18:19:40 »
Grazie Vuott e Cogier
@Vuott
mi da comunque un errore alla riga
Codice: [Seleziona]
 If hCon.text = "pippo" Then
con questo messaggio:

Tipo non corrispondente:cercato numero,data o stringa, ottenuto VOID al suo posto...
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 #10 il: 19 Agosto 2019, 18:29:24 »
Io mi rifaccio genericamente alle tue righe all'inizio postate.
Pongo ad esempio 4 Button, ciascuno con un testo alfanumerico nella rispettiva proprietà .Text.
Poi lancio il codice:

Codice: [Seleziona]
Public Sub Form_Open()

   Dim cnt As Object

  For Each cnt In Me.Controls
    Print cnt.Text
  Next

End
E funziona perfettamente.
« 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 #11 il: 19 Agosto 2019, 18:34:33 »
Citazione
E funziona perfettamente.
e anche nel mio caso, mi elenca tutti gli oggetti.
M quando creo l'IF di confronto sembra che non riconosca la proprietà .text
Faccio una prova usando il tuo caso.
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

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 #12 il: 19 Agosto 2019, 18:37:10 »
Funziona!
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 #13 il: 19 Agosto 2019, 18:38:38 »
...quindi ?
Hai trovato il problema dell'errore sollevato ?
« 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 #14 il: 19 Agosto 2019, 18:46:37 »
No! Se applico le stesse regole dentro il progetto non funzionano.
Se faccio il print vedo tutti gli oggetti compreso quello che sto cercando di modificare, correttamente.
Quando uso l'IF non funziona. Per sicurezza ho impostato direttamente il valore (stringa "c1") senza prenderlo dalla seriale, magari c'è qualche errore di conversione...
Ho controllato che non ci fossero spazi o caratteri ascii non stampabili ecc. nella proprietà .text
ma sembra tutto a posto!
Boh! forse devo fermarmi e lasciare decantare le cose perchè, come capita spesso, sarà una cazzata!
Almeno spero!
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)