Window 将4GL窗口定位在中心位置

Window 将4GL窗口定位在中心位置,window,informix,centering,4gl,Window,Informix,Centering,4gl,在我的4gl程序中有多个窗口,我必须将它们放在屏幕中央。例如: OPEN WINDOW w_yesno AT 10, 10 WITH 4 ROWS, 56 COLUMNS ATTRIBUTE (BORDER, MESSAGE LINE FIRST+1, PROMPT LINE FIRST+2) 是否有任何关键字可以用于在中心自动打开它?比如: OPEN WINDOW w_yesno AT CENTER 不,没有一个关键字解决方案来集中窗口。您可以对位置使用变量并进行

在我的4gl程序中有多个窗口,我必须将它们放在屏幕中央。例如:

OPEN WINDOW w_yesno AT 10, 10
WITH 4 ROWS, 56 COLUMNS
ATTRIBUTE (BORDER, MESSAGE LINE FIRST+1,
            PROMPT LINE FIRST+2)
是否有任何关键字可以用于在中心自动打开它?比如:

 OPEN WINDOW w_yesno AT CENTER

不,没有一个关键字解决方案来集中窗口。您可以对位置使用变量并进行计算,也可以事先进行计算并使用硬编码位置,如图所示。如果窗口大小不是24x80,则计算可能更好

在遥远的过去,我写了一些代码,在屏幕下面有数量可变的窗口,一些有2行,一些有3行,一些有4行;然后你必须用计算来定位它们

通过调用下面的函数,传入字符串和列数,我成功地将字符串居中

然后您可以调用并返回居中字符串:

FUNCTION center_string(str, cols)
   DEFINE str CHAR(100),
          cols, len, spcs SMALLINT


LET len = length(str)
LET spcs = (cols - len) / 2

IF len >= cols
THEN # Do nothing. Don't have enough columns to center this string
ELSE
   LET str = spcs spaces, str
END IF

RETURN str

END FUNCTION
LET l_string = center_string(l_string, 54)
DISPLAY l_string