Penso di avere capito. Perciò cerco di sintetizzare il problema e la rispettiva soluzione.
Dovendo caricare dati e settare attributi di prorpietà di oggetti interni ad una una FormX, dormiente, prima ancora di richiamarla col classico metodo .show, potrebbe risultare conveniente agire, per comodità di programmazione, nella stessa Form.class chiamante. Ho letto qualche discussione in merito, ma tutte quelle riscontrate riguardano applicazioni di soluzioni nell'ambito della stessa Formx.class. Io cercavo invece un'applicazione risolutiva per gli oggetti della FormX, ma dentro la FormW.class. Partendo da un esempio di md9327, ho sviluppato il seguente ragionamento:
Se la FormX in questione contiene 5 ogggetti
CheckBox e che debba modificare sia la prioprietà
value che la proprietà
enabled, a seconda del contenuto di un elemento della riga di una tabella di un DB-SQLite, ho scritto il seguente codice:
PUBLIC SUB Form_Open()
1. DIM DB_Connection AS NEW Connection 'inizializza la nuova connessione
2. DIM CONST $DbNome AS String = "DbDati"
3. DIM $DbPath AS String
4. DIM oElemTabDb AS Object
5. DIM oObjFormX AS Object[] 'array di puntamento agli oggetti della FormX identificati sotto lo stesso GROUP
6. DIM RecTab AS Result
7. oObjFormX.Add(FormX.CheckBox1) 'caricamento nell'array dei puntamenti al gruppo oggetti della FormX da manipolare
8. oObjFormX.Add(FormX.CheckBox2) 'caricamento nell'array dei puntamenti al gruppo oggetti della FormX da manipolare
9. oObjFormX.Add(FormX.CheckBox3) 'caricamento nell'array dei puntamenti al gruppo oggetti della FormX da manipolare
10. oObjFormX.Add(FormX.CheckBox4) 'caricamento nell'array dei puntamenti al gruppo oggetti della FormX da manipolare
11. oObjFormX.Add(FormX.CheckBox5) 'caricamento nell'array dei puntamenti al gruppo oggetti della FormX da manipolare
12. $DbPath Application.Path & "/Dati_DB"
13. WITH DB_Connection
14. .Type = "sqlite3"
15. .Host = VarGlob.$DbPath
16. .Name = VarGlob.$DbNome
17. .Open
18. END WITH
19. RecTab = Connection.Tables.Begin("TabDatiDb")
20. FOR EACH RecTab
21. FOR EACH oElemTabDb IN oObjFormX 'per ciascun degli elementi di puntamento "oElemTabDb" contenuti nell'array "oObjFormX"
22. IF oElemTabDb.text = "RecTab!Elem1 THEN
23. o_ElNumInstab.enabled = TRUE 'rende attivo il checkBox
24. ENDIF
25. NEXT
26. NEXT
END
Leggendo il codice compreso fra la riga 20 e la 23, si ottiene il seguente ragionamento:
20.: per ciascuna riga letta dalla Tabella del DB in 'RecTab'
21.: e per ciascun elemento di puntamento "oElemTabDb" contenuto nell'array "oObjFormX"
22.: qualora il campo Elem1 di RecTab contenga lo stasso valore che contiene la proprietà della checKBox.Text, puntata nello stresso istante, dall'elemento di puntamento "oElemTabDb"
23.: allora, la propietà enabled di quella checkBox viene modificata in TRUE. Ciò avviene sempre atraverso l'elemento di puntamento "oElemTabDb".
Spero di essere riuscito ad esprimere il concetto correttamente.
Ciao a tutti.