Newsgroup: it.comp.appl.access
Titolo: Chiusura maschera con tasto X

 E' possibile intercettare la pressione del tasto X di chiusura di una
maschera al fine di poter condizionare l'esecuzione di Sub?
Grazie.
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Grazie.
Si in 3 modi:
1)Togliendolo ed inserendo un pulsante dedicato
  che effettua la chiusura, quindi fai eseguire la
  tua Sub.
2)Intercettare l'evento Unload che dispone di parametro Cancel
3)Solo per completezza(ovvio che non è il caso) Subclassare
Vedi tu cosa usare.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Vorrei usare il secondo ma non ci riesco.
L'evento Unload viene eseguito dopo il BeforeUpdate che contiene il codice
che io non vorrei eseguire in chiusura e che invece mi esegue in automatico
se il record è modificato.
Mi puoi dare qualche altra indicazione?
grazie.



 grazie.
Posta il codice e vediamo come fare.


 
Quelle che seguono sono le due sub che vorrei evitare fossero eseguite
chiudendo con X.
Devono invece essere eseguite, e lo fa correttamente, se premo la freccetta
di avanzamento record dopo la quale effettua l'inserimento.
Grazie.
----------------------------------------------------------------------------
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Richiede Conferma Inserimento
If MsgBox("Confermi l'Inserimento ?", vbYesNo, "CONFERMA OPERAZIONE") = vbNo
Then
  Me.Undo 'annulla tutte le modifiche nel record
  Cancel = True 'evita successivi eventi
End If
End Sub
Private Sub Form_AfterInsert()
    DoCmd.SetWarnings False
    Dim SQL As String
    SQL = "UPDATE [Voci di Costo] " & _
          "SET [Voci di Costo].DataRegNota = MovimentiCassa.DataMovimento " & _
          "where [Voci di Costo].IDVoceDiCosto = Forms![Fatture]!IDVoceDiCosto"
    DoCmd.RunSQL SQL
    DoCmd.SetWarnings True
    DoCmd.Close acForm, "Registrazione Note Credito", acSaveYes
End Sub



 ----------------------------------------------------------------------------
Allora diciamo che la 2°(AfterInsert) non và controlla, basta
non fare eseguire la 1°(BeforeUpdate).
Quello che manca è la gestione dell'evento Unload:
 Private SalvataggioConfermato as Boolean
 Private sub Form_Unload(Cancel as Integer)
    ' Verifica che siano state apportate modifiche
    SalvataggioConfermato=Not me.Dirty
 End Sub
 Private Sub Form_BeforeUpdate(Cancel As Integer)
 If SalvataggioConfermato then 
  Me.Undo 'annulla tutte le modifiche nel record
  Cancel = True 'evita successivi eventi
  Exit Sub
 End if
 'Richiede Conferma Inserimento
 If MsgBox("Confermi l'Inserimento ?", vbYesNo, "CONFERMA OPERAZIONE") =
vbNo
 Then
   Me.Undo 'annulla tutte le modifiche nel record
   Cancel = True 'evita successivi eventi
 End If
 End Sub
 
Non l'ho provato, pertanto è possibile sia da rivedere
ma tieni presente la logica della cosa.
Fammi sapere.
Ciao.


A capirla la logica.
Mi puoi dire dove devo inserire "Private SalvataggioConfermato as Boolean"
per fare in modo che venga eseguita?
Cosa fa l'istruzione "SalvataggioConfermato=Not me.Dirty" ?
Grazie.



 Cosa fa l'istruzione "SalvataggioConfermato=Not me.Dirty" ?
[CUT]
Non sono un esperto, ma un libro di programmazione a cui mancavano le 
pagine dispari l'ho letto, ed è sufficiente per capire che "Private... " 
è una dichiarazione e non una istruzione, mentre "Salvataggio..." mette 
nella variabile stessa 1 o 0 (Yes o No, dilla come vuoi) a seconda che 
il record sia stato modificato o no.
Comunque posta dopo il testo.
Ciao, Dave


Pagine dispari.
pag.23: SalvataggioConfermato=Not me.Dirty
    e' una *istruzione* condensata per dire
	if me.dirty = true then
		salvataggioConfermato = false
	else
		salvataggioConfermato = true
	end if
pag. 87:  il valore impostato da "azzess" per true e -1
           per false e' 0
	  per estensione (C like) 0 = false
		<> 0 = true
appendice in pagina dispari:
        Private e' una dichiarazione ma per l' uomo della "carta 
igienica"  *istruisce* il computatore a definire una variabile visibile 
solo all'interno dell'ambito dove e' definita
s.e. & o
;<)
E' il caso che comunichiamo piu' spesso. Io ho letto solo le pagine dispari
--
a.cara
 

 E' il caso che comunichiamo piu' spesso. Io ho letto solo le pagine dispari
P.S. E' li che si parla di macro?
--
a.cara

 a.cara
Se voi comunicaste più spesso io impiegherei meno e capirei molte
cose prima.
Se ripenso al mio libro pagato a caro prezzo......
Ciao


 Se ripenso al mio libro pagato a caro prezzo......
;<)
at salut
--
a.cara

Riporto dall'help di Access "La sintassi dell'istruzione Private è composta
dalle seguenti parti......"
Vi ringrazio del tempo che mi avete dedicato ma ahime ancora non mi è chiaro
o forse non ho esposto bene il mio quesito.
Ci riprovo.
L'obiettivo che vorrei raggiungere è quello di chiudere la maschera alla
pressione del tasto X IN QUALUNQUE MOMENTO.
In linea di massima questo avviene, ma se digito all'interno di un
controllo, si attiva il pulsante di scorrimento dei record (che nelle pagine
del manuale corrispondenti a numeri primi ho letto essere indicativo che il
record è stato modificato.... he, he, he) e viene eseguita la Sub Before
Update. Posso intercettare all'inizio di essa o di qualunque altra Sub la
pressione del tasto X?.
Questo mi consentirebbe di forzare l'uscita.
Grazie.



 record è stato modificato.... he, he, he)
he, he, he, he ;<)
quindi hai letto solo una parte delle pagine dispari?
Fantastico. Riepilogando
1) Leggendo solo la copertina si sa tutto su API e subclassing
2) Leggendo le pagine pari si fa confusione
3) Leggendo le pagine dispari si rompe i "cojoni"
4) Leggendi le pagine a numero primo ci si "sporca"
5) Leggendo i post si diventa esperti di "carta igienica"
6) Cosa diavolo si deve leggere per sapere tutto sulla chiusura della 
maschera? Potrei suggerire PlayBoy se non altro si sa tutto sulla 
coniglietta del mese. C'e' pure scritto che se metti bordo = nessuno si 
risolve il problema alla radice.
e poi?
--
a.cara
 

Mah !!!
Grazie lo stesso.



 Grazie.
Sinceramente il metodo che ti ho suggerito fà quello che chiedi
ma non capisco cosa non ti è chiaro visto che continui a chiedere.
Eppure ti ho postato il codice completo...!!!!!
Boh.........................!!
Forse sto invecchiando.


 Grazie lo stesso.
o craist. Gia' A. Baraldi ti ha scritto che sull'evento di Unload puoi 
controllare tutto. Dov'e' il problema?
Sub Form_unload(credo sia cancellabile)
  call quipossolanciare le subs e/o functions che piu' mi aggradano
end sub
Per favore rispondi dopo il messaggio.
--
a.cara
[cut]

Scusate ma mi sono perso con la storia delle pagine pari e pagine dispari.
Riassumo.
 
L'obiettivo che vorrei raggiungere è quello di chiudere la maschera alla
pressione del tasto X IN QUALUNQUE MOMENTO.
in linea di massima questo avviene, ma se digito all'interno di un
controllo, si attiva il pulsante di scorrimento dei record e viene eseguita
la Sub Before
Update. Posso intercettare all'inizio di essa o di qualunque altra Sub la
pressione del tasto X?.
Questo mi consentirebbe di forzare l'uscita.
Anche se premo il tasto X la sub Form_Unload viene eseguita dopo aver
eseguito la Before_Update che invece io non vorrei far eseguire.
Grazie e scusate per l'insistenza ma mi serve proprio.

