Displays Controls → Tutorial | Concept | How-to Guide | Reference
Basic Open 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:
- Bind to:
@Tag.Motor1_Enable
- On Text: "Enabled"
- Off Text: "Disabled"
Numeric Input:
- Click Dynamics and check Actions:
- In Actions, choose ToggleValue
- In Object, type
@Tag.Equipment/MotorRunning
Numeric Input:
- Drag NumericTextBox from toolbox
- Double Click the button and go to Settings
- Bind LinkedValue
- Control: NumericTextBox
- Bind to:
@Tag.Setpoint
- MinMinValue: 0, MaxMaxValue: 100
- Format: "0.0"
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"
3. Gauge Components
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
- Bind LinkedValue to
- Orientation: Vertical
- Height: 300
- Bind:
@Tag.Tank_Level
- Show scale and value
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"
DataGrid Component
- Add DataGrid
- Configure columns:
| Batch ID | Product | Quantity | Status |
- Data source options:
- Tag array
- Query result
- Script data table
- 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:
Add TabControl- Create tabsthree more pages with the following names:
Overview- TankPage1
Details- TankPage2
- Trends
- Alarms
- Add content to each tab
Group Box:
- Title: "Motor Controls"
- Border: Solid
- Add related controls inside
- 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:
- Add Image control
- Dynamic source:
csharp
@Tag.AlarmActive ? "alarm.png" : "normal.png"
Web Browser:
- URL: Company dashboard
- Or display PDF reports
- 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:
csharp
// Populate from query
- 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
ComboBox1.ItemsSource = @Dataset.Query.
ProductsActiveOrders.
ResultData;
ComboBox1.DisplayMember = "ProductName";
ComboBox1.ValueMember = "ProductID";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.
Conditional Visibility:
csharp
// Show/hide based on user level
Panel1.Visibility = @Client.UserGroup == "Supervisor"
? Visibility.Visible
: Visibility.Collapsed;
Dynamic Animations
Add 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
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 Symbols
Next Steps
[Create Canvas Animations] - Advanced animations[Working with Symbols] - Reusable components- :
- The symbol now appears in the Symbol Library
- Drag and drop from the library to any display
[Create Dashboards] - Executive displays