Autore Topic: Come pulire il codice? (Ripetizione stesso tipo di componente)  (Letto 994 volte)

Offline Francoiky

  • Gamberetto
  • *
  • Post: 33
    • Mostra profilo
Slave; sto cercando un modo per rendere più pulito il mio codice semplificando una cosa del genere:
Codice: gambas [Seleziona]
Label1.Text = ""
Label2.Text = ""
Label3.Text = ""
Label4.Text = ""
Label5.Text = ""
Label6.Text = ""
Label7.Text = ""
Label8.Text = ""
Label9.Text = ""
Label10.Text = ""
Label11.Text = ""
Label12.Text = ""
Label13.Text = ""
Label14.Text = ""
Label15.Text = ""
Label16.Text = ""
Label17.Text = ""
Label18.Text = ""
Label19.Text = ""
Label20.Text = ""


Esiste un modo per automatizzare questa cosa senza dover ripetere ogni riga? (Concettualmente vorrei dire al programma: assegna ai Label dal 1 al 20 il Text "bla, bla , bla") ???

Offline Taurus dei miracoli

  • Maestro Gambero
  • ****
  • Post: 335
  • In omnia pericula tasta testicula
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #1 il: 17 Gennaio 2011, 12:59:26 »
Se una serie di istruzioni di questo tipo la devi ripetere più volte in una class io di solito faccio una function e la richiamo ogni volta che mi serve.
Certo che se, invece, la usi solo una volta per class non ne vale la pena (se non per pulire il codice).
 :'(
"penso spesso ad acquiloni,
a grandi imprese,
ad una thailandese...
...ma l'impresa eccezionale,
dammi retta,
è essere normale"
(L. Dalla)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #2 il: 17 Gennaio 2011, 19:38:44 »
se fai una ricerca nel forum vedrai che l' argomento è stato frattato + volte, devi fare un ciclo for  tra i cildren del form controllandone il nome , se non lo trovi + tardi ti scrivo un pezzo di codice

Offline Francoiky

  • Gamberetto
  • *
  • Post: 33
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #3 il: 18 Gennaio 2011, 16:03:03 »
Il problema è che non so quali termini cercare :-\

Mi passi qualche link alle discussioni? :-[

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale

Offline Francoiky

  • Gamberetto
  • *
  • Post: 33
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #5 il: 18 Gennaio 2011, 19:19:13 »
Grazie Ceskho! :ok:
Però non mi funge :(:
Codice: gambas [Seleziona]
PUBLIC SUB Form_Open()
DIM Oggetto AS Object
DIM i AS Integer = 1

FOR EACH Oggetto IN FMain.Children
  IF Oggetto.Name = "Label" & i THEN
    Oggetto.Text = ""
  ENDIF
  INC i
NEXT

END

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #6 il: 18 Gennaio 2011, 19:31:45 »
magari le label sono all' interno di un contenitore differente da fmain , ad esempio un panel o un frame

Offline Francoiky

  • Gamberetto
  • *
  • Post: 33
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #7 il: 18 Gennaio 2011, 19:36:50 »
No, sono nel fmain :hard:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #8 il: 18 Gennaio 2011, 19:45:18 »
così dovrebbe andare

Codice: gambas [Seleziona]

DIM Oggetto AS Object 
   DIM i AS Integer
     
    FOR EACH FMain.Children
    IF InStr(FMain.Children[i].Name, "Label") <> 0 THEN 
       
        oggetto = FMain.Children[i]
        oggetto.text = ""
    ENDIF 
    INC i 
   NEXT 
     

Offline Francoiky

  • Gamberetto
  • *
  • Post: 33
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #9 il: 18 Gennaio 2011, 21:46:27 »
Domani provo ;)

Offline Taurus dei miracoli

  • Maestro Gambero
  • ****
  • Post: 335
  • In omnia pericula tasta testicula
    • Mostra profilo
Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
« Risposta #10 il: 08 Marzo 2011, 18:47:52 »
così dovrebbe andare

Codice: gambas [Seleziona]

DIM Oggetto AS Object 
   DIM i AS Integer
     
    FOR EACH FMain.Children
    IF InStr(FMain.Children[i].Name, "Label") <> 0 THEN 
       
        oggetto = FMain.Children[i]
        oggetto.text = ""
    ENDIF 
    INC i 
   NEXT 
     


Io l'ho provato perchè mi serviva e funziona perfettamente (ovviamente io non l'avevo nella form FMain e quindi ho corretto il contenitore).
Grazie fsurfing
 ;)
"penso spesso ad acquiloni,
a grandi imprese,
ad una thailandese...
...ma l'impresa eccezionale,
dammi retta,
è essere normale"
(L. Dalla)