Font Size

Profile

Menu Style

Cpanel

28Maio2017

MS Office Gurus

Onde os desenvolvedores Office se encontram

  • Criar conta
    *
    *
    *
    *
    *
    *

    Campos marcados com asterisco (*) são obrigatórios.

Você está aqui: Home Artigos Microsoft Office Word Eventos WindowActivate e WindowDeactivate
Mensagem
  • Kunena is not installed or the installed Kunena version is not supported. The plug-in has now been disabled. Please install/upgrade Kunena to version 1.7 for the Kunena Discuss Plug-in to function properly.

Eventos WindowActivate e WindowDeactivate

O evento WindowActivate ocorrerá quando ativarmos um outro documento. Este evento e bastante útil caso o leitor tenha algum tipo de configuração que somente deve aparecer quando um determinado documento está aberto. Vamos supor que você tenha uma barra de ferramenta personalizada para trabalhar com determinado documento Word. Tal barra deve estar disponível somente quando este documento está ativo. Neste caso, o evento WindowActivate cai como uma luva.

Um outro cenário seria forçar o usuário a permanecer em um determinado documento até que o mesmo seja salvo, por exemplo. As possibilidades são diversas. Por outro lado, o evento WindowDeactivate é o oposto do anterior, isto é, o evento ocorre não quando uma janela recebe o foco, mas quando a janela perde o foco. Obviamente que podemos argumento que independentemente da direção, o que nos interessa é o foco, isto é, o que ocorre com ele. Se for a janela atual que perdeu o foco ou se foi outra que recebeu o foco não importaria para o que desejamos fazer.

Vejamos então um exemplo de como travar o usuário até que ele salve o documento.

Utilizando o evento WindowActivate para travar janela até que documento seja salvo Neste exemplo o objetivo é bloquear a seleção de outra janela (documento) até que o documento atual seja salvo. A primeira coisa que precisamos fazer é, como sempre, iniciar a nossa classe. Como já demonstrado iniciaremos a classe quando o documento for aberto: 

Option Explicit
Dim appWrd As New clsEventos
Private Sub Document_Open()
Set appWrd.appWord = Application
End Sub


O próximo passo é adicionar o evento em nosso módulo de classe. Para facilitar, continuar a usar o nome clsEventos, pois este é o nome utilizado no código acima. As explicações do que está ocorrendo acompanham o código:

Option Explicit Public WithEvents appWord As Word.Application
Private Sub appWord_WindowActivate(ByVal Doc As Document, ByVal Wn As Window)
' Se o nome do documento selecionado não for igual ao nome deste documento
If Not ActiveWindow.Document.Name = ThisDocument.Name Then
' Verificar se o documento. Se nao estiver salvo,entao
If Not ThisDocument.Saved Then
' Mostrar mensagem ao usuário
MsgBox "Você não pode deixar esta janela até que " _
& "este documento seja salvo.", vbExclamation
' E selecionar novamente este documento
Windows(ThisDocument.Name).Activate
End If
End If
End Sub

Com a classe iniciada, caso o usuário tente selecionar uma janela diferente da do documento que contém o código ele não poderá sair da janela até que o documento seja salvo:

VEJA IMAGEM: Mensagem de aviso da impossibilidade de seleção de outro documento antes de salvar

Vejamos agora o exemplo onde a janela perde o foco ao invés de recebê-lo.