Tabs in PAC Display window?


Hi All,
I am trying to find a clean way to build tab type functionality in a window. I could change the visibility of each of my fields. but that would create a lot of work and a disaster when it came to maintainability. See screenshot below for a mockup. Suggestions or alternatives? We originally had 5 different “grids” on the same screen, but it is getting too big. “Tab” functionality would help a ton in making the window more readable and usable. If the elements maintained their settings when grouped, I could overlap and change visibility on each of the groups…but that is not the case. Any and all suggestions are greatly appreciated! :cool:


I create artificial tabs all the time. I’ve done this in the PAC Project Demo ( and our EMU energy monitoring HMI (

Create a window to hold your tab buttons. Then create the overlapping windows to hold the content displayed for each tab. I prefer to remove the borders and resizing features of the content windows using the menu option Windows -> Properties for each. IF you remove these features, you may have to manually enter the window’s x, y, height, and width coordinates to get the tab window to align flush with the content windows. Once you get one content window’s properties, you can use them for the other content windows. Do this as a last step, which is after you’ve edited the content within your screens. (Once you remove the dragging and resizing handles, you have to use the menu to switch between windows in Configurator, which can get tiresome if you are doing a lot of work between windows, copying and pasting and such. However, your tabs will make it easy to switch between windows in Runtime.)

Assign operator driven attributes that show and hide all windows so that when you click your first tab, all windows with content for the tab are displayed, and any others are hidden.

Here is an example from my SNAP PAC Demo:

My tabs are graphics, but they can be simple buttons or drop-down menu items. My tabs display the factory, ship, Learning Center, Pump, and HVAC screens. All of these tabs are in one window that stays visible. Just below the tab window are the various content windows for each tab. Each tab button uses the windows operator-driven attribute. I’ve shown how to reach this feature and how I am opening and closing windows to achieve the desired tabbing effect. The screen for the Ship uses even more windows, which you might want to look at. Both of the HMI samples I linked to are free.



I do that as well from my main display. However, for this scenario I need windows within a window. I do not see a way to do that unless I am missing something. If not, any other ideas? Thank you for the response!


I have one solution. However, it would require a bit more work than I am willing to jump on. I could have one grid with variables that get reset by calling a chart each time I changed “tabs” (in my case time periods). I would have one to increment and one to decrement…and then I would need to store at each “tab” change and then sort it out at save. If I was doing this from scratch, that would be a decent solution. Let me know if there are any other ideas…


You’re not missing anything. You can’t embed windows within a window, and showing and hiding numerous elements that overlap gets messy during the editing, as you are aware of. Your last suggestion is good. You can use PAC Control to determine which set of data fills your tab’s content. I have used PAC Control’s Pointer variables to do this. If you’d like my sample, let me know. I’ll need to review the code before providing it.


Yes! Sounds like a good use of pointers. If you’re new to pointers, you might be interested in [B]this Pointers 101 post[/B].

Also, here’s another post that talks about [B]swapping out tables (without using pointers)[/B], which could be an option too.


The pointers sound like a fun option…and something else I can learn…excellent. On a side note, it would be lovely to have a container of some sort in PAC Display. It would be helpful on many of my screens and avoid comm between controller and display until save. Just a suggestion :slight_smile: . Thank you for all of the replies.