Master the display controls toolbox. Add buttons, gauges, charts, and other interactive elements to create rich operator interfaces.
Overview
Master the display controls toolbox. Add buttons, gauges, charts, and other interactive elements to create rich operator interfaces.
What You'll Learn
This Tutorial Teaches you to:
- Use basic controls
- Configure control properties
- Bind controls to tags
- Create control interactions
Prerequisites:
Table of Contents |
---|
maxLevel | 2 |
---|
minLevel | 2 |
---|
indent | 10px |
---|
exclude | Tutorial |
---|
style | none |
---|
|
- Display created
- Tags configured
Step 1: Basic Input ControlsOpen display in Draw editor.
Button:
- Drag Button from toolbox
- Double Click the button and go to Settings
- Properties:
- Label Text: "Start Motor"
- Width: 120Auto
- Height: 40
- Click event:
csharp
@Tag.Motor1_Start = true;
Toggle Switch:
- Click Dynamics and check Actions:
- In Actions, choose ToggleValue
- In Object, type
@Tag.Equipment/MotorRunning
Bind to: @Tag.Motor1_Enable
On Text: "Enabled"Off Text: "Disabled"
Numeric Input:
Control: - Drag NumericTextBox from toolbox
- Double Click the button and go to Settings
- Bind LinkedValue to:
@Tag.Setpoint
- MinMinValue: 0, MaxMaxValue: 100
- Format: "0.0"
Step 2: Display Controls
2. Text Components
Text Display:
Control: - Drag TextBlock from toolbox
- Double Click the button and go to Settings
- Text :
@Tag.Temperature.ToString("F1") + " °C"
- Font Size: 24
- Update: On tag change
Progress Bar:
- with {Tags}: {
Tag.TankFarm.Tank1/Temperature} °C
- On the bottom right menu set Font to 24
ProgressBar:
- Drag ProgressBar from toolbox
- Double Click the button and go to Settings
- Bind LinkedValue toBind Value:
@Tag.Tank_Level
- Maximum: 100
- Color: Blue → Yellow → Red (by ranges)
Digital Indicator:
- On the bottom right menu set Font color to Red
Digital Gauge:
- Drag DigitalGauge from toolbox
- Double Click the button and go to Settings
- Bind LinkedValue to
- Control: CheckBox (read-only)
- Bind:
@Tag.Pump_Running
Custom text: "Running
" / "Stopped"
Step
3
: . Gauge
ControlsComponents
Circular Gauge:
- Add CircularGauge
- Double Click the button and go to Settings
- Bind LinkedValue toConfigure:Value:
@Tag.Pressure
- MinMinimum Value: 0, Max
- Maximum Value: 150
- Major Ticks : 10
- Ranges:
- Green: 0-100
- Yellow: 100-120
- Red: 120-150
Linear Gauge:
- Quantity: 11 (means 0 to 100)
Linear Gauge:
- Add LinearGauge
- Double Click the button and go to Settings
- Gauge Orientation: Vertical
- Height: 300
- Bind LinkedValue to:
@Tag.Tank_Level
- Show scale and value
Step 4: Chart Controls
4. Chart Components
Trend Chart:
- Add TrendChart
- Double Click the button and go to Settings
- Configure pens:
- Pen1: Temperature TankFarm/Tank1/Temp (Blue)
- Pen2: TankFarm/Tank1/Pressure (Red)
- Time spanAuto: 1 hour
- Enable zoom/pan
- true
Pie Bar Chart:
- Data: Production by shift
- Categories: Shift 1, 2, 3
- Values: Bind to tags
- Update: Every minute
Pie Chart:
- Data source: Query result
- Value field: "Quantity"
- Label field: "Product"
Step 5: Data Grid
- Add DataGrid
- Configure columns:
| Batch ID | Product | Quantity | Status |
- Data source options:
- Tag array
- Query result
- Script data table
Step 6: Container Controls
Tab Control:
- Add TabControl
- Create tabs:
- Overview
- Details
- Trends
- Alarms
- Add content to each tab
Group Box:
- Title: "Motor Controls"
- Border: Solid
- Add related controls inside
Image Display:
- Add Image control
- Dynamic source:
csharp
@Tag.AlarmActive ? "alarm.png" : "normal.png"
Web Browser:
- URL: Company dashboard
- Or display PDF reports
Step 8: Advanced Interactions
ComboBox with Database:
csharp
// Populate from query
ComboBox1.ItemsSource = @Dataset.Query.Products.ResultData;
ComboBox1.DisplayMember = "ProductName";
ComboBox1.ValueMember = "ProductID";
Conditional Visibility:
csharp
// Show/hide based on user level
Panel1.Visibility = @Client.UserGroup == "Supervisor"
? Visibility.Visible
: Visibility.Collapsed;
- Add PieChart
- Double Click the button and go to Settings
- ChartType: Percent
- LinkedValue field:
- TankFarm/Tank1/Pressure (Blue)
- TankFarm/Tank2/Pressure (Red)
- Name field:
- Pressure Tank 1
- Pressure Tank 2
5. Container Components
Tab Control:
- Create three more pages with the following names:
- TankPage1
- TankPage2
- TankPage3
- Go back to your MainPage and add a TabControl
- Double Click the button and go to Settings
- Under Items Source Link set Designer and add three ChildDisplay components, and type the previous created display names in Linked Display
6. Images
Image Display:
- Find the Import File control
- Choose and image from your computer
- This image will be available to reuse once you import it the first time
Web Browser:
7. Advanced Interactions
ComboBox with Database:
- Add ComboBox control
- In ComboBox Properties → Uid, type combo1
- Go to the page Code Behind
- Inside the DisplayOpening function, add:
TComboBox ComboBox1 = this.CurrentDisplay.GetControl("combo1") as TComboBox;
DataTable dt = await @Dataset.Query.ActiveOrders.SelectCommandAsync();
if(dt != null && dt.Rows.Count > 0)
{
foreach(DataRow row in dt.Rows)
{
ComboBox1.Items.Add(row["ColumnName"].ToString());
}
}
- Consider changing the ColumnName to one of the columns of your query return
8. Dynamic Animations
Step 9: Custom PropertiesAdd dynamics to any control:
- Right-Double click control
- Select Dynamics
- Add:
- Visibility: Show/hide by condition
- PositionMoveDrag: Move based on value
- SizeScale: Resize dynamically
- ColorFillColor: Change by state
- RotationRotate: Rotate by angle
Step 10: Control Templates
9. Symbols
Create reusable control sets:
- Select controls to group:
- Choose any of the controls created in previous steps, or create two new controls
- Use Ctrl+click to select multiple controls
- Group the controls
- Click the Group button in the top horizontal toolbar
- Alternatively, Right-click → Group
- Create the symbol:
- Right-click
→ Create SymbolAdd parametersSave to library- on the grouped controls → Make New Symbol
- In the Name field, type: SymbolExample
- Click Yes to create the symbol
- Reuse across displays
- Limit controls per display
- Use visibility to hide unused elements
- Optimize binding expressions
- Use appropriate update rates
Best Practices
- Consistent control styling
- Clear labeling
- Appropriate control for data type
- Group related controls
- Test all interactions
- Consider touch screen if applicable
Next Steps
- :
- The symbol now appears in the Symbol Library
- Drag and drop from the library to any display
In this section...
[Create Canvas Animations] - Advanced animations[Working with Symbols] - Reusable components[Create Dashboards] - Executive displays