... Pague apenas R$67,00 uma única vez e tenha acesso por 1 ano aos vídeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Função para fechar todos os formulários

Em certas situações é necessário forçar o fechamento de formulários.  Por exemplo, o aplicativo Maestro que ofereço neste site, faz uso desta técnica de fechar os formulários para poder realizar o logoff e trocar de usuário.

Quando um formulário é aberto, ele assume um número que começa do zero(0).  Podemos identificar o nome de um formulário aberto, através deste número.  Exemplo de dois formulários abertos:

forms(0).name :::> frmLogin

forms(1).name :::> frmClientes

A propriedade count retorna à quantidade de formulários que estão abertos.  Exemplo:

forms.count :::> 2

Vamos supor que eu feche o formulário frmLogin do exemplo acima, o número de identificação será  atualizado automaticamente e o formulário frmClientes passará a ser identificado pelo zero(0)

forms(0).name :::> frmClientes

forms(1).name :::> Erro 2456 - número inválido

Observe na função abaixo que o laço FOR foi configurado para percorrer os formulários do maior número de identificação para o menor (step -1), justamente por causa da reconfiguração automática dos números de identificação dos formulários abertos que ocorre quando um deles é fechado.

Public sub fncFechaForms(Optional booLogOff As Boolean = False)
On Error Resume Next
Dim j As Integer, nf As Integer
'------------------------------------------------------------
'Armazena na variável nf, a quantidade de formulários abertos
'------------------------------------------------------------
nf = Forms.Count 
'-----------------------------------------------------------------------------
'Percorre os formulários abertos,do maior número de identificação para o menor
'-----------------------------------------------------------------------------
For j = (nf - 1) To 0 Step -1
   If booLogOff Then
      '------------------------------------------------------------------------
      'Fecha todos os formulários, mantendo aberto apenas o formulário frmLogin
      '------------------------------------------------------------------------
      If Not Forms(j).Name = "frmLogin" Then
         DoCmd.Close acForm, Forms(j).Name, acSaveYes
      End If
   Else
      '-------------------------------------------------------
      'Fecha todos os Forms, incluindo o formulário de Login
      '-------------------------------------------------------
      DoCmd.Close acForm, Forms(j).Name, acSaveYes
   End If
Next j
End sub

Para realizar o logoff a função é chamada assim:

call fncFechaForms(true) :::> fecha todos os formulários, exceto o formulário de Login (frmLogin)

Ao encerrar o aplicativo, a função é chamada para fechar todos os formulários:

call fncFechaForms() :::> fecha todos os formulários.

Bom estudo!


 

 


Não há comentário

Envie seu comentário: