Newsgroup: it.comp.lang.visual-basic
Titolo: pulsante ok

Ciao a tutti.
Mi spiace scomodarvi per questo problema che magari č una stupidagine, ma in 
internet non ho trovotato nulla.
Ho creato inserito nel mio progetto un frmOptions
Il quale ha il tasto annulla e il tasto ok.
Quando clicco su ok vorrei che le impostazioni che ho appena inserito 
venissero salvate. Non ho idea di come fare!
Grazie a chi mi da una dritta! 

 Mi spiace scomodarvi per questo problema che magari è una stupidagine, ma


Ciao, grazie della risposta.
Allota è un form di quelli predefiniti di vb6.
In questo form, ho eliminato il gruppo di schede presenti di default ed ho 
inserito un sstab, composto da 3 schede.
scheda 1) Ci sono 7 text box vuote, che l'utente riempira per settare il 
programma.
scheda 2) C'è una text boc vuota, che l'utente rimepira per settare il 
programma, ed inoltre una check box.
scheda 3) C'una text box che aspetta di essere riempita.
Allora si fa girare il programma, si accede al form opzioni e si impostano i 
valori. (Insomma si imposta il programma, come ad esempio le opzioni di word 
o excel).
Quando si va a cliccare sul pulsante ok bisogna che le impostazioni che ho 
appena deciso di usare vengano salvate e mantenute!
Ecco non saprei come fare!
Tieni conto che il pulsante OK è unico per tutte e tre le schede. Per cui 
deve salvare il contenuto di tutte e tre le schede. 

 Ecco non saprei come fare!
Comincia col domandarti quando andranno rilette queste impostazioni... risposta
(prevedibile): all'avvio del programma.
Altra domanda: come si fa a fare in modo che siano *persistenti* ossia non
azzerate ogni volta che si esce dal programma?
Risposta: bisogna salvarle, ad esempio in un file di testo, nel registro, in un
database etc. etc.
Consiglio: le funzioni GetSetting e SaveSetting, per le quali ti rimando
all'MDSN.
Bye
Raf

Proprio a queste domande non sapevo dare risposta!
Ora mi studio le funzioni grazie! 

Ciao,
ho letto parecchie cose nell msdn. Non ci ho capito molto.
Quello che ho capito è che ci sono vari metodi per salvare le impostazioni.
Tu quale mi consigli? Per esempio, se vado a scrivere nel registro di 
sistema, poi dopo quando disinstallo il programma le chiavi spariscono?
Esistono degli esempi per rendermi le idee piu chiare? 

 ha scritto nel messaggio
news:EbwAe.57110$h5.24...@news3.tin.it...

Il mio consiglio te l'ho dato: GetSetting e SaveSetting.
Ad esempio, l'esecuzione di questa istruzione:
    SaveSetting "MyApplication", "Options", "MySetting", "Yes"
aggiornerà (o creerà, se non esiste) il valore "MySetting" a "Yes" della chiave
di registro
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApplication\Options
È possibile creare anche sottocartelle:
    SaveSetting "MyApplication", "Options\Advanced", "MySetting1", "019029"
La possibilità di rimuovere le chiavi in fase di disinstallazione dipende dal
software che utilizzi per il deployment.
Quelli più evoluti ti consentono di specificare azioni sul registro anche in
fase di uninstall, ma se usi il PDW di VB, che io sappia l'unico modo è quello
di crearti una versione personalizzata di Setup.exe (i cui sorgenti si trovano
nella cartella "C:\Programmi\Microsoft Visual
Studio\VB98\Wizards\PDWizard\Setup1") nella quale chiamare
DeleteSetting("MyApplication") quando disinstalli.
Bye
Raf

Perdona la mia ignoranza. Ma questo è per me un argomento un po impegnativo!
Prima di fare come un pappagallo, vorrei capire bene il funzionamento.
Allora io ho capito cosi, correggimi se sbaglio:
Nel pulsante OK vado ad utilizzare la funzione savesetting, la quale mi 
andrà a scrivere una chiave nel registro di sistema contente TUTTE le 
impostazioni del mio FrmOptions? Quindi di tutte e tre le schede presenti 
nel mio FrmOptions?
Successivamente per richiamare queste impostazioni uso la funzione 
getsetting nel form load, cosi da richiamarle automaticamente?
Spero tu abbia molta pazienza, ma su internet non ho trovato proprio nulla 
che mi tolga questi dubbi. 

 ha scritto nel messaggio
news:xVCAe.58924$h5.25...@news3.tin.it...

Forse non hai letto bene l'help, GetSetting e SaveSetting leggono/scrivono
impostazioni individuali, non sono così "intelligenti" da leggere/scrivere in
blocco tutte le "impostazioni" che tu hai piazzato nel frmOptions.
Sei tu che devi richiamarle ogni volta per ogni impostazione, magari (altro
consiglio) puoi scriverti 2 procedure, ad es. "ReadAllSettings" e
"WriteAllSettings", in ciascuna delle quali richiami le singole GetSetting e
SaveSetting.
Un esempio semplice in cui le impostazioni consistono in alcune informazioni
sull'utente registrato e sul nome dell'azienda:
In frmOptions hai 2 textbox, txtUser e txtCompany
Private Sub ReadAllSettings
    txtUser.Text = GetSetting(App.Title, "Options", "RegisteredUser", "")
    txtCompany.Text = GetSetting(App.Title, "Options", "CompanyName", "")
End Sub
Private Sub WriteAllSettings
    SaveSetting App.Title, "Options", "RegisteredUser", txtUser.Text
    SaveSetting App.Title, "Options", "CompanyName", txtCompany.Text
End Sub
Queste 2 sub potranno richiamate rispettivamente nell'evento Form_Load e
cmdOK_Click.
È più chiaro ora?
Bye
Raf

E' perfetto!
Ho capito tutto tutto!
Grazie mille scusa il disturbo! 

 nel mio FrmOptions?
Ma perchè non ti salvi tutto in un filettino di testo dentro a App.Path?
Non sporchi il registro con tutte le conseguenze che stai elencando, è 
facilmente mantenibile e usabile.
Magari se usi un file ini è ancora più semplice, e classi che scrivono e 
leggono nel file ini ne trovi a decine in internet.
Ciao 

effettivamente scrivere nel reg non mi va molto, anche perchè a furia di 
fare prove fra un po collassa!
Quello che tu mi proponi penso sia una bella soluzione, però mi devi 
indicare una guida o un sito o un qualsiasi modo per studiare.
Quello che mi hai scritto per me è arabo.
Ho capito solo che è meno dannoso per il sistema usare un file di testo!

[Cristiano Magno]

Ti consiglio di procurarti un libro di VB e di iniziare a studiare. Ti 
mancano proprio i fondamenti.
Un ottimo libro e' "Programmare Visual Basic 6" di Francesco Balena, anche 
se per iniziare piu' tutto va bene dalla McGraw Hill ai vari "for dummies".
Tornando al tuo problema: puoi utilizzare (per leggere/scrivere) le 
funzioni:
- Open, Print, Input/Line Input e Close.
oppure (per i file .ini) le API:
- WritePrivateProfileString e ReadPrivateProfileString.
Rimane valido il consiglio, pena una catena interminabile di botta-risposta 
su concetti base della programmazione e di Visual Basic.
hth,
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs
­/Manifesto.txt
Statuto: 
http://www.it-lang-vb.net/docs
­/Statuto.txt
UGIdotNET - 
http://www.ugidotnet.org
 

 ha scritto nel messaggio
news:n1OAe.149095$75.64...@news4.tin.it...

Aspe', non farti confondere le idee... d'accordo, usare il registro di windows
indiscriminatamente può portare ad effetti indesiderati, ma tieni presente che
GetSetting e SaveSetting non accedono alla parte "di sistema" del registro, in
quanto possono unicamente modificare la folder HKCU\Software\VB and VBA Program
Settings, che non contengono assolutamente impostazioni "critiche".
Gli unici svantaggi (se vogliamo) dell'uso di Get/SaveSetting sono:
- le impostazioni non sono "leggibili" dall'utente a meno di non usare RegEdit
(cosa che non è necessariamente male, ad esempio per conservare in un luogo
"segreto" informazioni sensibili)
- le impostazioni non sono facilmente trasportabili (es. da un'installazione su
un PC a quella su un altro), ma anche in questo caso non è detto che sia poi
così cruciale avere questa possibilità.
Detto questo... nel 75% dei programmi che sviluppo uso le API
Read/WritePrivateProfileString, e solo nel restante 25% Get/SaveSetting, proprio
per i motivi di cui sopra.
Bye
Raf

Ho provato ad informarmi sul file Ini o cose varie, ma sembra piu semplice 
ed immediata la scrittura nel registry.
Ho fatto questa prova:
nel frmOptions ho digitato quanto segue:
Private Sub cmdOK_Click()
    SaveSetting sendIp, "Options", "Invio", TxtDest.Text
End Sub
Quando provo a far girare il programma mi restituisce l'errore 461.
Non so il perchè, tu ke dici? 

 Non so il perchè, tu ke dici?
Perchè è più semplice l'uso del registry ;)
E poi come pensi di ripulirmelo quando lo disinstallo?
Ciao 

 ha scritto nel messaggio
news:dcZAe.152295$75.65...@news4.tin.it...

Cosa "recita" l'errore 461? E cosa dice a tal proposito l'MSDN?
E sendIp che cos'è?
Raf

 UBOUND,LBOUND
Pensaci bene... quale oggetto possiede quei membri (Count, Item, UBound,
LBound)?
Non sarà che txtDest è in realtà un array di controlli, eh?
Devi pertanto specificare un indice per poter accedere alle proprietà del
singolo elemento: txtDest(i).Text
Bye
Raf

 ed immediata la scrittura nel registry.
Tra file .ini e registro preferisco il file .ini, almeno per 2 ragioni:
1) Il fatto di poter vedere rapidamente il contenuto del file;
2) Il fatto di poter portare agevolmente la configurazione (il file .ini 
in questione) da un computer all'altro.
-- 
Ciao,
	Fabrizio
===  
http://www.negusweb.it
  ===

 E sendIp che cos'è?
Send ip è il nome del mio programma.

 Send ip è il nome del mio programma.
Ma sendIp è una variabile stringa o cosa? Perché se non è una variabile, allora
mi pare che manchino delle virgolette nel primo argomento.
NON     SaveSetting sendIp, "Options", "Invio", TxtDest.Text
MA     SaveSetting "sendIp", "Options", "Invio", TxtDest.Text
Ciao
Raf

> E poi come pensi di ripulirmelo quando lo disinstallo?
Una cosa è certa, prima di andare a fare prove del programma in altri pc 
preparo un bel programma di disinstallazione, ci metto anche 6 mesi, non ho 
fretta! è quasi un anno che lavoro dietro sto progetto...Per quanto riguarda 
il mio pc, si puo impastrocchiare quanto vuole, lo formatterò!

 Si', ma l'option explicit? ;-)
Beh quella controlla le variabili più che le proprietà e i metodi... eppoi col
Late Binding può succedere di tutto a runtime :o)
Bye
Raf

 metodo o una proprietà inesistenti su un oggetto.
Si', ma l'option explicit? ;-)
-- 
ciao, hal

Ciao,
ho capito quale era il problema ed ho fatto come tu dici e non fungeva.
Allora ho pensato che ricreando da capo la text box non avrei piu creato una 
matrice di controlli (l'avevo creata per sbaglio copiando ed incollando le 
txtbox).
Infatti successivamente, dopo aver ricreato la txt, quando scrivevo 
txtdest.text mi dava tutte le opzioni.
Quindi un problema è stato risolto.
Ora il problema è che quando lo faccio girare mi da chiamata di routine o 
argomento non valido (errore 5).
Le msdn le ho gia guardate.
Ho quindi fatto un'altra prova
Private Sub cmdOK_Click()
 dim s as string
 s = TxtDest.Text
 SaveSetting sendIp, "Options", "Invio", s
End Sub
stesso problema...
sono certo sia banale la soluzione, ma mi sfugge! 

Il problema era banale e l'ho risolto.
Era stata una svista mia. Chiedo scusa per aver chiesto una cosa banale 
starò piu attento.
Non fucilarmi!!
Grazie della pazienza e disponibilità! Se un giorno ne capirò di piu non 
dimenticherò come sono partito e aiuterò gli altri!

Io mi sono limitato a scrivere le righe di codice che ti avevo scritto 
prima.
L'Msdn gia l'avevo controllato ma si capisce na mazza.
Sono certo di dover richiamare la txtdest.
Una cosa che mi mette in guardia è che quando digito
    SaveSetting sendIp, "Options", "Invio", TxtDest.Text
dopo il punto di TxtDest. sapete che il visual propone tutta una serie di 
proprietà solitamente. Ecco in questo caso mi propone solamente COUNT, ITEM, 
UBOUND,LBOUND
Un'altra cosa "sospetta" è che quando do il debug dell'errore mi evidenzia 
queste parti:
 PRIVATE SUB CMDOK_CLICK()
    SaveSetting sendIp, "Options", "Invio", TxtDest.TEXT
End Sub
Penso proprio il problema sia il .TEXT
Non è che magari devo fare qualche dichiarazione o che so io!? 

Da questo punto di vista non posso che concordare, però considerando sto 
sviluppando un programma assai "personale ", gia il punto 2 non mi serve.
Per il punto 1 considero che ho pochissimi dati e ci metto un secondo a 
vederli nel registry, non è un programma corposo e ricco di impostazioni.
Cio che mi continua a lasciare assai perplesso è come creare un valido 
programma di disinstallazione. 

 programma di disinstallazione.
Cos'e' che ti crea problemi nel programma di disinstallazione ?

Il fatto che l' unico programma di installazioneche ho fatto l'ho fatto 
cliccando sempre avanti con l'utility di visual.
Non ho idea di come fare un valido uniinstall!
Ma questo è un altro problema, c penserò tra un paio di mesi! 

 Ma questo è un altro problema, c penserò tra un paio di mesi!
facciamo che ci pensi adesso e che fra un paio di mesi posti?
il che sarebbe l'esatto contrario di quello che hai fatto finora e, fidati,
un gran passo avanti nel tuo affrontare la programmazione.
rafunk ha ormai diritto al cavalierato e alla speciale onorificenza
dell'ordine di madre teresa di calcutta, ma fagli almeno fare le ferie :>

Che cattivi che siete!
Dai quando l'ho finito ve ne do una copia cosi mi demolite subito e mi 
trovate tutti in difetti..:-) 

 trovate tutti in difetti..:-)
passino i consigli, ma se vuoi che ti faccia da beta tester, guarda che
rafunk ha una tariffa :)

bella questa! :-)
Ma voi come fate a sapere tutte queste cose?
Che lavoro fate?

 Che lavoro fate?
io sostanzialmente il p.r.
rafunk il missionario.
ciao, a.

Il p.r. sarebbe il programmatore oppure quello che lavora in disco?? :-))
Ma siete tutti laureati? Conoscete solo il visual? lavorate in software 
house? A me piacerebbe diventare un programmatore! 

 house? A me piacerebbe diventare un programmatore!
in disco ai tempi mi ci hanno trascinato un paio di volte delle amiche, che
anche per questo motivo non sono piu' mie amiche. io amo la musica.
il p.r. (public-relation man) sarebbe quello che tiene le pubbliche
relazioni. nel mio caso sia esterne che interne, e spesso sono piu'
complesse le seconde.
linguaggi, ne conosco un altro paio ma attualmente uso solo vb ("il visual?"
non e' mica tuo cugino! e oltretutto non e' l'unico linguaggio visuale, anzi
:).
sulla descrizione delle missioni passo la palla a rafunk. io gia' ci sono,
per conto di -- vabbe', si sa :)
ciao, a.

 ha scritto nel messaggio
news:3jn7icF...@individual.net...

Ringrazio Andrea per la definizione di "missionario" eh eh...
In effetti quando posso cerco di rendermi utile anche ai newbie, purché dalla
mente ancora un po' "tabula rasa" ;-)
Per i beta test... non sono la persona più indicata, ci sono "figure
professionali" più adatte (per mia fortuna!).
Per le tariffe ... vabbe' dai prima cancelliamo il debito dell'africa, poi ne
parliamo (oh, ma come sono buono oggi?!)
Ciao
Raf

 ha scritto nel messaggio
news:3jn06jF...@individual.net...

ROTFL!

Ah ho capito!
Va bene dai spero di riuscire un giorno ad aiutare anche io qualcuno!
Vi ringrazio!