Applies To:
  • CitectSCADA 5.10 Service Pack A

There are so many parameters determining how and where my Citect windows display that I am having trouble getting the functionality I want. Especially with the advent of two new parameters in V5.10, ie. [Animator]FullScreen and [Page]DynamicSizing. Sometimes the size of the page that I want to display seems to determine whether it displays at my designated location or at coordinates 0, 0. I don't like it. Please explain. 

First, lets get the terminology correct.


Citect does make decisions affecting window locations based on whether a page is deemed Fullscreen or not. So what is fullscreen?

A page is fullscreen if it is as large or larger than the default screen resolution when displayed without a title bar. It must only be as large or larger in one dimension, ie. height or width. For example, if you are running at SXGA screen resolution (1280x1024) and create a page with a viewable area of 1280x1000 then this would still be treated as a fullscreen page. You should consider this when creating your pages, and design them to be a few pixels smaller in one or both dimensions if you do not want them to be treated as fullscreen pages by default.


Pages are created at configuration time. When you create a page based on an exisiting template, the resolution you choose only determines which template is selected, ie. if you select a resolution which matches your screen resolution then the template is designed to fill the entire screen. It is the "View Area" of the page which actually determines the size of the page, and this can be made bigger or smaller than the screen resolution. Modify this via the File, Properties menu item in the graphics builder.

Windows are the objects in which your pages are displayed, and are created at runtime. When you create a window for displaying pages in, you assign it properties. For example, the WinNewAt() function allows you to display a page in a new window at specified coordinates and in a specified mode. Windows Parent/child relationships can also be established. Use the Win functions to create and control Windows. For example, you can modify a windows properties to make it hidden, maximised or iconised, by using the WinMode() function.

Use the Page functions - such as PageSelect, PageDisplay etc. - to display a page in the currently active window. When Citect starts it will startup to a user specified page (or the Citect Startup Page by default). It is at this point where you may first notice behaviour changes between identical projects running on screens of different resolution, etc.

The first page you display in your project will determine the mode of the Main window in your project. Subsequent Page displays will all be in this same window, unless you actively create new windows. And this is where the fullscreen property comes in. If your startup page is not fullscreen (ie is smaller than the screen resolution) then the default window that is created does not by default have its fullscreen mode set to 1. (You also drop out of fullscreen mode as soon as you display a page that isn't full screen - if you have the [Page]DynamicSizing parameter turned on.) This can result in such things as Titlebars appearing when you have not specified one (See Q2101). This can also affect whether new windows created using the WinNewAt function appear at the user selected coordinates or at 0,0. So a requirement for a fullscreen page to appear fullscreen is that the window in which it is displayed must have the fullscreen flag set. This can be forced by using the DspFullScreen() function and redisplaying the window.

We now have two new parameters [Animator]FullScreen and [Page]DynamicSizing. Refer to online help for a description of these parameters. What follows is an outline of the effects of each combination of these parameters,  ie. all four possible combinations.

1. [Animator]FullScreen =1 and [Page]DynamicSizing = 0

Citect assumes every page is to be displayed in fullscreen. Hence all new windows are displayed at 0,0. For example, WinNewAt("!mypage",500,500,1) will appear at 0,0 and not 500,500, regardless of the size of your page. Pages are not resizeable.

2. [Animator]FullScreen = 0 (default) and [Page]DynamicSizing = 0

All Windows are displayed at the coordinates you specify, unless this results in the window displaying partially or fully off the screen, in which case it gets displayed at coordinates 0,0. Pages are not resizeable.

3. [Animator]FullScreen =0 (default) and [Page]DynamicSizing = 1 (default)

All pages can be resized. If you resize a page then new windows will display at the same resized scale as their parent. You can turn this effect off by setting the parameter [Page]InheritParentScale=0. If a window is going to be displayed entirely off the screen then it will be relocated to display at 0,0. This combination of settings will allow a window to be displayed partially off the screen.

You can use WinNewAt in mode 1024 to create a window which is not dynamically resizeable. This will override the [Page]DynamicSizing setting for that window only.

4. [Animator]FullScreen =1 and [Page]DynamicSizing = 1 (default)

With this combination set, Citect does not assume that you want every page to be fullscreen. For example you may have popups which you do not want to be set to fullscreen. So if the page you are displaying IS NOT fullscreen then it will display at the specified x,y coordinates (eg. via WinNewAt()). This will be true even if the new window will be displayed partially or entirely off the screen.

If the page you choose to display is fullscreen, then it will automaticallly be displayed at coordinates 0,0. Use this combination set if you want your pages to display fullscreen (ie. cannot resize them), but any new windows you open can still be resized, even if they are fullscreen.