将4GL窗口定位在中心

时间:2014-12-28 16:54:32

标签: 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

2 个答案:

答案 0 :(得分:1)

不,没有关键词解决方案来居中窗口。您可以使用变量作为位置并进行计算,或者您可以先验地进行计算并使用硬编码的位置,如您所示。如果您的窗口大小不是24x80,那么计算可能会更好。

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

答案 1 :(得分:1)

  

我设法通过调用以下函数来居中字符串,传入字符串和列数。

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