如何通过 Progress Openedge 使用多个屏幕

Jul*_*rne 2 progress-4gl openedge

是否可以定义窗口出现在哪个屏幕上?我试图找到解决方案,但始终只获得有关如何将某些内容显示在屏幕上或如何监视数据库的信息。

Mik*_*ner 9

假设这是经典的 ABL GUI。

窗口在屏幕上的位置由窗口的 X 和 Y 属性确定。这是相对于“主”屏幕的左上角/左上角的像素。

如果您的默认屏幕是右侧屏幕并且您想要寻址左侧显示器,则需要转到 X < 0(负)。

您可以使用 .NET System.Windows.Forms.Screens:AllScreens 数组来获取有关可用显示器及其大小和相对桌面位置的详细信息:

DEFINE VARIABLE oScreens       AS System.Windows.Forms.Screen NO-UNDO EXTENT .
DEFINE VARIABLE iCount         AS INTEGER                     NO-UNDO.
DEFINE VARIABLE i              AS INTEGER                     NO-UNDO.

/* Gets an array of all the screens connected to the system. */
ASSIGN oScreens       = System.Windows.Forms.Screen:AllScreens
       iCount         = EXTENT(oScreens) .

DO i = 1 TO iCount :
    MESSAGE "screen" i SKIP
            "Width"  oScreens[i]:Bounds:WIDTH    SKIP 
            "Height" oScreens[i]:Bounds:HEIGHT  SKIP 
            "X"      oScreens[i]:Bounds:X SKIP
            "Y"      oScreens[i]:Bounds:Y SKIP
        VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
END.
                    
DEFAULT-WINDOW:VISIBLE = TRUE . 

DEFAULT-WINDOW:X = -1000 . 

MESSAGE DEFAULT-WINDOW:X DEFAULT-WINDOW:Y . 
   
Run Code Online (Sandbox Code Playgroud)

例如,我的左屏幕(中心是主屏幕)是 2560x1440,以 X = -2560 开头。

因此,为了在左上角有一个窗口,我将 X 设置为 -2560,将 Y 设置为 0。