LZY'Blog

记录LZY的生活、行程!

« Progress中的define button按钮定义语句说明及演示示例Progress中xSheet:PageSetup:orientation语句报错原因 »

Progress中form语句说明及演示示例

  定义一个frame的布局和某些处理属性,以便在单个程序中使用。如果frame没有以前的作用域,则FORM语句将其作用于当前块。如果你想在一个语句中描述一个frame而不是让它使用FORM语句,Progress根据一个块中的单个数据处理语句构建frame。您可以使用FORM语句来描述数据迭代的布局和框架头或背景。

语法

FORM
[ form-item ... ]
[ { HEADER | BACKGROUND } head-item ... ]
[ frame-phrase ]
FORM record [ EXCEPT field ... ] [ frame-phrase ]

参数说明

form-item

  指定在frame中显示的标准字段组件或值,或SPACE或SKIP指令。所有表单项指定的数据都由单个字段组拥有,在frame中为每个数据迭代复制。

  下面是form-item的语法:

field [ format-phrase ]
constant
[ at-phrase | TO n ]
[ BGCOLOR expression ]
[ DCOLOR expression ]
[ FGCOLOR expression ]
[ FONT expression ]
[ PFCOLOR expression ]
[ VIEW-AS TEXT ]
SPACE [ ( n ) ]
SKIP [ ( n ) ]

field

  指在frame中显示的字段或变量。这个值不能是表达式或一个frame。若要指定子frame,必须首先定义父frame和子frame,然后将子frame的frame属性指派给父frame的组件句柄。子frame被分配到与其他表单项相同的字段组。

format-phrase

  为字段或变量指定一个或多个frame属性。

constant

  一个常数值。

at-phrase

  指定frame内的值的位置。at语句并没有为数据提供左对齐,它只是简单地在数据区域显示。下面是at语句的语法。

AT { n
     | { COLUMN column | COLUMN-OF relative-position }
       { ROW row | ROW-OF relative-position }
       [ COLON-ALIGNED | LEFT-ALIGNED | RIGHT-ALIGNED ]
     | { X x | X-OF relative-position }
       { Y y | Y-OF relative-position }
       [ COLON-ALIGNED | LEFT-ALIGNED | RIGHT-ALIGNED ]
   }

TO n

  你希望显示结束的列的数字(n)。TO选项并没有为数据提供右对齐,它只是简单地在数据区域显示。

BGCOLOR expression

  在图形界面中指定form项的背景颜色。这个选项在字符界面中被忽略。

DCOLOR expression

  在字符界面中指定form项的显示颜色。这个选项在图形界面中被忽略。

FGCOLOR expression

  在图形界面中指定表单项的前景颜色。这个选项在字符界面中被忽略。

FONT expression

  指定表单项的字体。

PFCOLOR expression

  在字符界面中指定表单项的提示颜色。这个选项在图形界面中被忽略。

VIEW-AS TEXT

  指定表单项以TEXT组件显示,而不是作为FILL-IN组件显示。

SPACE ( n )

  标识在显示表达式后面需填充的空白区域的数字(n)。n可以是0。如果您所指定的空格数量超过了frame当前行中剩余的空白区域,那么Progress就会开始一个新行,并丢弃额外的空间。如果您不使用这个选项,或者您不使用n,那么Progress将在frame项间插入一个空格。

SKIP ( n )

  标识在显示表达式后面需插入的空白行的数字(n)。n可以是0。如果您不使用这个选项,Progress不会在表达式之间换行,除非表达式无法在同一行中显示。如果您使用SKIP选项,但不指定n,或者如果n为0,那么Progress将开始新的一行,除非它已经处于新行的开始。

record

  表示您想要显示的记录的名称。命名记录是将每个字段单独列出的简写形式,作为表单项。

EXCEPT field . . .

  告诉Progress显示frame中的所有字段,除了在EXCEPT语句中列出的字段。

HEADER

  告诉Progress从所有其他数据中单独分配字段组,并将下列项目放置在frame顶部的标题部分。除了字段、变量和常量之外,frame头部还可以包含表达式、图像和矩形。每次要显示frame时,Progress都会重新评估这些表达式。

  当您使用HEADER选项的FORM语句时,Progress将数据字典字段标签用于您在FORM语句中命名的字段。使用字符串来为你在frame头中命名的字段指定标签。

BACKGROUND

  指定任何下列frame项显示在frame背景中,在一个单独的字段组中数据和头的后面。通常,这个选项用于显示数据背后的图像或矩形。

head-item

  描述在frame头或背景中显示的值,或SPACEAK或SKIP指令。以下是head-item的语法:

expression [ format-phrase ]
constant
  [ at-phrase | TO n ]
  [ BGCOLOR expression ]
  [ DCOLOR expression ]
  [ FGCOLOR expression ]
  [ FONT expression ]
  [ VIEW-AS TEXT ]
SPACE [ ( n ) ]
SKIP [ ( n ) ]

  这与form-item的语法完全相同,只是head-item可以是表达式,不包括PFCOLOR选项。如果您在HEADER或BACKGROUND语句中使用一个表达式,那么每次查看frame时都会对表达式进行评估。如果您为frame提供PAGE-TOP或PAGE-BOTTOM选项,则对每个页面进行评估。例如,这允许您在frame头中包含对PAGE-NUMBER函数的引用。

  注:如果head-item是一种表达式,则可以使用任何选项的format语句;如果head-item是一个常量,那么只允许使用at语句,TO、BGCOLOR、DCOLOR、FGCOLOR、FONT和VIEW-AS作为TEXT选项。

frame-phrase

  为与FORM语句关联的frame指定frame选项。

使用示例

  这个程序允许用户更新特定客户的信息,FORM单语句描述了要使用的UPDATE语句的一个非常具体的布局。

repeat for customer:
    form name    colon 10 phone     colon 50 
         address colon 10 sales-rep colon 50 skip
         city    colon 10 no-label state no-label postal-code no-label
    with side-labels 1 down centered.
    prompt-for cust-num with frame cnum side-labels centered.
    find customer using cust-num.
    update name address city state postal-code phone sales-rep.
end.

  运行结果:

Progress中form语句说明及演示示例

  当你使用FORM语句来控制字段出现在屏幕上的顺序时,请记住,这个顺序与Progress处理字段数据输入期间的顺序无关。

  在这个例子中,上面的FORM语句首先显示了客户姓名和电话号码,但是UPDATE语句指定了电话号码在姓名、地址、城市、州和邮政编码之后,字段按照FORM语句描述的方式显示,但是tab顺序由UPDATE语句决定。

  下面的例子使用了HEADER选项。

define variable i as integer format ">9".

form header "This is the header - i is" i with frame a row i column i i down.

do i = 1 to 8 with frame a.
    display i.
    pause.
end.

  运行结果:

Progress中form语句说明及演示示例

  这个FORM语句定义了一个HEADER frame,它由文本“This is the header - i is”和变量i的值组成。此外,它还指定了一个屏幕位置,其中显示了标题。FORM语句不会将header frame带入视图。

  在DO块的第一次迭代中,DISPLAY语句将frame引入视图。在DO块的第二次迭代中,frame已经在视图中(它在第一次迭代期间没有被隐藏),所以frame的标题不会被重新评估。因此,i的新值没有反映在frame的标题部分中,并且您没有看到i的新值在header中。您也没有看到屏幕上的frame的位置发生变化。

  相比之下,看看这个修改过的程序。

define variable i as integer format ">9".

form header "This is the header - i is" i with frame a row i column i i down.

do i = 1 to 8 with frame a.
   display i.
   hide frame a.
end.

  运行结果:

Progress中form语句说明及演示示例

  在DO块的第一次迭代中,DISPLAY语句显示frame。HIDE语句从窗口中移除frame。因此,在DO块的第二次迭代中,DISPLAY语句重新显示frame。每次重新显示frame时,Progress都会重新评估frame的头部。因此,frame的头部反映了对i的变化,窗口中frame的位置也发生了变化。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 |

Copyright 2009-2012 LZY'Blog. | ICP:蜀ICP备05027543号