Autore Topic: Ciclo sui Controls di un Container  (Letto 5085 volte)

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Ciclo sui Controls di un Container
« Risposta #15 il: 27 Novembre 2010, 23:52:10 »
Pero' che senso ha se prima vuoi eliminare tutti i dati contenuti nelle textbox di tutti i panel e poi solo in alcuni...  :-\

In effetti milio come necessità può apparire abbastanza insolita... Ti racconto come sono arrivato a tale richiesta.

Nel mio progetto ho messo in una delle form un toolpanel, e nella prima tool del toolpanel ci sono una serie di textbox per l'inserimento del nome, cognome, cod.fiscale, data nascita, ecc. ecc. Fin lì la routine pulizia funzionava a meraviglia...
Poi quando ho disegnato le textbox che sono nel secondo tool del toolpanel ho notato che quando cancellavo il contenuto di quelle del primo, automaticamente (anche se erano nascoste nel secondo) pulivo anche quelle del secondo.
Da qui la necessità di fare la pulizia in un container e non nel form intero. Pensavo che il container principale ereditasse tutti i controlli anche dei container figli... ma non essendoci una proprietà .controls, come dici tu, bisogna giostrare con i nomi o con qualcosa di simile...
Alla fine la cosa più semplice è chiamare la pulizia dei panel che m'interessano (uno per uno, tanto sono pochi). Però rimane la curiosità di sapere come si potrebbe risolvere questa situazione, e perché i container non hanno una proprietà .Controls. :)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Ciclo sui Controls di un Container
« Risposta #16 il: 28 Novembre 2010, 23:04:23 »
Il discorso è duplice:

1) nel mio gestionale ho diverse Forms con tanti Controls per l'input di dati, di testo. Quindi anziché fare la solita lista di pulizia di ogni controllo, uno per uno, volevo risolvere la questione creando una routine che "ripulisse", genericamente, solo quelli dentro i Containers che interessano a me.

2) a scopo didattico, per capire e prendere dimestichezza con il codice di programmazione.

Ho notato che il tempo di pulizia è decisamente superiore rispetto alla classica lista di .Text = "", perché con questo mio approccio l'eseguibile deve fare, oltre all'operazione di pulizia, anche quella di ciclo e ricerca dei Controls che m'interessano... però al momento mi soddisfa molto. Con queste 10 righe di codice, messe in un modulo pubblico, pulisco tutte le .Text del mio progetto che m'interessano.

Non ho capito bene il discorso della classe dinamica e dell'array, tieni conto che ho ricominciato a programmare da poco più di un mese (dopo diversi anni, ma anche allora molto sommariamente).
$Array[0]= TextBox1.Name
$Array[1]= Panel1.Name
$Array[2]= TextBox2.Name

Scusa se rispondo solo adesso, ma per me questo é un periodo nel quale dedico il mio tempo ad altro e non posso concentarmi molto su Gambas. Infatti soffre pure il mio programma che é messo letteralmente in deposito. A te sembra difficile lo studio dell'utilizzo di una classe esterna a cui passare i parametri necessari per la pulizia degli oggetti che ti interessano, ma mi pare che l'affannosa ricerca di di una soluzione attraverso la realizzazione di una funzione universale che agisca come vuoi tu sia ancora più complessa del metodo che ti ho suggerito più sopra.

 Provo a farti un esempio veloce su quello che voglio dire:
Codice: gambas [Seleziona]
PUBLIC SUB Qualsiasi()
DIM $Array AS NEW String[]
DIM Classe1 AS ClasseDinamica
-------------- bla bla bla -------------
-------------- bla bla bla -------------
$Array[0]= TextBox1.Name
$Array[1]= TextBox2.Name      'oggetto figlio di Panel1
$Array[2]= ComboBox1.Name    'oggetto figlio di Panel1
Classe1 = NEW ClasseDinamica($Array)
-------------- bla bla bla -------------
-------------- bla bla bla -------------
END
PUBLIC SUB _new($ParametriArray AS NEW String[])         'Metodo _new della "ClasseDinamica"
DIM i AS Integer
DIM Conta AS Integer
Conta = $ParametriArray.Count - 1
For i = 0 to Conta
 $ParametriArray.Text=""
Next
END


Ho buttato giù la mia idea in codice. Non so se funziona perché non l'ho provata. Puoi farlo tu se ti pare interessante.
Comunque vada, buon lavoro. :D
Ciao
:ciao:

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Ciclo sui Controls di un Container
« Risposta #17 il: 29 Novembre 2010, 02:45:30 »
Grazie mille Picavbg!

Appena ho un attimo di tempo lo provo... Purtroppo il tempo è quello che è, visto che per realizzare questo progetto faccio le ore piccole, ma poi devo alzarmi comunque alle 7.  :rolleyes: