Reagere på skjemahendelser
Du kan skrive skriptkode for å angi hvordan det skal reageres på ulike hendelser som kan forekomme i Microsoft Office InfoPath 2003 når en bruker fyller ut et skjema. I InfoPath har hendelser form av ulike typer hendelsesbehandling som opprettes når du arbeider med et skjema i utformingsmodus.
Hendelsesbehandling i InfoPath må opprettes i utformingsmodus fordi det i tillegg til skriptdeklarasjoner som opprettes i et skjemas primære skriptfil, også blir opprettet oppføringer i skjemadefinisjonsfilen (.xsf). Når du har opprettet en hendelsesbehandling, bør du ikke endre deklarasjonen i den primære skriptfilen.
Hvis du vil ha mer informasjon om opprettelse av hendelsesbehandling i InfoPath, se Om programmeringsmiljøet.
Oversikt over hendelsesobjektene
InfoPath-objektmodellen implementerer ni hendelsesobjekter. Hvilket hendelsesobjekt du bruker, bestemmes av hva slags hendelsesbehandling du bruker. Tabellen nedenfor inneholder en liste over InfoPath-hendelsesobjektene, hvilke typer hendelsesbehandling de er knyttet til, samt en funksjonsbeskrivelse.
Navn | Hendelsesbehandling | Beskrivelse |
---|---|---|
DataDOMEvent-objektet | OnBeforeChange, OnValidate, OnAfterChange | Returnerer en referanse til det underliggende XML-dokumentet for et skjema, returstatus og andre egenskaper som inneholder informasjon om XML-noden, ved endring av XML DOM (Document Object Model). Inneholder også en metode for å opprette feil. |
DocActionEvent-objektet | OnClick | Returnerer en referanse til det underliggende XML-dokumentet for et skjema, returstatus og kilde-XML-node når en knapp klikkes i skjemaområdet. |
DocContextChangeEvent-objektet | OnContextChange | Returnerer informasjon om XML-Document Object Model (DOM)-noden som er den gjeldende konteksten til skjemaets underliggende XML-dokument. |
DocEvent-objektet | OnSwitchView, OnAfterImport | Returnerer en referanse til det underliggende XML-dokumentet for et skjema ved bytte av visning eller ved skjemafletting. |
DocReturnEvent-objektet | OnLoad, OnSubmitRequest | Returnerer en referanse til det underliggende XML-dokumentet for et skjema og returstatus ved innlasting eller sending av et skjema. |
MergeEvent-objektet | OnMergeRequest | Returner egenskaper og metoder som kan brukes under en OnMergeRequest-hendelse til å arbeide programmatisk med et skjemas underliggende XML-dokument, og til å fastsette egenskaper for sammenslåing, for eksempel antall filer som skal slås sammen. |
SaveEvent-objektet | OnSaveRequest | Returnerer egenskaper og metoder som kan brukes under en lagreoperasjon fra OnSaveRequest-hendelsesbehandlingen til å arbeide programmatisk med et skjemas underliggende XML-dokument, fastsette lagringsegenskaper og utføre lagreoperasjonen. |
SignEvent-objektet | OnSign | Brukes til å legg ytterligere data til den digitale signaturen. |
VersionUpgradeEvent-objektet | OnVersionUpgrade | Returnerer en referanse til det underliggende XML-dokumentet for et skjema, returstatus og dokumentets og løsningens versjonsnummer ved versjonsoppgradering. |
Når du oppretter en hendelsesbehandling, oppretter InfoPath deklarasjonen for hendelsesbehandlingen i skjemaets primære skriptfil. I denne deklarasjonen bruker InfoPath eventObj som navn på parameteren som overføres til hendelsesbehandlingen. Denne parameteren inneholder hendelsesobjektet som er knyttet til hendelsesbehandlingen. Hvis du for eksempel oppretter en OnLoad-hendelse i utformingsmodus, oppretter InfoPath hendelsesbehandlingen OnLoad i skriptfilen og åpner Microsoft Script Editor (MSE) slik at du kan legge til skriptkoden i følgende deklarasjon for hendelsesbehandling:
//=======
// 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::OnLoad(eventObj)
{
// Write your code here.
}
Når du skriver skriptkode for en hendelsesbehandling, kan du bruke egenskapene og metodene som implementeres av hendelsesobjektet som overføres via eventObj-parameteren. I følgende OnBeforeChange-hendelsesbehandling brukes for eksempel NewValue-egenskapen for DataDOMEvent-hendelsesobjektet til å kontrollere verdien til feltet som nettopp ble endret. Hvis det er tomt, brukes ReturnMessage-egenskapen for DataDOMEvent-hendelsesobjektet til å vise en feilmelding for brukeren i en dialogboks, og ReturnStatus-egenskapen settes til False for å angi at endringene som brukeren gjorde, ikke skal godtas.
function msoxd__myField_attr::OnBeforeChange(eventObj)
{
// Determine whether there is a new value.
if (eventObj.NewValue == "")
{
// The value is blank, so display an error message and roll back the changes.
eventObj.ReturnMessage = "You must supply a value for this field.";
eventObj.ReturnStatus = false;
return;
}
}
Obs! Hver av InfoPath-hendelsesobjektene implementerer ulike egenskaper og metoder. Hvis du vil ha mer informasjon om et bestemt hendelsesobjekt, klikk det aktuelle objektet i tabellen ovenfor.