Newsgroup: it.comp.appl.access
Titolo: Pulsante tipo "Home" dei siti web

vorrei fare nel mio programma in alcune schede un pulsante tipo Home dei
siti web, cioč che va alla pagina principale ma chiaramente deve chiudere
tutte le schede che sono state aperte nel frattempo, consigli?
grazie
-- 
bye marco
www.marcosanti.it
         /\
       / * \
      / * * \
    /  * * * \
  /----- ||-----\
           ||

 ha scritto nel messaggio 
news:40q42lF...@individual.net...

Puoi ciclare su tutte le maschere aperte e chiuderle lasciando aperta solo 
quella che ti interessa.
Io mi servo di una procedura che quando apro una maschera mi segna "aperta = 
true" in un campo di una tabella e quando la chiudo mi segna "aperta = 
false". In questo modo mi basta scorrere la tabella con solo le aperte e il 
gioco č fatto.
Ciao, Carlo 

 il gioco è fatto.
Stò facendo alcune prove, in questo modo funziona ma ci sono alcune cose che 
non capisco.
Dalla scheda in cui mi trovo attivo la scheda principale S_Home, chiudo la 
scheda da cui la lancio
Forms!S_Home.SetFocus
DoCmd.Close acForm, "S_DoveMiTrovo"        'Funziona anche senza questa 
generalmente, ma in un caso non funzionava, allora per sicurezza la 
inserisco sempre
Call Md_Clienti.cmd_Home
.... e infine lancio questa routine (cmd_Home ) che si trova in un modulo.
Dim frmX As Form
For Each frmX In Forms
  If LCase(frmX.Name) <> LCase("S_Home") Then
    DoCmd.Close acForm, frmX.Name
  End If
Next
For Each frmX In Forms
  If LCase(frmX.Name) <> LCase("S_Home") Then
    DoCmd.Close acForm, frmX.Name
  End If
Next
Il tutto funziona perfettamente ma solo se duplico il ciclo For, altrimenti 
mi lascia sempre aperta una form intermediapisco.
Ho provato da diverse schede e sempre una intermedia me la lasci aperta, 
mentre ripetendo il codice è ok, questo è quello che non ca
-- 
bye marco
www.marcosanti.it

 mentre ripetendo il codice è ok, questo è quello che non ca
Ho fatto casino con i copia incolla:
"Il tutto funziona perfettamente ma solo se duplico il ciclo For, altrimenti
mi lascia sempre aperta una form intermedia.
Ho provato da diverse schede e sempre una me la lascia aperta,
mentre ripetendo il codice è ok, questo è quello che non capisco."

 ha scritto nel messaggio 
news:40qhe9F...@individual.net...

Il codice lo devi preferibilmente eseguire da un modulo pubblico.
Per esempio:
Public Sub ChiudiTutto()
Dim frmX As Form
 For Each frmX In Forms
  If frmX.Name <> "Maschera2" Then
  DoCmd.SelectObject acForm, frmX.Name
  DoCmd.Close acForm, frmX.Name
  End If
 Next
End Sub
Ciao, Carlo 

 grazie
Tratta dal mio sito alla sezione GENERAL
Questo č il modo corretto di gestire la chiusura delle Forms:
Chiamala con 
Call CloseAllForms(FormHomeName)
Public Function CloseAllForms(Optional strForm As String = vbNullString)
As Boolean
'*****************************************************************
'Name      : CloseAllForms()
'Purpose   : Close all Forms eccept Form.Name passed
'Author    : Alessandro Baraldi
'E.Mail    : 
ik2...@libero.it
'Date      : 23 gennaio 2002
'Called by :
'Calls     :
'Inputs    : Form che non deve essere chiusa
'Output    : True if is OK
'*****************************************************************
   On Error GoTo Err_Close
   Dim n, x As Integer
   n = Forms.count
   For x = n - 1 To 0 Step -1
      If Forms(x).Name <> strForm Then DoCmd.Close acForm, Forms(x).Name
   Next
   CloseAllForms = True
Exit_here:
   Exit Function
Err_Close:
   CloseAllForms = False
   Resume Exit_here
End Function
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Ciao, Carlo
Non funziona cosě Carlo, alla prima chiusura di Form
la Collection FORMS perde l'indicizzazione iniziale e
si creano problemi.
Serve ricorrere al ciclo a ritroso sfruttando l'Index
della Collection.
Questo non vale solo per le Form, ma per tutti gli insiemi
o collection di Oggetti.


 @Alex
grazie, funziona perfettamente :-)
