Como criar pop-up ajuda sensível ao contexto utilizando WinHelp () API do Windows

Avançado: Requer conhecimentos avançados sobre codificação, interoperabilidade e ambiente multi-utilizador.

Para obter uma versão do Microsoft Access 97 deste artigo, consulte 141621.

Resumo

É uma alternativa à apresentação de sistema de ajuda online da aplicação numa janela separada para apresentá-la numa janela de pop-up sombreada, pequena na sua aplicação. Para tal, pode utilizar a função de WinHelp () API do Windows com o respectivo argumento HELP_CONTEXTPOPUP. Este artigo mostra como implementar um sistema de ajuda. Este artigo pressupõe que está familiarizado com a utilização do Microsoft Windows Help Workshop para criar ficheiros de ajuda do Windows.

Mais Informações

A função de WinHelp () API do Windows suporta um grande número de opções. A opção HELP_CONTEXTPOPUP abre uma janela de pop-up sombreada na qual pode visualizar a ajuda. Esta janela é semelhante à janela que abre quando clica numa entrada de glossário (texto sublinhado, verde) no sistema de ajuda do Microsoft Access. Para implementar esta funcionalidade, siga estes passos:

  • Crie um sistema de ajuda trabalhar, definindo as propriedades IdentificaçãoDeContextoDaAjuda e o ficheiro de ajuda para os formulários para um ficheiro de ajuda do Windows válido.

  • Redireccione a tecla F1 para chamar uma função definida pelo utilizador que abre o ficheiro de ajuda utilizando a opção de HELP_CONTEXTPOPUP.

Tenha em atenção que ir ou ramificações a outros tópicos de ajuda a partir da janela de ajuda de pop-up não é suportado pelos métodos descritos neste artigo. Os seguintes passos descrevem como criar a função definida pelo utilizador para abrir a janela de ajuda de contexto e redireccionar a tecla F1: atenção: se seguir os passos neste exemplo, modificará a base de dados de exemplo Adamastor. mdb. Poderá pretender criar uma cópia de segurança do ficheiro Adamastor. mdb e siga estes passos numa cópia da base de dados.

Access 2000, Access 2002 e Access 2003

  1. Inicie o Microsoft Access

  2. Abra a base de dados de exemplo Adamastor. mdb ou o projecto de exemplo NorthwindCS. adp.

  3. Na janela Base de dados, na secção de objectos, clique em módulos.

  4. Clique em Novo.

  5. No Editor do Visual Basic, escreva ou cole o código seguinte na secção de declarações:

    Declare Function WinHelp Lib "user32" Alias "WinHelpA" _                 (ByVal hwnd As Long, _                  ByVal lpHelpFile As String, _                  ByVal wCommand As Long, _                  ByVal dwData As Long) As LongPublic Const HELP_CONTEXTPOPUP = &H8&

    Nota: poderá ter algumas funções da API do Microsoft Windows definidas numa biblioteca Microsoft Access existente; Por conseguinte, as declarações podem ser duplicados. Se receber uma mensagem de erro de nome de procedimento duplicados, remova ou comentar a instrução de declarações no código.

  6. Acrescente o seguinte código no Editor do Visual Basic:

    Function Help32() As Boolean   On Local Error GoTo Help32_Err   Dim Cid As Long, Result As Long   On Error Resume Next   ' Get the HelpContextID of the active control.   ' The error is 2474 if no control is active.   Cid = Screen.ActiveControl.HelpContextId   If Cid = 0 Then      ' There is no control context ID, so check the form and get      ' the HelpContextID of the active form.      ' The error is 2475 if no form is active.      Cid = Screen.ActiveForm.HelpContextId   End If   ' If there is a context ID, open the Help file with context.   ' Specify your custom Help file for the second argument.   ' This example used the default help file NWIND9.HLP located   ' in the Office Samples folder.    ' If the NWIND9.HLP is not available, then replace the    ' specified path with a valid Winhelp file, and modify the code and     ' the HelpContextID of the Forms and Controls accordingly.   If Cid > 0 And Cid < 32767 Then      Result = WinHelp(Application.hWndAccessApp, _      "C:\Program Files\Microsoft Office\Office\Samples\nwind9.hlp", _      HELP_CONTEXTPOPUP, Cid)      Help32 = True   End IfHelp32_End:   Exit FunctionHelp32_Err:   MsgBox Err.Description   Resume Help32_EndEnd Function
  7. Guarde o módulo como HelpModule.

  8. Feche o Editor do Visual Basic.

  9. Na janela Base de dados, na secção de objectos, clique em Macros.

  10. Clique em Novo.

  11. Crie a seguinte macro nova para redireccionar a tecla F1: Macro Name Action Action Arguments -------------------------------------------------------- {F1} RunCode Function Name: Help32()

  12. Guardar a macro como teclas automáticase, em seguida, feche a macro.

  13. Na janela Base de dados, na secção de objectos, clique em formulários.

  14. No painel da direita, faça duplo clique em ' fornecedores'.

  15. Prima a tecla F1.

Observe que o Microsoft Access apresenta a mensagem de ajuda, correspondente a IdentificaçãoDeContextoDaAjuda do controlo ou formulário, na caixa de contexto.

Access 2007

  1. Inicie o Microsoft Access

  2. Abra a base de dados de exemplo Northwind2007.accdb.

  3. No separador Criar , clique na seta para baixo abaixo Macroe, em seguida, clique em módulo.

  4. No Editor do Visual Basic, cole o seguinte exemplo de código na secção de declarações.

    Declare Function WinHelp Lib "user32" Alias "WinHelpA" _                 (ByVal hwnd As Long, _                  ByVal lpHelpFile As String, _                  ByVal wCommand As Long, _                  ByVal dwData As Long) As LongPublic Const HELP_CONTEXTPOPUP = &H8&

    Nota Poderá ter algumas funções da API do Microsoft Windows definidas numa biblioteca Microsoft Access existente; Por conseguinte, as declarações podem ser duplicados. Se receber uma mensagem de erro de nome de procedimento duplicados, remova ou comentar a instrução de declarações no código.

  5. Acrescente o seguinte exemplo de código no Editor do Visual Basic.

    Function Help32() As Boolean   On Local Error GoTo Help32_Err   Dim Cid As Long, Result As Long   On Error Resume Next   ' Get the HelpContextID of the active control.   ' The error is 2474 if no control is active.   Cid = Screen.ActiveControl.HelpContextId   If Cid = 0 Then      ' There is no control context ID, so check the form and get      ' the HelpContextID of the active form.      ' The error is 2475 if no form is active.      Cid = Screen.ActiveForm.HelpContextId   End If   ' If there is a context ID, open the Help file with context.   ' Specify your custom Help file for the second argument.   ' This example used the default help file NWIND9.HLP located   ' in the Office Samples folder.    ' If the NWIND9.HLP is not available, then replace the    ' specified path with a valid Winhelp file, and modify the code and     ' the HelpContextID of the Forms and Controls accordingly.   If Cid > 0 And Cid < 32767 Then      Result = WinHelp(Application.hWndAccessApp, _      "C:\Program Files\Microsoft Office\Office\Samples\nwind9.hlp", _      HELP_CONTEXTPOPUP, Cid)      Help32 = True   End IfHelp32_End:   Exit FunctionHelp32_Err:   MsgBox Err.Description   Resume Help32_EndEnd Function
  6. Guarde o módulo como HelpModule.

  7. Feche o Editor do Visual Basic.

  8. No separador Criar , clique em Macro.

  9. Crie a seguinte macro nova para redireccionar a tecla F1: Macro Name Action Action Arguments -------------------------------------------------------- {F1} RunCode Function Name: Help32()

  10. Guardar a macro como teclas automáticas e, em seguida, feche a macro.

  11. No painel da esquerda, clique em fornecedores .

  12. No painel da esquerda, faça duplo clique em Lista de fornecedores.

  13. Prima a tecla F1.

Observe que o Microsoft Access apresenta a mensagem de ajuda, correspondente a IdentificaçãoDeContextoDaAjuda do controlo ou formulário, na caixa de contexto.

Referências

Para mais informações, clique nos números de artigo que se segue para visualizar os artigos na Microsoft Knowledge Base:

828419 como criar um sistema de ajuda HTML utilizando a API HTMLHelp ou a ajuda de HTML no Access

242433 como criar ficheiros de ajuda HTML sensíveis ao contexto

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×