Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Evento ApplyChanges Pagine di Proprietà con Snap-in designer MMC

Ciao a tutti, ho un problema che sembra irrisolvibile.
Sto lavorando con un VB designer che serve a creare eseguibili VB che si
agganciano a Microsoft Managment Console, in pratica uno Snap-in per gestire
ogni tipo di cosa.
Per configurare gli oggetti presenti (ListItems etc) si usano le pagine di
proprietą, esattamente come nella creazione degli Active-X.
Il problema č questo: le pagine di proprietą presentano i tasti classici OK,
Applica e Annulla. Premendo OK e Applica viene attivato l'evento
ApplyChanges della PropertyPage ma, e qui sta il problema, nel caso siano
presenti pił schede l'evento viene attivato anche sul Tabbing, ovvero
selezionando un'altra scheda.
Esempio pratico:
se il mio PropetySheet contiene due o pił PropertyPages, č impossibile
capire quando l'utente ha cambiato scheda oppure quando ha premuto Ok. Se ad
es. l'utente modifica un valore di Scheda1 e preme Ok il problema non
sussiste in quanto premendo ok viene attivato l'evento ApplyChanges e qui
posso inserire il codice che cambia le proprietą dell'oggetto (supponiamo
della classe). Ma se l'utente dopo aver cambiato un valore di Scheda 1 fa
click su Scheda 2 l'evento ApplyChanges viene attivato ugualmente (cambiando
in questa maniera le proprietą dell'oggetto). E se poi l'utente fa click su
Annulla? Come faccio a cambiare le proprietą modificate?
Microsoft dice che il trucchetto sta nel fatto che premendo il tasto ok
l'evento ApplyChanges viene attivato due volte in successione: in questa
maniera basta monitorare questo evento per 'capire' quando l'utente ha
premuto Ok. Peccato che non sia vero! Se L'utente fa click cambia un valore
su scheda 1 e poi passa a scheda due e poi fa click su Ok la catena di
eventi č la seguente:
Scheda1_ApplyChanges (Uscita da scheda1 con tab su scheda2)
Scheda2_ApplyChanges (Tasto Ok)
Scheda1_ApplyChanges (Tasto Ok)
Scheda2_ApplyChanges (Tasto Ok)
In poche parole non c'č maniera di capire quando effettuare i cambiamenti
all'oggetto trattato da 2 o + pagine di proprietą. Il problema non sussiste
quando vi č una sola scheda in quanto l'evento ApplyChanges sta a
significare solo che č stato premuto Ok, mentre essendo attivato anche dal
cambio di scheda nel caso di 2 o + schede, non č + discriminante e il casino
č tutto qui.
Non so se il problema sia specifico delle Property Pages realizzate con lo
Snap-In Designer oppure se succede anche nelle 'normali' pagine di proprietą
di ActiveX, in quanto questo problema (con relativa falsa soluzione) č
trattato solo nella guida relativa allo snap-in designer MMC per Visual
Basic e non sulla guida MSDN di Visual Basic, in quanto che le pagine di
proprietą MMC hanno un'istruzione implements che aggiunge un paio di metodi.
Visto la particolaritą del problema credo che nessuno sia in grado di darmi
delucidazioni, ma sperando di non essere l'unico in Italia ad essersi
cimentato con lo Snap-in designer per MMC (che in W2000 č uno standard di
gestione) ringrazio chiunque abbia un'idea.
P.S. Non suggeritemi di sostituire le PropertyPages con dei classici forms,
in quanto in MMC nulla puņ essere modale. Ad esempio MsgBox viene sostituito
con ConsoleMsgbox ;-)
Ciao e grazie
Silviaccio

 se il mio PropetySheet contiene due o pił PropertyPages, č impossibile
capire quando l'utente ha cambiato scheda oppure quando ha premuto Ok. Se ad
es. l'utente modifica un valore di Scheda1 e preme Ok il problema non
sussiste in quanto premendo ok viene attivato l'evento ApplyChanges e qui
posso inserire il codice che cambia le proprietą dell'oggetto (supponiamo
della classe). Ma se l'utente dopo aver cambiato un valore di Scheda 1 fa
click su Scheda 2 l'evento ApplyChanges viene attivato ugualmente (cambiando
in questa maniera le proprietą dell'oggetto). E se poi l'utente fa click su
Annulla? Come faccio a cambiare le proprietą modificate?
Non potresti memomorizzarne i valori "old" all'apertura quindi, in caso di
Annulla, testarne i valori e, se cambiati, ripristinarli?

--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------