我在整个 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