Key approaches

Optimizing
FactoryTalk® Optix™
applications requires a thoughtful balance between performance, maintainability, and clarity.
Throughout this document, we will explore key approaches to achieve this balance such as:
  • Approach types
  • Approach use cases
  • How to implement each approach efficiently
These concepts originally come from the world of web design and cross-platform applications, but are now essential in industrial HMIs, where the same application can be displayed on very different devices.
  • Scalable approach:
    A scalable approach on an interface consists of resizing proportionally while maintaining layout, positioning, and readability, regardless of the device’s resolution.
    For example: A layout designed at 1920×1080 that also fits correctly at 1280×720 or 3840×2160.
  • Adaptable approach:
    An adaptive approach on an interface consists of adjusting its layout based on the device or resolution, loading different structures accordingly.
    For example: A dashboard that appears compact on a tablet and expanded on an industrial panel PC.
  • Responsive approach:
    A responsive approach on an interface rearranges its contents in real-time depending on available space, without switching pages.
    Example: A grid that changes from 4 to 2 columns as the window is resized.

When to use each approach

The table below shows the recommended approach for each interface scenario:
Scenario
Recommended Approach
Implementation procedure
Different resolutions but same layout
Scalable
Optimized layout for each device
Adaptive
Flexible layout within the same page
Responsive

Implement a scalable approach

You can easily achieve scalability in
FactoryTalk® Optix™
by using the alignment properties of containers.
For example, to create a header, use a
Panel
object and set its horizontal alignment to
Stretch
. This ensures that regardless of the final resolution, the object spans the full available width.
IMPORTANT:
Assigning fixed sizes to container objects prevents the interface from scaling across different screen resolutions. Only assign fixed sizes if necessary.
Size and layout settings for a container, including horizontal and vertical
                        alignment, width, height, left margin, and top margin values.
Size
Outcome
800px
Application window titled UI_design with a menu bar and
                                            standard window controls for minimize, maximize, and
                                            close.
1280px
Application window titled UI_design with a blank black
                                            workspace and standard window controls in the top right
                                            corner.
TIP: Set container alignment to
Stretch
to allow automatic space distribution based on the resolution. Even if the application is developed at a fixed resolution, elements will scale at runtime to adapt to their container.
Size and layout property panel with horizontal alignment set to
                            Stretch, vertical alignment set to Top, height set to 72, and all
                            margins set to 0.
Size
Outcome
800px
 Application window titled UI_design with a menu bar
                                            and standard window controls for minimize, maximize, and
                                            close.
1280px
Application window titled UI_design with a menu bar and
                                            window controls for minimize, maximize, and close.

Implement an adaptive approach

When designing for widely different resolutions (for example, 1920x1080 vs. 480x272), you must create separate layouts. Use the
Panel Loader control
to dynamically load different layouts based on resolution.
To determine the screen resolution, use the
Width
and
Height
properties of the
MainWindow
. Set the
Change modelling rule
of these properties to
Mandatory
to ensure these values are available at runtime.
IMPORTANT: The use of the
Change modelling rule
feature is meant for advance users only. You can view this feature only if you activated the
Advanced mode
in the
FactoryTalk Optix Studio Options
panel.
Limit the use of this feature to this specific scope to avoid any unexpected behaviours.
Context menu for the Width property with the Change modelling rule option
                        selected and set to Mandatory.
TIP: It is good practice to store calculated values in helper variables within the
MainWindow
, especially if they are used in multiple places. This avoids repeating
Complex Dynamic Links
composed of multiple converters, reducing node count and improving performance.
Property list for MainWindow type showing Boolean properties Small, Medium,
                        Large, and NotSmall, each with a Complex Dynamic Link.
Expression evaluator block with a logical flow showing a small screen
                        condition, an expression input of {#WindowWidth}<576, and a dynamic link
                        to {Window}/Width.

Implement a responsive approach

Besides using the
Panel Loader
, conditional visibility is key to responsive design. For example, a side menu might only appear above a certain screen width, while a toggle button appears below that threshold.
The
GridLayout
is essential for arranging content dynamically. It allows defining the number of rows and columns.
You can also use the
VerticalLayout
and
HorizontalLayout
features by setting the
Wrapping
attribute to
Active
in the
Properties
panel.
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.
Normal