我的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
答案 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