【问题标题】:Positioning a 4GL window in center将 4GL 窗口定位在中心
【发布时间】:2014-12-28 16:54:31
【问题描述】:

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

【问题讨论】:

    标签: window informix centering 4gl


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      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 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多