# Controls

All controls from Team Developer are replicated in the PPJ Framework with the same name but with the "Sal" prefix.&#x20;

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

| Control Type          | Class name in the PPJ Framework             | Base .NET control |
| --------------------- | ------------------------------------------- | ----------------- |
| Data Field            | SalDataField                                | TextBox           |
| Multiline Field       | SalMultilineField                           | TextBox           |
| Combo Box             | SalComboBox                                 | ComboBox          |
| List Box              | SalListBox                                  | ListBox           |
| Check Box             | SalCheckBox                                 | CheckBox          |
| Radio Button          | SalRadioButton                              | RadioButton       |
| Option Button         | SalOptionButton                             | CheckBox          |
| Pushbutton            | SalPushbutton                               | Button            |
| Child Table           | SalTableWindow                              | UserControl       |
| Column                | SalTableColumn                              | Control           |
| Picture               | SalPicture                                  | PictureBox        |
| Horizontal Scroll Bar | SalHorizontalScrollBar                      | HScrollBar        |
| Vertical Scroll Bar   | SalVerticalScrollBar                        | VScrollBar        |
| Custom Control        | SalCustomControl                            | Control           |
| ActiveX Control       | SalActiveX                                  | AxHost            |
| Line                  | SalLine                                     | Control           |
| Frame                 | SalFrame                                    | Control           |
| Group Box             | SalGroupBox                                 | GroupBox          |
| Background Text       | SalBackgroundText                           | Label             |
| Form Window           | <p>SalFormWindow</p><p>SalRibbonBarForm</p> | Form              |
| MDI Window            | <p>SalMDIWindow</p><p>SalRibbonBarMDI</p>   | Form              |
| Table Window          | SalFormTableWindow                          | Form              |
| Dialog Box            | SalDialogBox                                | Form              |

All the controls in the PPJ Framework are directly derived from the equivalent control in .NET: WinForms for desktop solutions, and Wisej for web solutions.

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:

| Interface          | Description                                                                                                                                                                                                                                                                                    |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ISalWindow         | All PPJ controls implement this interface.                                                                                                                                                                                                                                                     |
| ISalControl        | Only 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. |
| ISalEditControl    | Editable controls implement this interface.                                                                                                                                                                                                                                                    |
| ISalListControl    | All 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.                                                                                                              |
| ISalPictureControl | Controls that can show an image implement this interface.                                                                                                                                                                                                                                      |
| ISalRadioButton    | Controls that behave as a radio button implement this interface. Typically these are SalRadioButton, SalCheckBox and SalOptionButton.                                                                                                                                                          |
| ISalAccessory      | Accessories controls like SalFormToolBar, SalFormStatusBar and SalFormClientArea implement this interface.                                                                                                                                                                                     |

All the controls implementing ISalWindow expose a new event MessageActions. This is where all events that are compatible to the original  Team Developer messages are dispatched to as events.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.iceteagroup.com/general/framework/controls.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
