设置显示器的分辨率

项目Properties -> Graphical design -> Runtime general -> Monitor administration, 打开监视器管理窗口,设置显示器的分辨率。设置完后,在创建Frame时,宽度和高度需要根据这个分辨率来定义。这里的监视器分辨率是理论分辨率,如果实际运行的显示器分辨率大于该分辨率,页面会自动缩放。
日志文件夹

Frame宽度和高度

Frame的宽度和高度应小于等于设置的监视器宽度和高度。每一个屏幕都会有一个Frame,Frame的位置可以在设置的显示器区域范围内的任何矩形框内。屏幕的内容不能超出Frame的大小,否则超出部分不会显示。屏幕的内容是以Frame的左上角为参考原点定义的,所以当Frame定义在监视器的内部时,屏幕上定义的内容也会跟踪Frame移动到内部。

悬浮窗

  1. Always in the foreground = true
  2. Close after losing focus= true
  3. Positioning = relative to element

页眉 Always in the foreground

通常情况下,程序页面会有一个菜单栏,这个菜单栏会永远存在,不会被其他程序覆盖,当然可以通过控制Frame的坐标位置和长宽,把菜单栏和主体部分严格区分开来,但是也可以把菜单栏的Frame设置为Always in the foreground,这样,即使有些主体页面设置位置和菜单栏部分有重叠,在显示时,也不会覆盖菜单栏,反而时菜单栏因为永远在foreground,而导致菜单栏其实是把主体部分覆盖了。这里要注意,如果两个frame都设置了Always in the foreground,那么这两个页面相当于没有设置,后打开的页面同样会覆盖先打开的页面的重叠部分。

窗口多实例 Frame can be opend multiple times

当设置了Frame can be opend multiple times,此时每次打开Screen其实都是新创建了一个Screen,除非主动用函数关闭,否侧,zenon在运行时,会一个接一个的创建出来,每次关闭,只是关闭了最后一次打开的窗口,所以此属性要慎用。当该属性为false时,同一个frame的screen打开时,会自动关于上一个screen,所以同一时间只有该frame的一个screen可以打开。

  1. 同一个窗口生产多个实例
  2. 此时如果需要全部关闭所有窗口,可以使用CloseFrame实现,但是貌似必须指定Frame,不能使用关闭当前Frame功能。
  3. 如果有多个Screen共用一个Frame,且运行多实例时,Screen不能使用Modal Dialog模式,因为假如有一个Screen是Modal Dialog模式,因为没有主动关闭,导致其他基于该Frame的Screen其实都被这个Modal Dialog禁用事件了,导致只能显示,不能响应任何操作。

Border

可以通过Frame -> Properties -> Border -> Border type=Size fixed设置窗口边框,边框颜色为黑色,暂时不清楚如何来修改这个颜色。