Skip to main content

Controls

PPJ supplies SAL-compatible controls for the supported UI targets, generally using the Sal prefix. The table below describes desktop base controls; web equivalents use Wisej.NET and can have different capabilities.

In the table below you can find the list of all the supported equivalent controls:

Control TypeClass name in the PPJ FrameworkBase .NET control
Data FieldSalDataFieldTextBox
Multiline FieldSalMultilineFieldTextBox
Combo BoxSalComboBoxComboBox
List BoxSalListBoxListBox
Check BoxSalCheckBoxCheckBox
Radio ButtonSalRadioButtonRadioButton
Option ButtonSalOptionButtonCheckBox
PushbuttonSalPushbuttonButton
Child TableSalTableWindowUserControl
ColumnSalTableColumnControl
PictureSalPicturePictureBox
Horizontal Scroll BarSalHorizontalScrollBarHScrollBar
Vertical Scroll BarSalVerticalScrollBarVScrollBar
Custom ControlSalCustomControlControl
ActiveX ControlSalActiveXAxHost
LineSalLineControl
FrameSalFrameControl
Group BoxSalGroupBoxGroupBox
Background TextSalBackgroundTextLabel
Form Window

SalFormWindow

SalRibbonBarForm

Form
MDI Window

SalMDIWindow

SalRibbonBarMDI

Form
Table WindowSalFormTableWindowForm
Dialog BoxSalDialogBoxForm

PPJ controls build on Windows Forms for desktop solutions and Wisej.NET for web solutions. Some wrap one or more underlying controls rather than directly subclassing the apparent equivalent.

All PPJ controls implement one or more special interfaces used by the PPJ Framework to recognize PPJ controls and correctly redirect specialized functionality.

The table below lists all the control's interfaces:

InterfaceDescription
ISalWindowAll PPJ controls implement this interface.
ISalControlOnly controls that can hold a value implement this interface. Like SalRadioButton, SalDataField, SalVerticalScrollBar. Controls that cannot hold a value, like SalGroupBox or SalLine, do not implement this interface. These controls can also be bound in a SQL statement as bind variables.
ISalEditControlEditable controls implement this interface.
ISalListControlAll list controls implement this interface. This is used to normalize also controls like VisOutlineListBox that should respond to SalList* functions as if they were list boxes.
ISalPictureControlControls that can show an image implement this interface.
ISalRadioButtonControls that behave as a radio button implement this interface. Typically these are SalRadioButton, SalCheckBox and SalOptionButton.
ISalAccessoryAccessories controls like SalFormToolBar, SalFormStatusBar and SalFormClientArea implement this interface.

SAL-compatible actions are exposed through WindowActions in newer releases; MessageActions is the legacy event model. This is where all events that are compatible to the original Team Developer messages are dispatched to as events.

Selecting APIs​

Prefer the PPJ API where SAL state, validation, or row context must be preserved. Use the underlying control API deliberately and test that it stays in sync with PPJ. Windows-specific controls such as AxHost are not browser controls. See Message Actions.