Ho l'impressione che anche il tuo esempio, seppur esplicativo per i meno profani, sia poco chiaro per il nostro amico.
Cercherò di spiegarmi meglio, sempre che io abbia ben compreso il dilemma, perchè è anche probabile che parliamo di cose diverse.
Se ho ben compreso, il nostro amico vorrebbe comunicare dati tra due form (un padre e un figlio), e attualmente usa variabili pubbliche per il passaggio delle informazioni.
Come ha giustamente dichiarato, la creazione di variabili pubbliche alla lunga può diventare poco manutenibile; l'unica cosa che non mi è chiara, è se queste variabili sono pubbliche per tutta l'applicazione (es. dichiarazione in un modulo), oppure sono pubbliche all'interno della singola classe (es. una form).
Se il primo caso è vero, allora la cosa và giustamente sistemata, eliminando il più possibile queste dichiarazioni globali; nel secondo caso, si può sistemare la cosa, cercando di ottimizzare il codice con un passaggio di parametri tra una form e l'altra. Faccio presente a tornu, che la dichiarazione di proprietà (o variabili) pubbliche all'interno di una classe, oltre all'essere queste variabili facenti parte della classe stessa, è anche normale.
Ora una spiegazione sul passaggio di parametri:
Come possiamo notare dagli spezzoni di codice in questi post, vediamo un uso esclusivo du metodi evento, ovvero quelle funzioni che vengono chiamate in determinate situazione (es. apertura di una form, click del mouse, ecc.). Fino a qui tutto ok.
Però, in gambas, è possibile utilizzare alcuni metodi (dicamo un pò nascosti), che vengono chiamati automaticamente in specifiche situazioni quali: creazione della classe, distruzione della classe, ecc.
Tramite una di queste, è possibile definire una classe in modo che venga creata sulla base di determinati valori, definiti come parametri. La funzione in questione deve essere dichiarata in questo modo:
PUBLIC SUB _new(, , ..., )
END
Il moetodo deve essre dichiarato così come è scritto, tranne che per i parametri.
Questi possono essere dichiarati di qualsiasi tipo e dimensioni, possono essere un numero imprecisato, anche se consiglio di limitarne il numero.
All'interno del metodo è possibile condizionare gli oggetti e, comunque, l'intera classe (anche i controlli), magari salvando in apposite variabili private interne alla stessa classe il contenuto dei parametri:
PRIVATE $var1 AS Object
PUBLIC SUB _new(parm1 AS OBJECT)
'esempio di associazione a variabile interna alla classe
$var1 = parm1
'esempio di modifica di un controllo
ME.CHECKBOX1.Value = parm1.check
END
Ti faccio presente che l'utilizzo di parametri tipo oggetto, invece di tipo base (esempio un Integer), ti permette anche di modificarne gli attributi all'interno della form a cui l'hai passato, così da poterli testare dalla funzione che ha chiamato la form (vedi esempio che ti avevo fatto nei post precedenti).
Tutto questo casino che ti ho scritto, ti permette di eliminare variabili public (o globali) inutili, e anche una gestione più efficace e pulita.
Spero che ora sia più chiaro.
Ciao.