Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122

    [VB.NET] Scomposizione proprietà name oggetto

    Salve,
    ho molte label chiamate label1, label2, ecc
    è possibile richiamarle automaticamente in un ciclo for?
    Ovvero scomporle "label" & i ?
    Dovrei fare delle verifiche su ogni label quindi il ciclo for Each control non mi sarebbe molto di aiuto.
    Grazie
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  2. #2
    Invece For Each mi sembra adatto:

    For Each c As Control In XX.Controls
    If TypeOf c Is Label Then
    ...............
    End If
    Next

  3. #3
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    No perchè dovrei fare un casino di condizioni if

    if c=label1 then
    bla bla bla
    elseif c = label2 then
    bla bla bla
    elseif c = label3 then
    bla bla bla
    end if


    mentre se riuscissi a scomporre "label" dal numero avrei risolto ogni problema.
    Ho provato a cercare ma non ho trovato niente sulla rete
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  4. #4
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    se sono molte potresti crearle da codice tramite un array invece che manualmente in questo modo
    codice:
    Dim arrLB(3) As Label, posx As Integer, posy As Integer
    For I As Byte = 0 To 3
      arrLB(I) = New Label
      posx = 24 + 120 * I 
      posy = 300
      arrLB(I).Location = New Point(posx, posy)
      arrLB(I).Size = New Size(100, 35)
      arrLB(I).Text = I.ToString 
      Me.Controls.Add(arrLB(I))
    Next

  5. #5
    Quote Originariamente inviata da Nix82 Visualizza il messaggio
    .... mentre se riuscissi a scomporre "label" dal numero avrei risolto ogni problema.
    Ho provato a cercare ma non ho trovato niente sulla rete
    For Each c As Control In XX.Controls
    If TypeOf c Is Label Then
    Select case Cint(c.Name.Last) (o se sono più di 10... Select case Cint(C.Name.Replace("label",""))

    praticamente hai scomposto Label e Numeri.

    Puoi benissimo fare una Function che dal numero ti ritorni il Testo: no SelectCase ma
    If Cint(c.Name.Last) = MyNum then Return c.Text
    Ultima modifica di eziogsv; 05-06-2017 a 16:17

  6. #6
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Quote Originariamente inviata da eziogsv Visualizza il messaggio
    For Each c As Control In XX.Controls
    If TypeOf c Is Label Then
    Select case Cint(c.Name.Last) (o se sono più di 10... Select case Cint(C.Name.Replace("label",""))

    praticamente hai scomposto Label e Numeri.

    Puoi benissimo fare una Function che dal numero ti ritorni il Testo: no SelectCase ma
    If Cint(c.Name.Last) = MyNum then Return c.Text
    E' vero che ho l'ultimo numero della label ma è anche vero che sono punto a capo perchè ho sempre il case al posto dell'if.

    Io, banalmente ho bisogno di una cosa del genere:
    for i = 1 to 10
    (label + i).text = i
    next

    e questo in maniera generale, sia con gli oggetti sia con le variabili.
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  7. #7
    Quote Originariamente inviata da Nix82 Visualizza il messaggio
    Io, banalmente ho bisogno di una cosa del genere:
    for i = 1 to 10
    (label + i).text = i
    next
    Bisogno che puoi benissimo realizzare con 5 righe di codice, utilizzando il codice da me suggerito, senza nessun bisogno di IF o Select Case.

    Il codice è così semplice (riferito alla esigenza di cui al tuo esempio) che penso sia meglio se ci arrivi da te... e sono sicuro che appena ci farai mente locale dirai: "Ma come ho fatto a non pensarci? Eppure mi hanno dato tutti gli elementi per la bisogna."
    Ultima modifica di eziogsv; 05-06-2017 a 19:28

  8. #8
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Quote Originariamente inviata da eziogsv Visualizza il messaggio
    Bisogno che puoi benissimo realizzare con 5 righe di codice, utilizzando il codice da me suggerito, senza nessun bisogno di IF o Select Case.

    Il codice è così semplice (riferito alla esigenza di cui al tuo esempio) che penso sia meglio se ci arrivi da te... e sono sicuro che appena ci farai mente locale dirai: "Ma come ho fatto a non pensarci? Eppure mi hanno dato tutti gli elementi per la bisogna."
    Si grazie. Sto buttando giù del codice e pian piano ci sto riuscendo.
    Solo un'ultima cosa. Fino adesso abbiamo analizzato gli oggetti. Se volessi farlo con le variabili sarebbe possibile?
    Ovvero ho 10 variabili
    var1
    var2
    ecc.
    Non è la stessa cosa. In internet consigliano un vettore o una matrice ma io mi sono creato le mie variabili di tipo Structure e non sarebbe molto semplice passare dall'uno all'altro.
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

  9. #9
    Scusa ma il tuo intento non è chiaro. Già mi sfugge perché dovresti (immagino) regolarmente attribuire al testo di 10 Label il loro valore numerico. A maggior ragione perché attribuirlo a delle variabili.

    Se le variabili non sono 1.000 la cosa più semplice non sarebbe creare una Sub Inizializza_Variabili che richiami ogni volta che vuoi per resettarne i valori a quelli di default?

  10. #10
    Utente di HTML.it L'avatar di Nix82
    Registrato dal
    Oct 2001
    residenza
    Mussolente (VI)
    Messaggi
    1,122
    Quote Originariamente inviata da eziogsv Visualizza il messaggio
    Scusa ma il tuo intento non è chiaro. Già mi sfugge perché dovresti (immagino) regolarmente attribuire al testo di 10 Label il loro valore numerico. A maggior ragione perché attribuirlo a delle variabili.

    Se le variabili non sono 1.000 la cosa più semplice non sarebbe creare una Sub Inizializza_Variabili che richiami ogni volta che vuoi per resettarne i valori a quelli di default?
    Lo credo bene che non capisci in quanto non è il mio caso. In realtà il mio codice è molto più complesso ma per chiedere sul forum faccio delle domande basilari che tanto ad adattarmi il codice dopo ci penso io.
    Se vuoi il mio caso reale è questo: ho 5 groupbox con all'interno label e picturebox e ad ogni groupbox è assegnata una verifica a mezzo di una variabile structure con due rami: soll e res.
    Quello che devo fare è CICLARE questo: se verifica1.soll < verifica1.res allora nella label e nelle picturebox che voglio io del groupbox1 scrivimi questo o visualizzami questo.
    A gestire gli oggetti ci sono riuscito con il tuo codice, il problema ora sono le variaibli perchè dovrei avere una cosa di questo tipo:

    if verifica + i.soll < verifica + i.res then
    fai questo
    else
    fai quello
    end if

    che alla fine è esattamente quello che chiedevo con un esempio banale!
    La cultura è il nostro passaporto per il domani. Il futuro appartiene alle persone che si preparano oggi.
    Martin Luther King

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.