EBS Form开发中LOV和Editor介绍

EBS Form开发中LOV和Editor介绍

(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)

什么是LOV和Editor

LOV(Lists of values)和Editor都是form中用于关联到文本item对象并增强文本对象功能的对象。当在运行时激活一个LOV和Editor对象时,都会打开自己的窗口。

LOV允许用户从一个静态的或者动态的列表中选择一个值,而Editors提供了一个更大的文本输入区域,并且拥有搜索和替换功能。两种对象都是定义在form的层次上,那就意味着你可以在form上的任意block中的文本item上使用它们。

一个LOV是一个可滚动的弹出式窗口,并允许用户从一个多列动态列表中为item选择一个值。用户可以通过简单的自动减少技术或者搜索字符串来减少列表中显示的行数。

LOV中的每一行都可能代表几个字段的值,并且列标题显示在上面。你可以设计你的LOV从用户选择的行中取出几个或者全部的字段值并放置到form的items上。

LOV有以下的优点

l  动态:源数据的改变,可以动态改变列表。

l  独立:设计者从任意文本item中调用一个LOV,或者在编程从文本item外面调用。

l  灵活:如果适合的话,可以对几个items使用同一个LOV(比如,product_ID, product_name).

l  有效:可以设计LOV来重用加载到form的数据,而不是每次调用的时候都去访问数据库。这对数据相对静态的情况下非常有用。

如何在运行时使用LOV

当文本item关联LOV时,如果光标在item里时,List of Values显示在状态栏。

1.      或者按值列表键,或者按文本item旁边的LOV图标来调用LOV。

2.      选择一个显示列表中一行。你可以输入一些字符来自动减少列表中显示的行数或者在查找字段输入一个查询字符串来减少列表中显示的行数。

3.      点击OK从选中的行中取出值来。

注意:自动减少机制是通过比较输入的字符串和LOV中第一列显示的值来实现的。如果使用%来作为查询条件,Forms将会对LOV所有的列进行查询。

编辑器(Editors)

如果启用文本编辑器,用户可以一下子查看一个文本item的多行内容,并且可以在里面查找和替换文本,通常从这个单独的窗口修改文本item中的文本。

在运行时可以使用下面两个之一的编辑器

l  Forms Builder的默认编辑器

l  用户命名的编辑器

每一个文本item都有默认的编辑器可用,但是你可以设计你自己的替代编辑器,为那些有特别需要items,比如更大的编辑窗口,位置,颜色和标题。

通过为一个文本item覆盖默认的编辑器,你可以为潜在的拥有大的文本的item提供更大的编辑窗口。

如何在运行时使用编辑器

光标放在要编辑的文本编辑器中,依照这些步骤:

1.      按下编辑键,或者选择’编辑’->’编辑字段’来调用设置的编辑器。

2.      在编辑器窗口中编辑文本.FormsBuilder编辑器提供了一个查找按钮,查找按钮用来调用一个额外的查找和替换对话框来处理文本。

3.      点击OK来把你的修改写会文本item.

LOVs 和记录组(Record Groups)

当构建一个LOV时,需要考虑下面这些对象

l  记录组:是一种用来存储显示于LOV的值数组的Form Builder对象(记录组可以先创建或者,如果基于查询SQL的,可以作为LOV创建过程的一部分来创建)。

l  LOV:列表本身,用来在LOV窗口中展示记录组中的一个或多个列的值,然后把值写回特定的item或者变量。

l  文本Item:设置了LOV的主文本item,通常是LOV返回给值的item.你可以从这个item调用LOV为其提供可能的值。一个单独的LOV可以返回多个值到几个items。你可以设置需要显示相同列表的任意文本item到同一个LOV,不论它是否接收一个值。

记录组

一个记录组是一个存储于Forms 运行时内存的行列结构.它保存的记录可以被其它的Oracle Forms应用来重用,因此降低对外部数据的重复访问。

记录组可以设计来包含静态值。或者你可以在运行时通过编程来设置里面的值。更经常的是,通过SQL查询来设置值。

记录组可以用于下面几种情况

l  显示于LOV的数据

l  动态列表items的数据

l  其它定义应用的时候

注意:因为LOV和记录组是单独的对象,你可以创建多个基于同一个记录组的LOV.

手工创建一个LOV

因为Forms Builder有LOV向导用来创建LOVs和它们关联的记录组,你可能从来不需要手工创建LOV.尽管如此,了解如何手工创建LOV可以帮助理解如何设置记录组,LOV,和要关联的文本item的属性,即使使用LOV向导。

手工创建LOV的步骤如下:

1.      创建纪录组.需要输入这个纪录组要基于的SQL。

2.      创建LOV,并设置它的记录组属性为适合的记录组。

3.      设置LOV列映射属性.必须输入列和相应的标题头,然后为每个需要从LOV中取值的item选择一个返回的item.

4.      为任意需要LOV的文本Item分配LOV。

使用LOV向导创建LOV

手工创建LOV的步骤很容易让人出错或者忘记其中一个步骤。这些在LOV向导中都可以被避免,LOV向导会指导你做这些步骤。使用LOV向导,需要做以下的步骤:

1.      运行LOV向导.

2.      在LOV源页面指定LOV的源.选择一个已有的记录组或者创建一个新的基于SQL的记录组。默认选项是基于SQL的新记录组.点击Next来选择默认,SQL查询页面就出现了.

3.      在SQL查询页,指定可以用于记录组的查询SQL。你不能使用包含复杂对象数据类型的列。使用下面三种方法之一来构建查询SQL。

-         点击构建SQL查询来使用查询构建器.

-         点击引入SQL查询从一个文件引入查询.

-         在SQL查询文本字段输入SQL语法来直接输入查询,然后点击语法检查.

定义了查询之后,点击下一步.列选择页将出现。

4.      在列选择页,从记录组列选择想要包含到LOV中的列.点击下一步.列属性页面出现.

5.      在列属性页,可以为每一个LOV列指定标题,宽度和返回值.注意返回值是可选的.点击下一步,将会显示LOV显示页.

6.      在LOV显示页,指定LOV窗口的标题,宽度和高度.你可以选择让LOV显示在手工指定的位置,或者让Forms自动决定它的位置.点击下一步将出现高级选项页面.

7.      在高级选项页面,可以指定额外的高级属性.

-         一次从数据库中取出的记录数.

-         当LOV被调用的时候,是否每次都查询LOV记录.

-         在LOV显示之前,是否都显示一个对话框让用户添加查询条件。

   点击下一步将出现分配LOV到item的页面.

8.      在LOV到Item的分配页,选择需要设置这个LOV的items。在运行时这个LOV对这些items是可用的,这样操作人员在输入焦点在这些item上时,可以使用这个LOV.点击下一步将会出现完成页面.

9.      在完成页面上,点击完成就创建完了LOV.

注意:LOV向导是可重复进去的,这样就可以在LOV创建之后再使用它来修改LOV。在对象导航器里选择要修改的LOV,然后从菜单中选择工具->LOV导航器。

设置LOV属性

创建完LOV,打开它的属性面板来定义它的属性.其中的一些属性如下:

l  X和Y坐标:指定LOV窗口在form上的坐标位置。

l  宽度和高度:定义LOV窗口在当前form上的大小,可以由form操作人员调整.

l  列映射:点击标签为’更多’的按钮来打开LOV列映射窗口.

l  显示之前过滤:决定是否在LOV被调用之前弹出一个对话框来提示用户来输入查询条件;输入的值将会用于额外的条件来限制查询中第一列.

l  自动显示:控制当form操作人员进入关联这个LOV的item时是否LOV为自动调用。

l  自动选择:指明是否LOV自动关闭并返回值当列表减少到一行的时候.

l  自动跳过:决定是否光标自动跳到下一个可导航的item但操作人员为文本item从LOV中选择了一个值。

l  自动刷新:如果是Yes,记录组将在每次LOV调用时重新执行查询;如果是No,查询仅在当前会话第一次调用LOV的执行。

l  自动调整列宽度:决定是否Forms自动为每列设置宽度,这样如果标题的长度比列的长度长的时候也能显示整个标题。

注意:多于LOV基于同一个记录组,当这种情况下,如果你设置了自动刷新为No,Forms Builder在任一相关的LOV被调用的时候,都不会再执行LOV查询。

列映射属性

当点击列映射属性上’更多’按钮,LOV列映射对话框将会打开,并显示以下的元素:

l  列名:用来选择一个LOV列用来映射或者定义一个列。

l  返回值的item:指明form上要设置值的item或者变量的名字.如果为空,不从LOV返回列值.如果你想返回一个值,指明下面中的一项:

-         Block_name.item_name

-         GLOBAL.variable_name

-         PARAMETER.parameter_name

l  显示宽度:在LOV中列的显示宽度;如果为0的话,这列就会被隐藏,但是值还是可以返回的。

l  列标题:LOV窗口中列标题头。

在对话框上设置列映射,首先从列名列表中选择列,然后根据需要设置其它的映射值.

注意:记录组列和LOV列要兼容。

你可以从它本身的属性列表修改记录组查询。

关联一个LOV到文本item

用户可以从一个文本item调用一个LOV,你必须在文本item的属性面板上指明LOV的名字。

1.      在对象导航器上选择可以访问LOV的文本Item.

2.      在属性面板上,设置值列表属性为需要的LOV。

记住当用户导航到这个文本item的时候是,值列表图标将会显示,表明通过值列表键或者菜单命令,LOV是可用的。

定义一个编辑器

如果用户需要在文本值上使用编辑器,通常默认的FormsBuilder编辑器对大多数items就足够了.尽管如此,捏可以设置你自己定义的编辑器并作为form中的一个对象,然后把它设置到一个需要它的文本items上。

如何创建一个自定义的编辑器

1.      在对象导航器上选择编辑器节点,然后点击新建。一个新的编辑器对象显示在列表中。

2.      在对象导航器中选择新建的编辑器,然后在属性编辑器上可以设置它的名称和其它属性。

设置编辑器属性

l  标题/底部标题:显示在窗口的头上或者底部

l  宽度/高度:控制编辑窗口的大小

l  X/Y坐标:编辑器在显示时的坐标;可以被文本item的属性所覆盖。

l  自动换行:文本如何在窗口中换行:None, Character或者Word.

l  显示垂直滚动条:设置成Yes将在编辑器窗口添加一个垂直滚动条.

关联编辑器到文本item

要关联一个编辑器到本文item,你必须在文本item的属性面板上指明编辑器。

在对象导航器选择想要设置编辑器的文本item。

在item的属性面板上,设置编辑器为下面之一的设置:

l  空:文本item将使用Forms Buider的默认编辑器。

l  编辑器的名字:文本item将使用你再form中创建和设置的命名的编辑器。

总结

值列表(LOV)和文本编辑器(editors)用来支持文本items。LOV和编辑器都是form层次的对象,都可以在运行时激活文本items的时候打开自己的窗口,并且可以用于form模块中的任意block上的文本items。

l  LOVs和编辑器可以在文本items*享使用。

l  实现LOV的步骤如下

1.      创建一个新的LOV(和记录组)

2.      为返回的items定义列映射

3.      根据需要,附加LOV到文本items。

l  LOV向导自动执行上面这些步骤

l  文本items可以使用默认的编辑器或者用户命名的编辑器。

EBS Form开发中LOV和Editor介绍

上一篇:shell script 学习(三)条件判断式的使用:if..then ..fi和 case...esac语句


下一篇:另类求1+2+…+n