Úprava šablony formuláře pomocí skriptu

Důležité :  Tento článek je strojově přeložený – přečtěte si toto upozornění. Anglickou verzi tohoto článku pro referenci najdete tady.

Pokud ovládáte psaní skriptů, můžete do šablony formuláře aplikace Microsoft Office InfoPath přidat skript pomocí skriptovacích jazyků Microsoft JScript nebo Microsoft Visual Basic Scripting Edition (VBScript). Přidáním skriptu je možné upravit šablonu formuláře ve větší míře, než umožňují pravidla, vzorce, ověření dat, nebo podmíněné formátování. Můžete například přidat skript, který vytvoří a odešle e-mailovou zprávu, když uživatel přepne zobrazení ve formuláři založeném na vaší šabloně. Konfigurovat šablonu formuláře pro vytvoření a odeslání e-mailové zprávy je možné pouze pomocí skriptu.

V tomto článku

Základní informace

Důležité informace o kompatibilitě

Nastavení skriptovacího jazyka pro šablonu formuláře

Zobrazit zprávu pokaždé, když dojde k události

Přidejte skript, který spustí, když uživatel uloží dat formuláře

Přidejte skript, který se spustí při odeslání dat formuláře

Přidejte skript, který se spustí při kliknutí tlačítko

Přidání skriptu, které se spouští při sloučení formulářů

Přidání skriptu k aktualizaci stávajícího formuláře

Přidání skriptu pro jiné události

Přehled

Šablonu formuláře aplikace InfoPath je možné upravit přidáním pravidel, vzorců, ověření dat nebo podmíněným formátováním. Přestože se jedná o velmi flexibilní funkce, s nimiž lze vyřešit celou řadu úkolů, některé úkoly přesahují možnosti těchto funkcí. Chcete-li například odeslat e-mailovou zprávu, jakmile uživatel zadá hodnotu to textového pole ve formuláři, nelze k tomu použít pravidla. Potřebujete-li upravit šablou formuláře takovým způsobem, který přesahuje možnosti těchto funkcí, a ovládáte-li psaní skriptů pomocí skriptovacího jazyka JScript nebo VBScript, můžete přidat skript, který se spustí, když uživatel otevře nový formulář, případně změní existující formulář založený na vaší šabloně formuláře.

Přidáte-li skript do šablony formuláře, aplikace InfoPath spustí editor Microsoft Script Editor (MSE), který umožní přidání, úpravu nebo ladění přidaného skriptu a umístí kurzor do vybrané události. Aplikace InfoPath automaticky přidá do skriptu obslužnou rutinu události. Jedná se o kód funkce v šabloně formuláře aplikace InfoPath, který reaguje na akce uživatele nebo na změnu dat XML ve formuláři. Chcete-li například, aby uživatelé ukládali své formuláře do několika síťových umístění, přidejte skript do obslužné rutiny události OnSaveRequest. Přidáte-li skript, který se spustí, jakmile uživatel uloží formulář založený na vaší šabloně formuláře, aplikace InfoPath spustí skriptovací editor a přidá do skriptu jeden z následujících kódů.

Poznámka : Kód, který aplikace InfoPath přidá, závisí na zvoleném skriptovacím jazyce.

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

Potom můžete přidat kód na příslušná místa obslužné rutiny události, která uloží formulář do jiného síťového umístění. Když uživatel uloží formulář založený na této šabloně formuláře, aplikace InfoPath spustí kód obsažený v obslužné rutině události OnSaveRequest.

Poznámka : Tento článek slouží jako všeobecný přehled o vytváření skriptů v šabloně formuláře. Další informace o editoru Microsoft Script Editor a o konkrétních objektech, metodách, událostech nebo vlastnostech používaných v aplikaci InfoPath naleznete v Referenční příručce pro vývojáře aplikace InfoPath.

Aplikace InfoPath automaticky přidá obslužné rutiny události ke všem následujícím událostem kromě jedné.

Event handler

Description

Steps for creating

OnAfterChange

This event runs after a user changes the value in the specified control bound to a field. For example, you can display a custom HTML task pane after a user selects an item in a list box control. This event runs after the OnValidate event.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On After Change Event.

OnAfterImport

This event runs after the user successfully merges several forms into one form.

Manually add the OnAfterImport event handler declaration directly to the script file by using MSE. This event handler cannot be created in design mode.

OnBeforeChange

This event runs after a user changes the value in a control and before the value is added to the specified field bound to that control. For example, you can prevent a user from adding an additional row before filling out the last row in a repeating table.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On Before Change Event.

OnClick

This event runs when a user clicks a button associated with this event. This event is available after you add a button to the form template. For example, you can perform a complex calculation by using the values in fields in the main data source when a user clicks the button.

Double-click the button control and then on the General tab of the Button Properties dialog box, click Edit Form Code.

OnContextChange

This event runs when the focus changes in the form. For example, this event runs when a user navigates from a text box to a date picker, or when a user switches views. This event occurs after all other events have occurred.

On the Tools menu, point to Programming, and then click On Context Change Event.

OnLoad

This event runs whenever a user creates a new form or opens an existing form based on your form template. For example, you can copy a list of items from a secondary data source to the main data source when a user opens the form.

On the Tools menu, point to Programming, and then click On Load Event.

OnMergeRequest

This event runs when forms based on your form template are merged. For example, you can display the number of forms that were merged to give a user a status during the merge operation.

On the Tools menu, click Form Options. In the Category list, click Advanced. Under Merge forms, select the Merge using custom code check box, and then click Edit.

OnSaveRequest

This event runs when a user saves a form based on your form template. For example, you can save the form based on this form template to more than one location when a user saves the form. InfoPath adds two additional lines of code to this event: a line that saves the form and another line that tells you if InfoPath successfully saved the form.

On the Tools menu, click Form Options. In the Category list, click Open and Save. Under Save behavior, select the Save using custom code check box, and then click Edit.

OnSign

This event runs when a user applies a digital signature to a form. For example, you can add additional data to the digital signature of an expense report form when a user signs it.

On the Tools menu, point to Programming, and then click On Sign Event.

OnSubmitRequest

This event runs when a user submits his or her form data. For example, you can submit the form data to a secure Web service when the user clicks Submit on the File menu. Since InfoPath does not support a data connection to a secure Web service, you need to add a custom data connection that works with your secure Web service.

On the Tools menu, click Submit Options. Select the Allow users to submit this form check box, click Perform custom action using Code, and then click Edit Code.

OnSwitchView

This event runs when a user opens a form based on your form template or switches to another view in the form. For example, when a user switches to a specific view, you can create an e-mail message that contains data from the fields in the form's main data source.

On the Tools menu, click Programming, and then click On Switch View Event.

OnValidate

This event runs when a user changes the value in a control bound to a field. For example, when the user changes the value in a specific control, you can calculate a new value for another control by using the number that the user entered and a number that is in the script. This event occurs after the OnBeforeChange event handler runs.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On After Validate Event.

OnVersionUpgrade

This event runs when a user opens an existing form and the version number of the form template used by the existing form is older than the version number of the form template in the publish location. When a user opens an existing form, InfoPath checks the version number of the form template associated with the existing form. If the form template has a newer version number, InfoPath runs the OnVersion event handler when the user opens the existing form. For example, imagine that you add a new field to an existing form template and republish it, and you want the new field to be added to the main data source if a user opens an existing form. This event adds the new field to the main data source when a user opens an existing form.

On the Tools menu, click Form Options. In the Category list, click Versioning. In the On version upgrade list, click Use custom event, and then click Edit.

Začátek stránky

Aspekty kompatibility:

Do Šablona formuláře kompatibilní s prohlížečem není možné přidat skript. Tento skript lze přidat pouze do šablony formuláře, jejíž formuláře budou vyplňovány v aplikaci InfoPath. Šablonu formuláře kompatibilní s prohlížečem lze upravit pouze pomocí spravovaného kódu.

Začátek stránky

Nastavení skriptovacího jazyka pro šablonu formuláře

Chcete-li šablonu formuláře přizpůsobit pomocí skriptů, můžete použít jazyky Microsoft JScript nebo Microsoft Visual Basic Scripting Edition (VBScript). Aplikace InfoPath je ve výchozím nastavení konfigurována na přidání skriptu pomocí jazyka JScript. Pokud vaše šablona neobsahuje žádný skript ani spravovaný kód a dáváte přednost použití skriptovacího jazyka VBScript, můžete změnit skriptovací jazyk pro šablonu formuláře na VBScript. V jedné šabloně formuláře nelze používat oba skriptovací jazyky.

Pokud šablona formuláře již obsahuje skript v jednom jazyce a vy chcete použít jiný jazyk, je třeba uložit existující skript tak, abyste mohli skript převést do druhého jazyka, odebrat skript z šablony formuláře pomocí dialogového okna Možnosti formuláře a následně přidat převedený skript zpět do šablony formuláře. Aplikace InfoPath nemůže převádět skripty do nového skriptovacího jazyka. Změna skriptovacího jazyka v dialogovém okně Možnosti formuláře má vliv pouze na tuto šablonu formuláře. Ostatní šablony formuláře budou jako výchozí skriptovací jazyk používat pouze JScript.

  1. V nabídce Nástroje klikněte na Možnosti formuláře.

  2. V dialogovém okně Možnosti formuláře klepněte v seznamu Kategorie na položku Programování.

  3. V seznamu jazyk kódu šablony formuláře v části programovacího jazyka, klikněte na jazyk VBScript.

    Poznámky : 

    • Po nastavení skriptovacího jazyka a vytvoření jednoho nebo více ovladačů událostí pro šablonu formuláře není možné změnit skriptovací jazyk šablony formuláře.

    • Pokud máte instalovány nástroje sady Microsoft Visual Studio 2005 Tools for Applications, je výchozím jazykem Microsoft Visual Basic .NET. Tento postup lze dále používat ke změně skriptovacího jazyka na VBScript.

Začátek stránky

Zobrazení zprávy při každém výskytu události

Chcete-li zjistit, jaká obslužná rutina události se spustí jako reakce na akci nebo jinou událost, můžete přidat dočasný kód, který zobrazí okno se zprávou při každém spuštění obslužné rutiny události. Tento kód byste měli používat pouze k určení, kdy se obslužná rutina události spustí. Po přidání tohoto kódu použijte náhled pro zobrazení formuláře založeného na této šabloně formuláře nebo pro publikování šablony formuláře a následné vytvoření nové šablony formuláře. Některé obslužné rutiny události se spustí pouze tehdy, vytvoříte-li formulář po publikování šablony formuláře. Poté můžete provést akci, o které se domníváte, že by mohla vést ke spuštění obslužné rutiny události. Po spuštění obslužné rutiny události se zobrazí okno se zprávou.

Jakmile určíte, jaké akce nebo události spustí obslužnou rutinu události, odeberte dočasný kód a pokračujte v návrhu šablony formuláře. Jestliže tento kód neodeberete a šablonu formuláře budete publikovat, zobrazí se uživatelům po spuštění obslužné rutiny události okno se zprávou.

  1. Přidejte obslužnou rutinu události.

  2. Chcete-li přidat kód v jazyce JScript, zadejte XDocument.UI.Alert ("The událost název události právě proběhla"); Nahraďte název rutiny události. Třeba když naopak přidáte tento kód obslužné rutiny události OnValidate , zadali byste XDocument.UI.Alert ("The OnValidate obslužná právě proběhla");

  3. Chcete-li přidat kód v jazyce VBScript, když naopak přidáte tento kód obslužné rutiny události OnSaveRequest například zadejte XDocument.UI.Alert ("The událost název události právě proběhla") , zadejte XDocument.UI.Alert ("The OnSaveRequest obslužná právě proběhla")

  4. Tento kód otestujete klepnutím na příkaz Náhled v nabídce Soubor nebo stisknutím kombinace kláves CTRL+SHIFT+B a provedením uživatelské akce, která spustí událost. Jakmile dojde k události související s příslušným řádkem kódu, mělo by se zobrazit okno s vaší zprávou.

    Poznámka : Některé události mohou před provedením uživatelské akce, která spustí událost, vyžadovat publikování šablony formuláře a následné vytvoření formuláře založeného na této šabloně.

  5. Předtím, než budete publikovat šablonu formuláře a povolíte uživatelům vyplnění formulářů založených na této šabloně, odstraňte kód, který jste použili k zobrazení okna se zprávou.

Začátek stránky

Přidání skriptu, který se spustí, když uživatel uloží data ve formuláři

  1. V nabídce Nástroje klikněte na Možnosti formuláře.

  2. V seznamu Kategorie, umístěném v dialogovém okně Možnosti formuláře, klepněte na kartu Otevřít a uložit.

  3. Ve skupinovém rámečku Chování při uložení zaškrtněte políčko Uložit pomocí vlastního kódu a potom klepněte na tlačítko Upravit. Spustí se editor Microsoft Script Editor s kurzorem umístěným na obslužné rutině události 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 Sub
  4. Proveďte jeden nebo oba z následujících kroků:

    • Chcete-li přidat skript, který se spustí předtím, než aplikace InfoPath uloží formulář, nahraďte komentář Write the code to be run before saving here. vlastním kódem.

    • Chcete-li přidat skript, který se spustí poté, co aplikace InfoPath uloží formulář, nahraďte komentář Write the code to be run after saving here. vlastním kódem.

  5. Změny můžete otestovat kliknutím na Náhled na panelu nástrojů Standardní nebo stisknutím kláves CTRL+SHIFT+B.

    Poznámka : Jestliže se obslužná rutina události spustí pouze po vytvoření formuláře založeného na vaší šabloně formuláře, publikujte formulář klepnutím na příkaz Publikovat v nabídce Soubor a potom dokončete Průvodce publikováním. Poté co jste publikovali šablonu formuláře vytvořte formulář a proveďte akci, která spustí obslužnou rutinu události.

Začátek stránky

Přidání skriptu, který se spustí, když uživatel odešle data z formuláře

  1. V nabídce Nástroje klikněte na Možnosti odeslání.

  2. V dialogovém okně Možnosti odeslání zaškrtněte políčko Povolit uživatelům odeslat tento formulář.

  3. Nejprve klepněte na možnost Provést vlastní akci pomocí kódu a potom na příkaz Upravit kód. Spustí se editor Microsoft Script Editor s kurzorem umístěným na obslužné rutině události 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 Sub
  4. Nahraďte komentář If the submit operation is successful, set eventObj.ReturnStatus = true Write your code here vlastním kódem.

  5. Změny můžete otestovat kliknutím na Náhled na panelu nástrojů Standardní nebo stisknutím kláves CTRL+SHIFT+B.

Začátek stránky

Přidání skriptu, který se spustí, když uživatel klepne na tlačítko

  1. Přidejte nové tlačítko, které se zobrazí v šabloně formuláře, a potom na něj poklepejte.

    Poznámka : Přidáváte-li skript k existujícímu tlačítku, poklepejte místo toho na stávající tlačítko.

  2. Klepněte na kartu Obecné.

  3. Klepněte na tlačítko Upravit kód formuláře. Spustí se editor Microsoft Script Editor s kurzorem umístěným na obslužné rutině události OnClick pro toto tlačítko.

    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 Sub
  4. Nahraďte komentář Write your code here vlastním kódem.

  5. Změny můžete otestovat kliknutím na Náhled na panelu nástrojů Standardní nebo stisknutím kláves CTRL+SHIFT+B.

Začátek stránky

Přidání skriptu, který se spustí, když dojde ke sloučení existujících formulářů

  1. V nabídce Nástroje klikněte na Možnosti formuláře.

  2. V seznamu Kategorie dialogového okna Možnosti formuláře klepněte na položku Upřesnit.

  3. V části Sloučit formuláře zaškrtněte políčko Povolit slučování formulářů.

  4. Zaškrtněte políčko Sloučit pomocí vlastního kódu a potom klepněte na tlačítko Upravit. Spustí se editor Microsoft Script Editor s kurzorem umístěným na obslužné rutině události 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 Sub
  5. Nahraďte komentář Write the code that handles each form being merged here. vlastním kódem.

  6. Chcete-li otestovat kód pro tuto událost, publikujte šablonu formuláře, vytvořte několik formulářů založených na této šabloně formuláře a potom proveďte sloučení šablon formulářů.

    Poznámka : Odkazy na další informace týkající se publikování šablony formuláře naleznete v části Viz také.

Začátek stránky

Přidání skriptu aktualizujícího existující formuláře

Pokud jste aktualizovali šablonu formuláře publikovanou dříve a nyní chcete aktualizovat existující formuláře založené na této šabloně, můžete do aktualizované šablony formuláře přidat skript, který se spustí, pokud uživatel otevře jeden z existujících formulářů. Pokud uživatel otevře existující formulář, aplikace InfoPath zkontroluje číslo verze přidružené šablony formuláře v umístění pro publikování. Je-li číslo verze šablony formuláře v umístění pro publikování novější než číslo verze v existujícím formuláři (což znamená, že šablona formuláře byla aktualizována), aplikace InfoPath spustí kód v této události, který provede aktualizaci stávajícího formuláře.

  1. V nabídce Nástroje klikněte na Možnosti formuláře.

  2. V seznamu Kategorie dialogového okna Možnosti formuláře klepněte na položku Správa verzí.

  3. V seznamu Verze – upgrade klepněte na možnost Použít vlastní událost a poté na tlačítko Upravit. Spustí se editor Microsoft Script Editor s kurzorem umístěným na obslužné rutině události 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 Sub
  4. Nahraďte komentář Write your code here vlastním kódem.

  5. Chcete-li otestovat kód pro tuto událost, publikujte šablonu formuláře, vytvořte několik formulářů založených na této šabloně, změňte a publikujte aktualizovanou verzi šablony formuláře a potom otevřete existující formulář založený na starší verzi této šablony formuláře.

    Poznámka : Odkazy na další informace týkající se publikování šablony formuláře naleznete v části Viz také.

Začátek stránky

Přidání skriptu pro jiné události

Tento postup lze použít pro přidání následujících obslužných rutin události do šablony formuláře:

  • OnAfterChange

  • OnBeforeChange

  • OnContextChange

  • OnLoad

  • OnSwitchView

  • OnSign

  • OnValidate

  • V nabídce Nástroje přejděte na položku Programové a potom klepněte na událost, kterou chcete přidat do obslužné rutiny události. Spustí se editor Microsoft Script Editor s kurzorem umístěným na zvolené obslužné rutině události.

  • Nahraďte komentář Write your code here vlastním kódem.

Začátek stránky

Poznámka : Upozornění ke strojovému překladu: Tento článek přeložil počítačový systém bez zásahu člověka. Společnost Microsoft nabízí tyto strojové překlady proto, aby umožnila uživatelům, kteří nemluví anglicky, získat informace o produktech, službách a technologiích této společnosti. Protože je tento článek strojově přeložený, může obsahovat slovní, syntaktické nebo gramatické chyby.

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

Děkujeme vám za zpětnou vazbu.

Děkujeme vám za váš názor. Vypadá to, že bude užitečné, když vás spojíme s některým z našich agentů z podpory Office.

×