Newsgroup: it.comp.appl.access
Titolo: chiusura maschera  da maschera

ho una maschera aperta che a tempo apre un'altra maschera, la quale a sua
volta devo chiuderla dopo un minuto.
vorrei chiudere questa seconda maschera dalla maschera aperta,
per chiudere la maschera corrente uso docmd.close, ma per chiudere 
un'altra maschera?
tank
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:c7need$1gu$1...@news.newsland.it...

F1 su Docmd.Close ci sono cose interessanti

OneEDP ha scritto:

c'ho provato ma non ne vengo a capo!!!!
come risultato delle mie prove ottengo solo errori o mutismo di eventi!
cerco codice !!!!   :---))))


 cerco codice !!!!   :---))))
Ciao Luigi,
perchè non posti il codice che hai utilizzato??
--
rgrds
SC


 ha scritto nel messaggio
news:c7nk5v$9ck$1...@news.newsland.it...

DoCmd.Close acForm, "Nome Maschera", acSaveNo

 perchè non posti il codice che hai utilizzato??
eccoti servito!!
Private Sub Form_Timer()
Me.timer = Me.timer - 5
If timer = 120 Then
DoCmd.OpenForm "avviso" 'apre la maschera "avviso" 120 sec. prima della
chiusura della maschera corrente
End If
If timer = 180 Then
DoCmd.Close acForm, "avviso", acSaveNo ' DOVREBBE chiudere la maschera
avviso se si sposta il mouse e il conteggio ricomincia da 180
End If
If timer = 5 Then
DoCmd.OpenForm "TIPODETERMINA" ' apre la maschera "tipodetermina" 5 sec.
prima di chiudere la maschera corrente
End If
If Me.timer = 0 Then
DoCmd.Close 'chiude la maschera corrente se il contatore è zero
End If


OneEDP ha scritto:

c'ho provato, ma non va!


 End If
La Maschera Avviso non puoi chiuderla nell'evento "Form_Timer", ma
nell'evento "Corpo_MouseMove". Il problema è comunque che bisogna gestire
la posizione del mouse, poichè se il mouse rimane posizionato sulla
maschera corrente alla scansione del momento Me.Controllo=160, la Maschera
Avviso verrà aperta e poi chiusa. Tra l'altro devi controllare che la
Maschera Avviso sia aperta per poterla chiudere correttamente.
Per poter controllare se "Avviso" è aperta inserisci in un modulo il
seguente codice:
Function IsLoaded(ByVal strFormName As String) As Integer
 ' Restituisce True se la maschera specificata è aperta in visualizzazione
Maschera o Foglio dati.
    Const conObjStateClosed = 0
    Const conDesignView = 0
    If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <>
conObjStateClosed Then
        If Forms(strFormName).CurrentView <> conDesignView Then
            IsLoaded = True
        End If
    End If
End Function
Per poter gestire la posizione del mouse inserisci nella Maschera Corrente
la seguente dichiarazione:
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function SetCursorPos Lib "User32.dll" (ByVal x As Long,
ByVal y As Long) As Long
--------
Nell'evento Corpo_MouseMove della MascheraCorrente:
Private Sub Corpo_MouseMove(Button As Integer, Shift As Integer, x As
Single, y As Single)
Me.ControlloTimer = 180
If IsLoaded("Avviso") Then
DoCmd.Close acForm, "Avviso", acSaveNo
End If
End Sub
-------
Nell'evento Form_Timer della Maschera Corrente:
Private Sub Form_Timer()
Me.ControlloTimer = Me.ControlloTimer - 5
If Me.ControlloTimer = 160 Then
DoCmd.OpenForm "Avviso"
Dim pmouse As POINTAPI
pmouse.x = 0
pmouse.y = 0 'Posiziona il mouse nel punto di coordinate (0,0) e 
             'comunque  deve stare fuori dalla maschera corrente
SetCursorPos pmouse.x, pmouse.y
End If
If Me.ControlloTimer = 0 Then
DoCmd.Close 'chiude la maschera se il contatore è zero.
End If
End Sub
Dovrebbe andare.
--
rgrds
SC


 SC
brrrr!
accidenti ! ho provato ma ho incasinato tutto
ho mischiato il codice vecchio con il nuovo e mi si blocca la maschera!
cosa devo togliere del vecchio?
mi sto' perdendo!


 > SC

Non ho idea quale sia questo vecchio codice. Io ho ritrascritto il tuo
codice secondo il mio criterio. Quale maschera ti si blocca??
Comunque ribadisco che il problema più grosso si trova nell'evento
Corpo_MouseMove che deve gestire la chiusura della maschera "Avviso". Si è
obbligati a ricorrere alle API per spostare il mouse dalla Maschera
Corrente in un altro punto dello schermo fuori dalla maschera, altrimenti
l'evento Me.ControlloTimer=160 che dovrebbe gestirti l'apertura della
maschera "Avviso" non si realizza, o per lo meno avviene ma la maschera
viene immediatamente chiusa, poichè il Me.ControlloTimer assume il valore
di partenza cioè 180.
Se non ci riesci prova a mandarmi il database.
--
rgrds
SC
