Forms
Ice Porter converts form templates into .NET classes, usually in the application's Forms directory. The class defines behavior; each constructed instance holds the state of an open form. A template name and a particular open instance are not interchangeable when several instances can exist.
Keep designer initialization separate from business logic. Build the required base classes before opening an inherited form in the designer, and inspect the constructor and InitializeComponent() if the designer cannot load it.
Accessories
Team Developer accessories are represented by components associated with the form. Their exact types and layout depend on the target and generator options.
ToolBar
The toolbar contains the controls originally placed in the Team Developer toolbar, usually docked at the top. Preserve their parentage when adjusting the layout: moving a button can affect tab order, context, and event handling. See ToolBar.
ClientArea
The client area hosts the form's main content, excluding accessories such as the toolbar and status bar. Use this area's bounds when positioning content. The outer form size includes borders and other non-client elements and is not a reliable measure of usable space.
StatusBar
The status bar displays status and progress information. When changing a form's base class, check whether the new base already supplies a status bar. Duplicate members can hide or conflict with it, particularly when adopting a Ribbon Bar.
MainMenu
Menu definitions and command handlers are translated into the target's menu components. Verify shortcuts, enabled and checked states, popup ownership, and inherited commands. A command that calls code using Sys.hWndForm may need a SalContext, just like a new button handler.
Named Menus
Global named menus are described in Global Items. Check names and ownership when reusing menus across forms. Resolve duplicate definitions explicitly; do not rely on source outline order to select the intended menu.
Child Table Window
A child table window is represented by SalTableWindow; a top-level table window uses SalFormTableWindow. Keep column definitions and handlers associated with the table that owns them. See TableWindow for the designer and underlying grids.
Form Lifecycle
Form template (class)
├─ instance A → controls/state for one open window
└─ instance B → separate controls/state for another window
A generated global template reference is a convenience for source code that names a form by its template. It is not a collection of all open instances. If the application can open two orders at once, pass or retain the intended live form instance for each operation instead of assuming a template reference identifies both.
Test opening, reopening, closing, validation, modal results, and multiple instances. Release resources and detach subscriptions when the owning form is disposed. A global template reference may be cleared on disposal, so code must not assume a form remains available after it closes.
For PPJ Web, also test two independent browser sessions. Server-side form state belongs to its session; desktop static references and assumptions about one user per process need review.