SyteLine WinStudio Standard Form Events Reference
This reference lists the WinStudio standard form events (Std*) you meet when personalizing or scripting Infor SyteLine 8, 9 and 10 forms. It shows when each fires, its default behaviour, the sequence it belongs to and whether it is a safe place for your own handler.
| Event | Level | When it fires | Default behaviour | Sequence | Safe for a custom handler |
|---|---|---|---|---|---|
StdFormPredisplay | Form | On open, after components load from data sources, before collections initialize and values display | None; notification only | Open | Yes: first event of a non-query form; good for hiding or setting components |
StdFormInitCompleted | Form | When all form initialization has completed | None; notification only | Open | Yes: last event of initialization, data is ready |
StdFormNext | Form | User clicks Next on the Actions menu | Makes the next object current | Next | Use with care: replacing it changes navigation |
StdFormGetBoundValues | Form | During most standard operations, before data is read from components | Retrieves current values of all bound components | Several | No in most cases: it fires in many operations |
StdFormPerformValidations | Form | User clicks Validate, and during Next, Previous, First, Last, New, Copy, Save and Save Current | Runs component validations and shows errors | Several | Yes: the recommended place for row-level validation |
StdFormValidationsCompleted | Form | When StdFormPerformValidations completes successfully | None; notification only | Several | Yes |
StdObjectNext | Collection | Before WinStudio moves to the next object in a collection | Moves to next object | Next | Use with care |
StdObjectSelectCurrent | Collection | During navigation, Refresh, Filter-in-Place, New, Copy and Delete of a new object | Makes the selected object current | Several | No: fires in many operations |
StdObjectSelectCurrentCompleted | Collection | When StdObjectSelectCurrent completes | None; notification only | Several | Yes, keep it light |
StdObjectNextCompleted | Collection | When StdObjectNext completes | None; notification only | Next | Yes |
StdFormLoadBoundValues | Form | After an object becomes current, before components load values | Bound components retrieve data from their sources | Several | Use with care: cannot cancel the default by returning failure |
StdFormLoadDerivedValues | Form | After an object becomes current, during most standard operations | Components with derived values retrieve data | Several | Use with care |
StdFormNextCompleted | Form | When StdFormNext completes | None; notification only | Next | Yes |
StdFormSave | Form | User clicks Save on the Actions menu | Sends changed data in all collections and subcollections to the IDO | Save | Not for row logic: fires once per save |
StdFormPutBoundValues | Form | Within save and exit sequences | Obsolete; kept for backward compatibility | Save | No: do not build on it |
StdObjectSave | Collection | Before changed data in a collection or subcollection is sent to the IDO | Saves that collection | Save | Only if you loop through modified rows yourself; fires once per collection |
StdObjectSaveCompleted | Collection | When StdObjectSave completes successfully | None; notification only | Save | Yes |
StdFormSaveCompleted | Form | When StdFormSave completes successfully | None; notification only | Save | Yes: good for post-save refresh or messages |
StdFormSaveCurrent | Form | User clicks Save Current on the Actions menu | Sends changed data in the current object to the IDO | Save Current | Not for row logic in other rows |
StdObjectSaveCurrent | Collection | Before changed data in the current object is sent to the IDO | Saves the current object | Save Current | Use with care |
StdObjectSaveCurrentCompleted | Collection | When StdObjectSaveCurrent completes | None; notification only | Save Current | Yes |
StdFormRefresh | Form | User clicks Refresh on the Actions menu | Reloads the collection from the IDO under the current filter | Refresh | Use with care |
StdObjectRefresh | Collection | Before a collection is retrieved from the IDO | Reloads that collection | Refresh | Use with care |
StdFormNew | Form | User clicks New on the Actions menu | Creates a new object with default values | New | Use with care |
StdObjectNew | Collection | Before a new object is created in the current collection | Creates and defaults the new object | New | Use with care |
StdObjectDelete | Collection | Before the current object is deleted | Removes a new object at once; marks a saved object for deletion on next Save | Delete | Use with care; deleting a marked object again unmarks it |
StdFormExitOk | Form | User clicks Close and Save Changes on the Form menu | Validates, saves changed data, then closes | Close | Use with care |
StdFormClose | Form | Before a form closes | None; notification only | Close | Yes; to close from code generate StdFormExitOk or StdFormExitCancel |
Descriptions and sequences follow the WinStudio standard events help for SyteLine / CSI 9.01. The full standard event list also includes navigation (First, Last, Previous), copy, filter-in-place, notes and component events not shown here.
Get a personalization reviewed
Send us the form name and the handlers you added and we will tell you which events are risky for your upgrade and where the logic would be safer.
Optional. The tool and every export work without this. No spam.
How to use it
In WinStudio Design Mode open the form, then Form, Event Handlers. Each standard event can carry your handlers, which run before, after or instead of the default implementation depending on how you set the handler and its response. Search this table for the operation the user performs (Save, Next, New) and pick the event in that sequence that matches your timing. Notification events, the ones whose default is 'None; notification only', are the safest places for custom code because nothing in WinStudio depends on them doing anything.
The Next sequence and the Save chain
Two sequences cover most personalization work. When the user clicks Next in a form without custom handlers, WinStudio fires 11 events in this order. When the user clicks Save in a basic form without subcollections, the chain is longer, and StdObjectSave runs once per collection and subcollection while StdFormSave runs once per save.
- Next: StdFormNext, StdFormGetBoundValues, StdFormPerformValidations, StdFormValidationsCompleted, StdObjectNext, StdObjectSelectCurrent, StdObjectSelectCurrentCompleted, StdObjectNextCompleted, StdFormLoadBoundValues, StdFormLoadDerivedValues, StdFormNextCompleted
- Save: StdFormGetBoundValues, StdFormPerformValidations, StdFormValidationsCompleted, StdFormSave, StdFormPutBoundValues, StdObjectSave, StdObjectSaveCompleted, StdFormSaveCompleted, StdFormLoadBoundValues, StdFormLoadDerivedValues
- Save Current inserts StdObjectSaveCurrent, StdFormLoadBoundValues and StdObjectSaveCurrentCompleted in place of the StdObjectSave pair
Worked example: validate a line before save
A site wants every customer order line to carry a promise date. Putting a check on StdFormSave is the classic mistake: it fires once per save, not per row. Put the handler on StdFormPerformValidations instead, which fires during Save, Save Current, New, Copy and navigation, and fail it with a message when the value is blank. If the rule must also hold for imports and integrations, it belongs in the application event system on IdoOnItemInsert and IdoOnItemUpdate, since form events never run for API calls.
Version differences and gotchas
In the web client StdFormPredisplay may fire after the form is already visible, although its position in the sequence is unchanged; do not rely on it to hide something before the user sees it. StdFormPutBoundValues is obsolete and only kept for backward compatibility. StdFormGetBoundValues, StdObjectSelectCurrent and the load events fire in many operations, so overriding their defaults has side effects well beyond the case you are fixing. Keep personalization in a site-level customization so upgrades can compare your changes with the new vendor form.
Frequently Asked Questions
What is a SyteLine form script?
A form script is code attached to a WinStudio form, usually run by an event handler of the script type on a standard or custom event. In SyteLine 9 and 10 these scripts are written against the WinStudio API. Many requirements can be met with event handler types that need no script, such as setting values or running a method.
Which event should I use for validation in SyteLine 10 personalization?
StdFormPerformValidations. It fires during Validate, Save, Save Current, New, Copy and navigation, so a rule placed there runs whenever the user leaves or saves a record. StdFormSave fires once per save operation and StdObjectSave once per collection, so neither is suited to per-row validation.
Why does my StdFormPredisplay handler run after the form appears?
That is documented behaviour in the web client: the event may fire after the form is displayed, even though its order relative to other events is unchanged. If you need something hidden from the start, set the component property in the form definition rather than relying on Predisplay.
Do form events fire when data is changed through the API?
No. WinStudio standard events run only in the client form. IDO REST calls, BOD imports and background processes bypass them. Rules that must apply everywhere should use the application event system on IDO events or IDO extension code.
If you want a private assistant on your own servers that answers questions about SyteLine forms, orders and items in plain English, we can set that up alongside your personalizations.
Related Tools
SyteLine Mongoose Framework Events Reference
Every framework event an application event handler can subscribe to in SyteLine 9/10 and CSI on-prem, with when it fires, what it passes and the traps to avoid.
Developer ToolsSyteLine Event Action Types Reference
The 26 action types on the SyteLine Event Actions form, with what each does, the parameters that matter and which ones make a handler wait.
Infor SyteLineSyteLine Form Personalization Checklist
A practical checklist for scoping, building, testing, documenting and upgrading SyteLine form personalizations without creating upgrade debt.
Infor SyteLineSyteLine Customer Order Tables Columns Reference
The key columns in SyteLine 9/10 customer order tables, what they mean, how they join and how to use them in custom reports.
More Developer Tools tools
See all- SyteLine IDO REST Request Generator
- SyteLine SQL Query Generator for Item, Job and Order Tables
- SyteLine SQL Blocking and Long Running Query Script Generator
- SyteLine Custom Table CREATE Script Generator
- SyteLine Event Action Parameter Functions Reference
- SyteLine Mongoose API Options Reference
- SyteLine SQL User-Defined Data Types Reference
- SyteLine IDO Extension Class Method Generator
- SyteLine IDO Custom Load Method Generator
Keep exploring
Free tools
- SyteLine Mongoose Framework Events ReferenceEvery framework event an application event handler can subscribe to in SyteLine 9/10 and CSI on-prem, with when it fires, what it passes and the traps to avoid.
- SyteLine Admin Forms and Utilities ReferenceThe forms and server utilities a SyteLine 9 or 10 on-prem admin uses for configuration, background tasks, events, replication, customization and security, with what each is for.
- SyteLine Form Script GeneratorFill in the form, IDO, properties and target variable to get a VB form script method for SyteLine 9/10 that loads related data and shows it on the form.
Guides
- SyteLine Mongoose: The Framework Behind SyteLine, Explained for DevelopersSyteLine Mongoose is the metadata framework behind Infor SyteLine and CloudSuite Industrial: IDOs, WinStudio forms, application events, and scripting explained.
- SyteLine Form Personalization: The Right Way to Change FormsLearn SyteLine form personalization the right way: WinStudio edit modes, personalization vs customization layers, upgrade-safe changes, and governance.
- SyteLine Form Event Handlers: Complete Developer GuideMaster SyteLine form event handlers including StdObjectLoaded, StdObjectSaved, and StdObjectDeleted. Build responsive forms in Infor CloudSuite Industrial.