# Creating Panel Controls

Check Box and Tri-State Control |

The Check Box control is a button type that allows users to toggle between states: On to select it, Off to deselect it, and an optional third state (Tri-State control). Unlike radio buttons, which are mutually exclusive, multiple Check Boxes can be selected at the same time.

Check Boxes include a text label that can be positioned to the right or left. They can also have graphics applied to them. If the visual mode for the Check Box is set to 2D, the default 'X' will apply.

A third control state can be added by enabling the Tri-State and Value in '3rd' State properties.

Example:

A filled indicator may be applied as the third state for a Tri-State control:

> Unchecked |
> Checked |
> Filled |

A predefined Data Class can also be applied to a Check Box control.

## Creating a Check Box

To draw a new Check Box control on your panel, select the Check Box control tool from the Controls Toolbar. Hold down the left-mouse button and drag the mouse to create a rectangle to the desired size. Release the mouse button to create the new object.

A Check Box control can also be created from a data class or a data dictionary element. See Data Class Controls and Data Element Controls.

For making other adjustments, see Modifying Objects.

To define the specific attributes for the new control, see Check Box/Tri-State Properties.

For information and examples on the use of dynamic data classes and dynamic control properties, see Dynamic Control Properties.

## Check Box/Tri-State Properties

When creating or editing a Check Box control, the Check Box Properties dialogue (pictured below using the Folder Style version of the NOMADS designer) is displayed:

Dynamic Control Properties

PxPlus 2018 introduces the capability to create dynamic control properties for Check Box controls when combined with Data Classes. Dynamic data classes are created by selecting the Dynamic check box in Data Class Definitions maintenance. At run time, dynamic control properties are evaluated and automatically populated with values based on what is defined in the data class.

When a data class is entered for the Check Box control, information from the data class is loaded into the Check Box properties. If the data class is dynamic, the dynamic control properties are automatically set to Dynamic initially and assigned a %NOMADS'class' variable that corresponds to a data class field (i.e. %NOMADS'class'length).

Check Box control properties designated as dynamic can be manually switched to dynamic or non-dynamic. A Check Box control can have a combination of dynamic and non-dynamic control properties only when a data class is entered.

See Dynamic Control Properties for information and examples.

#### Note:
Dynamic control properties are supported in NOMADS and iNomads environments.

Check Box Properties

This dialogue is divided into the following tabbed panels for viewing and/or changing Check Box properties: Display, Font/Color, Attributes, Values, Logic and User Aid.

Name | Unique name of the Check Box control (NOMADS provides a default). Naming conventions for variables apply. Click the Browse Library button to copy parameters from an existing object (via the Library Browse dialogue). #### Note: When a new control name is entered, it will be checked against the Reserved Words list to determine if it is restricted for use as a NOMADS control name. If it is found, a warning message will display. (User Reserved Words Maintenance was added in PxPlus 2020.)
Class | Enter a Data Class to load the information from the data class definition into the control's properties. If using Property Sheets, click the Data Class button and enter a data class in the Data Class Options dialogue. (The Data Class Options dialogue was added in PxPlus 2018.) To enter a data class, use any of the following methods: Click the Query button (binoculars) to select from a list of predefined data classes (if any) for the current control type. Type the name of an existing data class. Only data classes for the current control type are allowed. Create a data class on the fly. Enter a new Class name and respond Yes to the displayed message, which launches Data Class Definitions. If the data class is changed, a message will display prior to overwriting any information. This works similar to using the Reapply Data Class button. If the data class assigned to the control is deleted in Data Class Definitions, the text ** Class not on File ** will display (will be a message box if using Property Sheets). (Dynamic data classes and properties were added in PxPlus 2018.)
(Data Class Maintenance) | Click this button to launch Data Class Definitions for creating or editing a data class. If using Property Sheets, click the Data Class button, then click the Data Class Maintenance button in the Data Class Options dialogue. (The Data Class Options dialogue was added in PxPlus 2018.) (The Data Class Maintenance button was added in PxPlus 2018.)
(Reapply Data Class) | (Available when a data Class is entered) Click this button to update control properties with current information from the selected data class. A message displays before any control properties are overwritten. If using Property Sheets, click the Data Class button and select the Reapply Class check box in the Data Class Options dialogue. (The Data Class Options dialogue was added in PxPlus 2018.) #### Important Note: Care should be taken when using the Reapply Data Class button or changing the data Class entered for the control, as this will overwrite any existing values. If the Dynamic (from Data Class) check box was manually changed on the Values and/or User Aid tabs, clicking the Reapply Data Class button will reselect this check box if the data class entered for the control is dynamic or deselect it if not dynamic. (The Reapply Data Class button was added in PxPlus 2018.)
Dynamic Class | (Display Only) Indicates whether the selected data Class is Dynamic. See Dynamic Control Properties. If using Property Sheets, click the Data Class button to display the Dynamic Class check box in the Data Class Options dialogue. (The Data Class Options dialogue was added in PxPlus 2018.) (The Dynamic Class check box was added in PxPlus 2018.)
Preview | Displays how the visible properties of the control will appear at run time.
Display ( * indicates a Dynamic property)
*Text | Sets the button text. Click the drop-down arrow for a list of selections: Fixed, Expression, Message Library Reference or Dynamic. (Dynamic is available only when a data Class is entered.) If a dynamic data class is entered, this property will be automatically set to Dynamic and assigned a %NOMADS'class' variable, which is locked. #### Note: Expressions that come from a data class must be global variables. If the data class is not dynamic, this property can be manually set to Dynamic. See Dynamic Control Properties. (Dynamic data classes and properties were added in PxPlus 2018.)
Bitmaps | Sets the button bitmap. Click the Bitmap Library button to select a bitmap from the Bitmaps dialogue for the state, if applicable.
*Off State | Bitmap shown when button is in the "Off" (normal) state.
*On State | Bitmap shown when button is in the "On" state.
*3rd State | (Available when Tri-State Check Box attribute is selected) Bitmap shown when button is in an optional third state. See Tri-State Check Box.
Alignment | Sets the bitmap alignment. Click the drop-down arrow for a list of selections: Left, Right, Top, Bottom, Center/Scale. Selecting Center/Scale alignment also forces the selection of the Scale bitmap option.
Scale bitmap | Scales the bitmap to fit the button size. Any button text is forced to be aligned Center/Scale. #### Note: Top, Bottom and Center/Scale alignments and the Scale bitmap option only work in 4D mode.
If a dynamic data class is entered, these properties will be set as dynamic and locked. See Dynamic Control Properties. (Dynamic data classes and properties were added in PxPlus 2018.) (The Center/Scale alignment and Scale bitmap options were added in PxPlus 2019 Update 1.)
*Image Options | (Available when Bitmaps for Off/On/3rd States are selected) Sets advanced image options for the bitmap. Click the Additional Image Options button to the right of the Image Options multi-line to invoke the Image Options dialogue. This dialogue consists of the following:
Options |
Image Transparency | Bitmap transparency option. Click the drop-down arrow for a list of selections: None, Pixel sets transparency or 'Light Gray' is transparent.
Flip Image | Flips the image. Click the drop-down arrow for a list of selections: None, Flip horizontally (left/right), Flip vertically (up/down) or Flip horizontally and vertically.
Rotation Angle | Counter clockwise rotation angle at which to display the image. Valid entries are 0 to 359.
Invert Image | Displays the image with inverted colors.
Gray Scale Image | Converts the image to gray scale.
Cropping (Pixels from Top/Left of Image (0,0)) | Define the cropped image in terms of Left, Right, Top and Bottom where these values are the number of pixels from the top left corner (0,0) of the image.
#### Note: Image Transparency and Cropping are not supported in iNomads. (The Image Options dialogue was added in PxPlus 2019.)
Position |
Column | Starting column for the top left corner of the control - numeric expression. Format mask is ##0.00. Valid entries are 0 to 620.
Line | Starting line for the top left corner of the control - numeric expression. Format mask is ##0.00. Valid entries are 0 to 255.
(Support for increased Column and Line maximums was added in PxPlus 2021.)
Size |
Width | Width of the control in number of columns - numeric expression. Format mask is ##0.00. Valid entries are 0 to 620.
Height | Height of the control in number of lines - numeric expression. Format mask is ##0.00. Valid entries are 0 to 255.
#### Note: If a data class is entered and the Check Box Width value in the data class is subsequently changed, the size of the Check Box will not change when the Reapply Data Class button is selected. (This functionality was added in PxPlus 2018.) (Support for increased Width and Height maximums was added in PxPlus 2021.)
Common Attributes | Optional attributes for Tab Stop, Disabled, Button on Right, Tri-State and Hidden. See Attributes.
Font/Color ( * indicates a Dynamic property)
Font Specification |
Font Size | Click the drop-down arrow for a list of selections.
Color |
Foreground Background | Click the Query button to access Color Selections. Valid formats for color selections include predefined system colors (e.g. Light Red), Custom (RGB codes), HTML Hex Color Codes, User Defined colors (e.g. Color17) and string Expressions.
(The Color Selections Query button and dialog were added in PxPlus 2020.) #### Note: If a background color has been assigned to a transparent button, the background color will be ignored. (Transparency precedence for buttons with background colors was added in PxPlus 2019 Update 1.)
Attributes | Optional attributes for Bold, Italics, etc. See Attributes.
Alignment | Sets the text alignment on the button. Selections of Left Justify, Center and Right Justify are available when defining a Check Box with both text and bitmap(s). See Display. When defining a Check Box with text only, this defaults to Center, and the other two selections are not available.
*Visual Class | Assign a visual class to the control. Can be Fixed, Expression or Dynamic. (Dynamic is available only when a data Class is entered.) Click the Visual Class Maintenance button to launch the Visual Classes Maintenance utility for creating or editing visual classes. To assign visual classes to controls at the library level, see Visual Class Assignment. If a dynamic data class is entered, this property will be automatically set to Dynamic and assigned a %NOMADS'class' variable, which is locked. #### Note: Expressions that come from a data class must be global variables. If the data class is not dynamic, this property can be manually set to Dynamic. See Dynamic Control Properties. #### Note: Visual class names that begin with an "*" (asterisk) are pre-defined visual classes used by PVX Plus and may be subject to change without notice. (The Dynamic drop box option was added in PxPlus 2018.) (The Visual Class Maintenance button was added in PxPlus 2019.)
*iNomads Class | Assign an iNomads class to the control. Can be Fixed, Expression or Dynamic. (Dynamic is available only when a data Class is entered.) If a dynamic data class is entered, this property will be automatically set to Dynamic and assigned a %NOMADS'class' variable, which is locked. #### Note: Expressions that come from a data class must be global variables. If the data class is not dynamic, this property can be manually set to Dynamic. See Dynamic Control Properties. The iNomads class contains class attribute references used when defining the control in the HTML code generated in iNomads. An iNomads class reference must start with an alpha character (A-Z or a-z), followed by any combination of A-Z, a-z, 0-9, underscore or dash. Multiple references may be entered, separated by a space. For a list of pre-defined iNomads classes, see iNomads Classes. (The Dynamic drop box option was added in PxPlus 2018.)
Attributes ( * indicates a Dynamic property)
Attributes |
Tab Stop | Adds the control to the tab order list. Allows use of the Tab key for moving to the control.
Auto Tab Skip | Control is skipped when tabbing forward but is still accessible via Shift - Tab or the mouse.
Initially Disabled | Control region is grayed out and is not accessible to the user for input. The control is accessible programmatically.
Initially Hidden | Control is not displayed but is accessible programmatically.
Button to the Right of Text | Bitmap will display after the text. This is only applicable if the Check Box does not contain a bitmap. If Text (on Display tab) is set to Dynamic, this attribute will be locked.
Numeric | Returns a value for the control in a numeric variable. See Numeric (on Values tab).
Signal Only (No Focus) | PxPlus generates a CTL value but does not shift focus to the button automatically (Default) unless focus is explicitly passed.
Hover Cursor | Controls the type of cursor to display whenever the mouse moves over the control. Options are: Default, Arrow, Wait, Insert, Movement arrows, Sizing arrow, Hand, Crossed hand, Rabbit in hat, Happy face, Sad face, Up/Down arrow, Left/Right arrow and Not allowed.
Tri-State Check Box | Creates a Check Box that includes a third state. User will be able to toggle between three states: On, Off and an optional Third State. See Value in '3rd' State (on Values tab).
Enable Scrolling | Allows the control to scroll in a resizable/scrollable dialogue box. See Panel Resizing.
Flat Button | Button shows no raised outline unless the mouse is over the button or the button is pressed.
Bitmap Button | Button has a bitmap whose width is divided into four images. Use this to custom design buttons with any color, style or shape by controlling the image that appears.
Sticky Button | 'Sticky' functionality, which means that the button remains in the "pressed" position until the next selection.
Hover Color | Text on the button is highlighted whenever the mouse is over the button area. The default color is controlled by the 'HC' system parameter that defaults to 'Light Blue'.
Flat - No Border | Button has no border and shows no raised outline unless the button is pressed.
Transparent | Button is transparent; i.e. the window contents behind the button show through. This style can be used to place buttons onto bitmaps. #### Note: Setting a background color is not compatible with transparency. If a background color is specified, it will be ignored.
Drop-List Button | Extra button with an arrow bitmap is attached to the right of the main button. When the arrow bitmap button is clicked, the associated popup menu is displayed.
Ignore Change Flag | Select this check box when you do not want the NOMADS CHANGE_FLG variable to be updated when the control value is changed. (The Ignore Change Flag property was added in PxPlus 2017.)
Check Box Corner Radius | Sets the corner radius for a check box that looks like a check box (no bitmap added), not for a check box that looks like a normal button. Works only in 4D mode. Possible values are Null (blank), Round, Square or a value from 0 to 255 inclusive. See CBCornerRadius$ property. Example: Check Box Corner Radius set to Round: Check Box Corner Radius set to Square: Check Box Corner Radius set to a value of 7: #### Note: Corner rounding is limited based on the control type and/or the control size. (The Check Box Corner Radius property was added in PxPlus 2026.)
Button Corner Radius | Sets the corner radius for a check box only when it is drawn as a button, which occurs when a bitmap is added. Works only in 4D mode. Possible values are Null (blank), Round, Square or a value from 0 to 255 inclusive. See CornerRadius$ property. Example: Button Corner Radius set to Round: Button Corner Radius set to Square: Button Corner Radius set to a value of 10: #### Note: Corner rounding is limited based on the control type and/or the control size. (The Button Corner Radius property was added in PxPlus 2026.)
*User-Defined Tag Field | For controls, data/tag field that can be used to pass information on such things as formatting, error messages or validation rules. Can be Fixed, Expression or Dynamic. (Dynamic is available only when a data Class is entered.) Field contents are placed in a variable using the control name with a .TAG$ extension. If a dynamic data class is entered, this property will be automatically set to Dynamic and assigned a %NOMADS'class' variable, which is locked. #### Note: Expressions that come from a data class must be global variables. If the data class is not dynamic, this property can be manually set to Dynamic. See Dynamic Control Properties. (The Dynamic drop box option was added in PxPlus 2018.)
Values ( * indicates a Dynamic property)
Dynamic (from Data Class) | (Available when a data Class is entered) If selected, identifies the Default Setting and Values properties as dynamic. If a dynamic data class is entered, this check box is automatically selected. If the data class is not dynamic, this check box can be manually selected. #### Note: If the Dynamic (from Data Class) check box was manually changed on the Values and/or User Aid tabs, clicking the Reapply Data Class button will reselect this check box if the data class entered for the control is dynamic or deselect it if not dynamic. (Dynamic data classes and properties were added in PxPlus 2018.)
Numeric | Returns a value for the control in a numeric variable. If the Dynamic (from Data Class) check box is selected, the Numeric property will be locked. (Dynamic data classes and properties were added in PxPlus 2018.)
*Default Setting | Initial value to be applied when the Check Box is drawn. If the Dynamic (from Data Class) check box is selected, the Default Setting and Values properties will all be set as dynamic and locked (cannot be set individually). See Dynamic Control Properties. (Dynamic data classes and properties were added in PxPlus 2018.)
*Values |
Value in 'Off' State | Value to return when the Check Box is turned Off.Can be a numeric value or a single character translation value.
Value in 'On' State | Value to return when the Check Box is turned On. Value can be a numeric value or a single character translation value.
Tri-State Check Box | Creates a Check Box that includes a third state. User will be able to toggle between three states: On, Off and an optional Third State. See Value in '3rd' State below. If the Dynamic (from Data Class) check box is selected, the Tri-State Check Box property will be locked.
Value in '3rd' State | (Available when Tri-State Check Box is selected) Value to return for the Third State. Can be a numeric or a single character translation value.
If the Dynamic (from Data Class) check box is selected, the Default Setting and Values properties will all be set as dynamic and locked (cannot be set individually). See Dynamic Control Properties. (Dynamic data classes and properties were added in PxPlus 2018.)
Logic
Default Program | Displays the name of the Default Program used in the Panel Header definition. (The Default Program was added for display in PxPlus 2019.)
Post Create | Logic to be processed after the control is drawn. Click the drop-down arrow for a list of selections. See Events Logic. Click the Program Logic button beside the Perform or Call action to launch the default program editor, which is typically the *IT - Integrated Toolkit. To make Ed+ the default program editor, change the setting for the %NOMADS'Program_Editor property to Ed+. (The ability to set Ed+ as the default program editor was added in PxPlus 2023.)
When Receiving Focus | Logic to execute when the control receives focus. Click the drop-down arrow for a list of selections. See Events Logic. Click the Program Logic button beside the Perform or Call action to launch the default program editor, which is typically the *IT - Integrated Toolkit. To make Ed+ the default program editor, change the setting for the %NOMADS'Program_Editor property to Ed+. (The ability to set Ed+ as the default program editor was added in PxPlus 2023.)
When Button Pressed | Logic to be executed when focus leaves the control or the state of the control has changed. Click the drop-down arrow for a list of selections. See Events Logic. Click the Program Logic button beside the Perform or Call action to launch the default program editor, which is typically the *IT - Integrated Toolkit. To make Ed+ the default program editor, change the setting for the %NOMADS'Program_Editor property to Ed+. (The ability to set Ed+ as the default program editor was added in PxPlus 2023.)
User Aid ( * indicates a Dynamic property)
Dynamic (from Data Class) | (Available when a data Class is entered) If selected, identifies which Help Reference properties are dynamic. If a dynamic data class is entered, this check box is automatically selected. If the data class is not dynamic, this check box can be manually selected. #### Note: If the Dynamic (from Data Class) check box was manually changed on the Values and/or User Aid tabs, clicking the Reapply Data Class button will reselect this check box if the data class entered for the control is dynamic or deselect it if not dynamic. (Dynamic data classes and properties were added in PxPlus 2018.)
*Help Reference | Help text to be invoked at run time by pressing Shift - F1 while focus is on a control.
Type | Select from External or Internal help types:
External | (Default) Standard Windows help system consisting of a help File Name (.html, .hlp, .doc, etc.) and an optional Keyword or Reference number (Fixed value or string Expression).
Internal | Application supplied message text (Fixed value, string Expression or Message Library Reference).
File Name | Name of the help file.
Keyword | Indicates that the text in the adjacent field is the index entry for the topic in the indicated help file.
Reference | Indicates that the adjacent field contains the reference number for a specific topic in the context sensitive help.
Popup | Select this check box to display the help topic as a popup rather than as an independent window.
Test | Tests the current help settings.
If the Dynamic (from Data Class) check box is selected, the Help Reference properties will be dynamic and locked. See Dynamic Control Properties. (Dynamic data classes and properties were added in PxPlus 2018.)
*Floating Tip | Mouse pointer message for the control. Can be a Fixed value, string Expression, Message Library Reference or Dynamic. (Dynamic is available only when a data Class is entered.) If a dynamic data class is entered, this property will be automatically set to Dynamic and assigned a %NOMADS'class' variable, which is locked. #### Note: Expressions that come from a data class must be global variables. If the data class is not dynamic, this property can be manually set to Dynamic. See Dynamic Control Properties. You can customize the floating tip by adding a tip title, descriptive tip text and a hyperlink. These features enhance the visual display and functionality of the tip by providing users with much needed information at their fingertips. You can define either a Standard tip or an HTML tip that provides a simplified HTML Editor for customizing the tip text. To do this, click the button to the right of the Floating Tip multi-line input to invoke the Define Info Tip dialogue. See Defining an Info Tip. #### Note: The Floating Tip drop box and multi-line input cannot be changed once an HTML tip has been defined. NOMADS Wiki Help The floating tip text can be used when displaying the Wiki Help. Info tips, however, are not supported and will be ignored. (Support for customizing Floating Tips was added in PxPlus 2016.) (Dynamic data classes and properties were added in PxPlus 2018.) (Support for the use of Floating Tip text in the Wiki Help was added in PxPlus 2023.)
*Message Bar | Text to be displayed in the panel's status bar when focus is on the control. Can be a Fixed value, string Expression, Message Library Reference or Dynamic. (Dynamic is available only when a data Class is entered.) If a dynamic data class is entered, this property will be automatically set to Dynamic and assigned a %NOMADS'class' variable, which is locked. #### Note: Expressions that come from a data class must be global variables. If the data class is not dynamic, this property can be manually set to Dynamic. See Dynamic Control Properties. (Dynamic data classes and properties were added in PxPlus 2018.)
Security | Security restrictions. See Restricting Access for information on Object Security Definition.
Groups | Assign the control to a group. See Group Assignment.
Popup Menu | Associate a popup menu that will appear when you right-click the mouse over the selected control. See Popup Menu.
Notes | Add notes/comments for the control. Maximum 1024 characters. These notes also display in the Wiki Help documentation for the panel. See NOMADS Wiki Help. (The Notes button was added in PxPlus 2023.)

## See Also

CHECK_BOX Properties
CHECK_BOX Directive
TRISTATE_BOX Directive