Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Francoiky - 17 Gennaio 2011, 00:05:42

Titolo: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: Francoiky - 17 Gennaio 2011, 00:05:42
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") ???
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: Taurus dei miracoli - 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).
 :'(
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: fsurfing - 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
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: Francoiky - 18 Gennaio 2011, 16:03:03
Il problema è che non so quali termini cercare :-\

Mi passi qualche link alle discussioni? :-[
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: Ceskho - 18 Gennaio 2011, 17:49:28
http://www.gambas-it.org/smf/index.php?topic=1033.0
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: Francoiky - 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
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: fsurfing - 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
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: Francoiky - 18 Gennaio 2011, 19:36:50
No, sono nel fmain :hard:
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: fsurfing - 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 
     
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: Francoiky - 18 Gennaio 2011, 21:46:27
Domani provo ;)
Titolo: Re: Come pulire il codice? (Ripetizione stesso tipo di componente)
Inserito da: Taurus dei miracoli - 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
 ;)