PDA

Visualizza la versione completa : [Delphi 6] Form Impostazioni


Girandol0
26-12-2004, 16:51
Ho inserito un form per le impostazioni nell'applicazione che sto realizzando perchè tutte sul form principale iniziavano ad essere un pò ammassate...
Cmq sul form nuovo ho inserito un tasto "Cancel" che ripristina i valori delle impostazioni e chiude il form. Io l'avevop pensata così: all'evento onActivate del form memorizza tutti i valori in delle variabili (che ho precendentemente dichiarato) e, se spingi cancel, prima di uscire vengono ripristinati tutti i parametri riprendendo i valori dalle variabili....non so se avete capito.
Il problema è che (oltre al codice che è un pò lungo e ripetitivo) devo dichiarare un mucchio di variabili! Inoltre ogni volta che aggiongo un impostazione devo andare ad aggiungerne...
L'ho già utilizzato in un programmino in cui i parametri da impostare non erano più di 4-5 però in questo sono molti di più...volevo sapere se questa è la soluzione migliore oppure se delphi permette di velocizzare un pò questa procedura.


Grazie mille in anticipo!

alka
26-12-2004, 17:35
Indipendentemente dal mezzo che utilizzi per memorizzare le impostazioni della tua applicazione (file INI, Registro di Configurazione o altro ancora) dovrai avere una scrittura per recuperare (o scrivere) il valore all'interno della locazione prescelta.

Se non vuoi dichiarare variabili per ciascuna impostazione, puoi sempre utilizzare una chiave di registro, ma dovrai poi indicarne il percorso completo e il nome per ottenere il valore memorizzato in quella locazione (o per salvare un valore al suo interno).

E' possibile creare delle procedure e funzioni che facciano da "wrapper" ed eseguano le parti comuni del lavoro necessario a raggiungere una determinata chiave di registro (o chiave all'interno di un file INI, è la stessa cosa), accettando solo parametricamente il "nome ultimo" della chiave e il valore da metterci dentro (o da recuperare).

Indipendentemente da queste considerazioni, io non legherei l'interfaccia utente per la configurazione al "contenitore" delle impostazioni; mi spiego meglio: in genere, utilizzo un oggetto dedicato per contenere i valori delle impostazioni; siccome tali valori sono validi per l'applicazione, non memorizzo mai valori nuovi configurati attraverso un'apposita finestra di dialogo fino a quando l'utente non preme il pulsante di conferma.

Riassumendo, se non vuoi dichiarare variabili in cui memorizzare le impostazioni, puoi leggere e scrivere direttamente i tuoi valori all'interno del Registro oppure in un file INI; quando è necessario leggere e scrivere i valori, accedi direttamente allo strumento di storage attraverso le classi disponibili in Delphi e specifichi il percorso per raggiungere la chiave di impostazioni desiderata.

A prescindere dal mezzo adottato per salvare le impostazioni, io provvederei a caricarle nell'interfaccia utente quando la finestra di configurazione viene aperta; se l'utente compie modifiche alle impostazioni, tali modifiche rimangono memorizzate nei controlli visuali stessi.
Al termine delle modifiche, se l'utente preme il pulsante di conferma, allora si provvede a copiare le impostazioni dei controlli visuali nel modo opportuno all'interno del dispositivo di memorizzazione (Registro o file INI); se l'utente annulla, non si esegue alcuna operazione.

In entrambi i casi, la finestra di dialogo per la configurazione delle preferenze viene chiusa.

Ciao! :ciauz:

Girandol0
26-12-2004, 17:47
OK ho capito...potrei creare una classe con le impostazioni che contiene tutte le variabili dei parametri e poi ci metto qualche metodo per gestire anche i comandi visuali...potrebbe andare??

alka
26-12-2004, 17:57
Originariamente inviato da Girandol0
OK ho capito...potrei creare una classe con le impostazioni che contiene tutte le variabili dei parametri e poi ci metto qualche metodo per gestire anche i comandi visuali...potrebbe andare??
Non so se vale la pena introdurre complessità per quanto riguarda i controlli visuali; è sufficiente inserire quel codice nell'evento OnCreate del form delle impostazioni, in modo da caricare nei controlli il valore delle impostazioni stesse nel modo appropriato, senza eccessive complicazioni.

Ad esempio, qualcosa del tipo


if ImpostazioneBooleana then
CheckBoxImpostazione.Checked := True;


Poi, quando l'utente conferma, puoi scrivere nuovamente l'impostazione in questo modo:


ImpostazioneBooleana := CheckBoxImpostazione.Checked;

e chiamare il metodo della tua classe che si occupa del salvataggio (a meno che la scrittura dell'impostazione non implichi direttamente il salvataggio della stessa in un'unica operazione).

Ciao! :ciauz:

Girandol0
26-12-2004, 18:35
Ok grazie mille!! :yuppi: :yuppi:

Loading