Personalizar um modelo de formulário com um script
Aplica-se A
Se estiver familiarizado com a escrita de scripts, pode adicionar um script ao seu modelo de formulário do Microsoft Office InfoPath com o Microsoft JScript ou o idioma de scripting do Microsoft Visual Basic Scripting Edition (VBScript). Adicionar script permite-lhe personalizar o seu modelo de formulário para além do que está disponível com regras, fórmulas, validação de dados ou formatação condicional. Por exemplo, pode adicionar um script que cria e envia uma mensagem de e-mail quando um utilizador muda a vista num formulário com base no seu modelo de formulário. Pode configurar um modelo de formulário para criar e enviar uma mensagem de e-mail apenas com um script.
Neste artigo
- Descrição Geral
- Considerações de compatibilidade
- Definir a linguagem de scripts para um modelo de formulário
- Apresentar uma mensagem sempre que ocorrer um evento
- Adicionar um script que é executado quando um utilizador guarda os dados do formulário
- Adicionar um script que é executado quando um utilizador submete os dados do formulário
- Adicionar um script que é executado quando um utilizador clica num botão
- Adicionar um script que é executado quando os formulários existentes são intercalados
- Adicionar um script para atualizar os formulários existentes
- Adicionar um script para outros eventos
Descrição Geral
Pode personalizar o modelo de formulário do InfoPath através de regras, fórmulas, validação de dados e formatação condicional. Embora estas funcionalidades sejam muito flexíveis e consigam lidar com uma grande variedade de tarefas, algumas tarefas estão para além das capacidades destas funcionalidades. Por exemplo, não pode utilizar regras para enviar uma mensagem de e-mail quando um utilizador introduz um valor numa caixa de texto num formulário. Se precisar de personalizar o seu modelo de formulário de uma forma que ultrapasse as capacidades destas funcionalidades e estiver familiarizado com a escrita de scripts com a linguagem de script JScript ou VBScript, pode adicionar um script que é executado quando um utilizador abre um novo formulário ou modifica um formulário existente baseado no seu modelo de formulário.
Quando adiciona um script a um modelo de formulário, o InfoPath inicia o Microsoft Script Editor (MSE), que lhe permite adicionar, editar e depurar scripts num modelo de formulário e coloca o cursor no evento escolhido. O InfoPath adiciona automaticamente um processador de eventos ao script. Um processador de eventos é o código de função num modelo de formulário do InfoPath que responde a uma ação do utilizador ou a uma alteração aos dados XML num formulário. Por exemplo, se quiser que os seus utilizadores guardem os respetivos formulários em várias localizações de rede, pode adicionar um script ao processador de eventos OnSaveRequest . Quando adiciona um script para ser executado quando o utilizador guarda um formulário com base no seu modelo de formulário, o InfoPath inicia o editor de scripts e adiciona um dos seguintes códigos ao script.
Nota
O código que o InfoPath adiciona depende da linguagem de script escolhida.
JScript
//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSaveRequest(eventObj)
{
// Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation();
// Write the code to be run after saving here.
eventObj.ReturnStatus = true;
}
VBScript
'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSaveRequest(eventObj)
' Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation
' Write the code to be run after saving here.
eventObj.ReturnStatus = True
End Sub
Em seguida, pode adicionar código nos locais adequados no processador de eventos que guarda o formulário na localização de rede diferente. Quando um utilizador guarda um formulário com base neste modelo de formulário, o InfoPath executa o código no processador de eventos OnSaveRequest .
Nota
Este artigo fornece uma vista de alto nível da criação de scripts num modelo de formulário. Para saber mais sobre a Microsoft Script Editor e objetos, métodos, eventos e propriedades específicos utilizados no InfoPath, consulte a referência do InfoPath Developer.
O InfoPath adiciona automaticamente processadores de eventos para todos, exceto um dos seguintes eventos.
| Processador de eventos | Descrição | Passos para criar |
|---|---|---|
| OnAfterChange | Este evento é executado depois de um utilizador alterar o valor no controlo especificado vinculado a um campo. Por exemplo, pode apresentar um painel de tarefas HTML personalizado depois de um utilizador selecionar um item num controlo de caixa de listagem. Este evento é executado após o evento OnValidate . | Clique com o botão direito do rato num controlo no modelo de formulário ou num campo no painel de tarefas Origem de Dados , aponte para Programação no menu de atalho e, em seguida, clique em Ativado Após Alterar Evento. |
| OnAfterImport | Este evento é executado depois de o utilizador intercalar com êxito vários formulários num único formulário. | Adicione manualmente a declaração do processador de eventos OnAfterImport diretamente ao ficheiro de script com o MSE. Não é possível criar este processador de eventos no modo de estrutura. |
| OnBeforeChange | Este evento é executado depois de um utilizador alterar o valor num controlo e antes de o valor ser adicionado ao campo especificado vinculado a esse controlo. Por exemplo, pode impedir um utilizador de adicionar uma linha adicional antes de preencher a última linha numa tabela de repetição. | Clique com o botão direito do rato num controlo no modelo de formulário ou num campo no painel de tarefas Origem de Dados , aponte para Programação no menu de atalho e, em seguida, clique em Ativado Antes de Alterar Evento. |
| AoFazerClique | Este evento é executado quando um utilizador clica num botão associado a este evento. Este evento está disponível depois de adicionar um botão ao modelo de formulário. Por exemplo, pode efetuar um cálculo complexo com os valores em campos na origem de dados principal quando um utilizador clica no botão. | Faça duplo clique no controlo de botão e, em seguida, no separador Geral da caixa de diálogo Propriedades do Botão , clique em Editar Código de Formulário. |
| OnContextChange | Este evento é executado quando o foco muda no formulário. Por exemplo, este evento é executado quando um utilizador navega de uma caixa de texto para um seletor de datas ou quando um utilizador muda de vista. Este evento ocorre depois de todos os outros eventos terem ocorrido. | No menu Ferramentas , aponte para Programação e, em seguida, clique em Evento de Alteração de Contexto. |
| OnLoad | Este evento é executado sempre que um utilizador cria um novo formulário ou abre um formulário existente com base no seu modelo de formulário. Por exemplo, pode copiar uma lista de itens de uma origem de dados secundária para a origem de dados principal quando um utilizador abre o formulário. | No menu Ferramentas , aponte para Programação e, em seguida, clique em Ao Carregar Evento. |
| OnMergeRequest | Este evento é executado quando os formulários baseados no modelo de formulário são intercalados. Por exemplo, pode apresentar o número de formulários que foram intercalados para dar um estado a um utilizador durante a operação de intercalação. | No menu Ferramentas , clique em Opções de Formulário. Na lista Categoria , clique em Avançadas. Em Intercalar formulários, selecione a caixa de verificação Intercalar com código personalizado e, em seguida, clique em Editar. |
| OnSaveRequest | Este evento é executado quando um utilizador guarda um formulário com base no seu modelo de formulário. Por exemplo, pode guardar o formulário com base neste modelo de formulário em mais do que uma localização quando um utilizador guarda o formulário. O InfoPath adiciona duas linhas de código adicionais a este evento: uma linha que guarda o formulário e outra linha que indica se o InfoPath guardou o formulário com êxito. | No menu Ferramentas , clique em Opções de Formulário. Na lista Categoria , clique em Abrir e Guardar. Em Comportamento de guardar, selecione a caixa de verificação Guardar com código personalizado e, em seguida, clique em Editar. |
| OnSign | Este evento é executado quando um utilizador aplica uma assinatura digital a um formulário. Por exemplo, pode adicionar dados adicionais à assinatura digital de um formulário de relatório de despesas quando um utilizador assinar. | No menu Ferramentas , aponte para Programação e, em seguida, clique em Evento de Início de Sessão. |
| OnSubmitRequest | Este evento é executado quando um utilizador submete os dados do formulário. Por exemplo, pode submeter os dados do formulário para um serviço Web seguro quando o utilizador clicar em Submeter no menu Ficheiro . Uma vez que o InfoPath não suporta uma ligação de dados a um serviço Web seguro, tem de adicionar uma ligação de dados personalizada que funcione com o seu serviço Web seguro. | No menu Ferramentas , clique em Opções de Submissão. Selecione a caixa de verificação Permitir que os utilizadores submetam este formulário , clique em Executar ação personalizada com o Código e, em seguida, clique em Editar Código. |
| OnSwitchView | Este evento é executado quando um utilizador abre um formulário com base no seu modelo de formulário ou muda para outra vista no formulário. Por exemplo, quando um utilizador muda para uma vista específica, pode criar uma mensagem de e-mail que contém dados dos campos na origem de dados principal do formulário. | No menu Ferramentas , clique em Programação e, em seguida, clique em Ativar Evento de Vista do Comutador. |
| OnValidate | Este evento é executado quando um utilizador altera o valor num controlo vinculado a um campo. Por exemplo, quando o utilizador altera o valor num controlo específico, pode calcular um novo valor para outro controlo com o número que o utilizador introduziu e um número que está no script. Este evento ocorre após a execução do processador de eventos OnBeforeChange . | Clique com o botão direito do rato num controlo no modelo de formulário ou num campo no painel de tarefas Origem de Dados , aponte para Programação no menu de atalho e, em seguida, clique em Ativado Após Validar Evento. |
| OnVersionUpgrade | Este evento é executado quando um utilizador abre um formulário existente e o número da versão do modelo de formulário utilizado pelo formulário existente é mais antigo do que o número da versão do modelo de formulário na localização de publicação. Quando um utilizador abre um formulário existente, o InfoPath verifica o número da versão do modelo de formulário associado ao formulário existente. Se o modelo de formulário tiver um número de versão mais recente, o InfoPath executa o processador de eventos OnVersion quando o utilizador abre o formulário existente. Por exemplo, imagine que adiciona um novo campo a um modelo de formulário existente e o publica novamente e pretende que o novo campo seja adicionado à origem de dados principal se um utilizador abrir um formulário existente. Este evento adiciona o novo campo à origem de dados principal quando um utilizador abre um formulário existente. | No menu Ferramentas , clique em Opções de Formulário. Na lista Categoria , clique em Controlo de Versões. Na lista Atualização da versão ativada, clique em Utilizar evento personalizado e, em seguida, clique em Editar. |
Considerações de compatibilidade
Não é possível adicionar scripts a um modelo de formulário compatível com o browser. Só pode adicionar script a um modelo de formulário cujos formulários serão preenchidos no InfoPath. Só pode personalizar um modelo de formulário compatível com o browser com código gerido.
Definir a linguagem de scripts para um modelo de formulário
Para personalizar um modelo de formulário com script, pode utilizar o Microsoft JScript ou o Microsoft Visual Basic Scripting Edition (VBScript). Por predefinição, o InfoPath está configurado para adicionar script com jScript. Se o modelo de formulário não contiver nenhum script ou código gerido e preferir utilizar o VBScript como linguagem de script, pode alterar a linguagem de scripts do modelo de formulário para VBScript. Não pode utilizar ambos os idiomas de scripting no mesmo modelo de formulário.
Se o modelo de formulário já tiver scripts num idioma e quiser utilizar o outro idioma, terá de guardar o script existente para poder converter o script para outro idioma, remover o script do modelo de formulário através da caixa de diálogo Opções de Formulário e, em seguida, adicionar o script convertido novamente ao modelo de formulário. O InfoPath não consegue converter scripts numa nova linguagem de scripting. Alterar o idioma do script na caixa de diálogo Opções de Formulário afeta apenas este modelo de formulário. Outros modelos de formulário terão jScript como a linguagem de scripting predefinida.
No menu Ferramentas , clique em Opções de Formulário.
Na lista Categoria , na caixa de diálogo Opções de Formulário , clique em Programação.
Na lista Linguagem de código do modelo de formulário, em Linguagem de programação, clique em VBScript.
Nota
- Depois de definir a linguagem de scripting e criar um ou mais processadores de eventos para um modelo de formulário, não pode alterar a linguagem de scripting para o modelo de formulário.
- Se tiver instalado o Microsoft Visual Studio 2005 Tools for Applications, o idioma predefinido é Microsoft Visual Basic .NET. Ainda pode utilizar este procedimento para alterar a linguagem de scripting para VBScript.
Apresentar uma mensagem sempre que ocorrer um evento
Se quiser saber que processadores de eventos são executados em resposta a uma ação ou outro evento, pode adicionar código temporário para apresentar uma caixa de mensagem sempre que o processador de eventos for executado. Deve utilizar este código apenas para determinar quando um processador de eventos é executado. Depois de adicionar este código, pode utilizar a pré-visualização para ver um formulário com base neste modelo de formulário ou para publicar o modelo de formulário e, em seguida, criar um novo modelo de formulário. Alguns processadores de eventos só são executados se criar um formulário depois de publicar o modelo de formulário. Em seguida, pode efetuar uma ação que pensa que pode executar o processador de eventos. Quando o processador de eventos for executado, verá uma caixa de mensagem.
Depois de determinar que ações ou eventos executam o processador de eventos, remova o código e, em seguida, retome a estruturação do modelo de formulário. Se não remover este código e, em seguida, publicar o modelo de formulário, os seus utilizadores verão esta caixa de mensagem quando o processador de eventos for executado.
Adicione o processador de eventos.
Para adicionar código no JScript, escreva XDocument.UI.Alert("O evento do nome do evento acabou de ser executado"); Substitua pelo nome do processador de eventos. Por exemplo, se adicionar este código ao processador de eventos OnValidate , escreveria XDocument.UI.Alert("O processador de eventos OnValidate acabou de ser executado");
Para adicionar código no VBScript, escreva XDocument.UI.Alert("O evento do nome do evento acabou de ser executado") Por exemplo, se adicionar este código ao processador de eventos OnSaveRequest , escreveria XDocument.UI.Alert("O processador de eventos OnSaveRequest acabou de ser executado")
Para testar o código, clique em Pré-visualizar no menu Ficheiro ou prima Ctrl+Shift+B e, em seguida, execute uma ação de utilizador que possa iniciar o evento. Quando o evento com a linha de código ocorre, uma caixa de mensagem deve apresentar a sua mensagem.
Nota
Alguns eventos podem exigir que publique o modelo de formulário e, em seguida, crie um formulário baseado neste modelo de formulário antes de poder efetuar uma ação de utilizador para iniciar o evento.
Antes de publicar o modelo de formulário e permitir que os seus utilizadores preencham formulários com base neste modelo de formulário, elimine o código que utilizou para apresentar a caixa de mensagem.
Adicionar um script que é executado quando um utilizador guarda os dados do formulário
No menu Ferramentas , clique em Opções de Formulário.
Na lista Categoria , na caixa de diálogo Opções de Formulário , clique em Abrir e Guardar.
Em Comportamento de guardar, selecione a caixa de verificação Guardar com código personalizado e, em seguida, clique em Editar. O Microsoft Script Editor começa com o cursor no processador de eventos OnSaveRequest.
JScript//======= // The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnSaveRequest(eventObj) { // Write the code to be run before saving here. eventObj.IsCancelled = eventObj.PerformSaveOperation(); // Write the code to be run after saving here. eventObj.ReturnStatus = true; }VBScript
'======= ' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnSaveRequest(eventObj) ' Write the code to be run before saving here. eventObj.IsCancelled = eventObj.PerformSaveOperation ' Write the code to be run after saving here. eventObj.ReturnStatus = True End SubSiga um ou ambos os procedimentos que se seguem:
- Para adicionar um script que é executado antes de o InfoPath guardar o formulário, substitua o comentário
Write the code to be run before saving here.pelo seu código. - Para adicionar um script que é executado após o InfoPath guardar o formulário, substitua o comentário
Write the code to be run after saving here.pelo seu código.
- Para adicionar um script que é executado antes de o InfoPath guardar o formulário, substitua o comentário
Para testar as suas alterações, clique em Pré-visualizar na barra de ferramentas Padrão ou prima CTRL+SHIFT+B.
Nota
Se o processador de eventos for executado apenas depois de criar um formulário com base no modelo de formulário, publique o modelo de formulário ao clicar em Publicar no menu Ficheiro e, em seguida, conclua o Assistente de Publicação. Depois de publicar o modelo de formulário, crie um formulário e, em seguida, execute uma ação para executar o processador de eventos.
Adicionar um script que é executado quando um utilizador submete os dados do formulário
No menu Ferramentas , clique em Opções de Submissão.
Na caixa de diálogo Opções de Submissão , selecione a caixa de verificação Permitir que os utilizadores submetam este formulário .
Clique em Executar ação personalizada com o Código e, em seguida, clique em Editar Código. O Microsoft Script Editor começa com o cursor no processador de eventos OnSubmitRequest.
JScript//======= // The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnSubmitRequest(eventObj) { // If the submit operation is successful, set // eventObj.ReturnStatus = true; // Write your code here }VBScript
'======= ' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnSubmitRequest(eventObj) ' If the submit operation is successful, set ' eventObj.ReturnStatus = True ' Write your code here End SubSubstitua o comentário
If the submit operation is successful, set eventObj.ReturnStatus = true Write your code herepelo seu código.Para testar as suas alterações, clique em Pré-visualizar na barra de ferramentas Padrão ou prima CTRL+SHIFT+B.
Adicionar um script que é executado quando um utilizador clica num botão
Adicione um novo botão a uma vista no modelo de formulário e, em seguida, faça duplo clique no botão.
Nota
Se estiver a adicionar script a um botão existente, faça duplo clique no botão existente.
Clique no separador Geral.
Clique em Editar Código de Formulário. O Microsoft Script Editor começa com o cursor no processador de eventos OnClick para esse botão.
JScript//======= // The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function Button Name::OnClick(eventObj) { // Write your code here }VBScript
'======= ' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub Button Name_OnClick(eventObj) ' Write your code here End SubSubstitua o comentário
Write your code herepelo seu código.Para testar as suas alterações, clique em Pré-visualizar na barra de ferramentas Padrão ou prima CTRL+SHIFT+B.
Adicionar um script que é executado quando os formulários existentes são intercalados
No menu Ferramentas , clique em Opções de Formulário.
Na lista Categoria , na caixa de diálogo Opções de Formulário , clique em Avançadas.
Em Intercalar formulários, selecione a caixa de verificação Ativar intercalação de formulários .
Selecione a caixa de verificação Intercalar utilizando código personalizado e, em seguida, clique em Editar. O Microsoft Script Editor começa com o cursor no processador de eventos OnMergeRequest.
JScript//======= // The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnMergeRequest(eventObj) { // Write the code that handles each form being merged here. XDocument.ImportDOM(eventObj.DOM); eventObj.ReturnStatus = true; }VBScript
'======= ' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnMergeRequest(eventObj) ' Write the code that handles each form being merged here. XDocument.ImportDOM(eventObj.DOM) eventObj.ReturnStatus = True End SubSubstitua o comentário
Write the code that handles each form being merged here.pelo seu código.Para testar o código neste evento, publique o modelo de formulário, crie vários formulários com base neste modelo de formulário e, em seguida, intercale os modelos de formulário.
Nota
Encontre ligações para obter mais informações sobre a publicação do modelo de formulário na secção Consulte Também .
Adicionar um script para atualizar os formulários existentes
Se tiver atualizado um modelo de formulário publicado anteriormente e quiser atualizar os formulários existentes com base nesse modelo de formulário, pode adicionar script ao modelo de formulário atualizado que é executado quando um utilizador abre um dos formulários existentes. Quando um utilizador abre um formulário existente, o InfoPath verifica o número da versão do modelo de formulário associado na localização de publicação. Se o número da versão do modelo de formulário na localização de publicação for mais recente do que o número da versão no formulário existente, indicando que foi atualizado, o InfoPath executa o código neste evento para atualizar o formulário existente.
No menu Ferramentas , clique em Opções de Formulário.
Na lista Categoria , na caixa de diálogo Opções de Formulário , clique em Controlo de Versões.
Na lista Atualização da versão ativada, clique em Utilizar evento personalizado e, em seguida, clique em Editar. A Microsoft Script Editor começa com o cursor no processador de eventos OnVersionUpgrade.
JScript//======= // The following function handler is created by Microsoft Office InfoPath. // Do not modify the name of the function, or the name and number of arguments. //======= function XDocument::OnVersionUpgrade(eventObj) { // Write your code here }VBScript
'======= ' The following function handler is created by Microsoft Office InfoPath. ' Do not modify the name of the function, or the name and number of arguments. '======= Sub XDocument_OnVersionUpgrade(eventObj) ' Write your code here End SubSubstitua o comentário
Write your code herepelo seu código.Para testar o código neste evento, publique o modelo de formulário, crie vários formulários com base neste modelo de formulário, modifique e publique uma versão atualizada do modelo de formulário e, em seguida, abra um formulário existente com base na versão mais antiga deste modelo de formulário.
Nota
Encontre ligações para obter mais informações sobre a publicação do modelo de formulário na secção Consulte Também .
Adicionar um script para outros eventos
Este procedimento pode ser utilizado para adicionar os seguintes processadores de eventos ao modelo de formulário:
- OnAfterChange
- OnBeforeChange
- OnContextChange
- OnLoad
- OnSwitchView
- OnSign
- OnValidate
- No menu Ferramentas , aponte para Programação e, em seguida, clique no evento para adicionar ao processador de eventos. A Microsoft Script Editor começa com o cursor no processador de eventos que selecionou.
- Substitua o comentário
Write your code herepelo seu código.