Oracle Forms 不完全遵循我对项目背景颜色的设置

Oracle Forms doesn't completely respect my setting for the background color of an item

我不得不使用 Oracle Form Builder 10.1.2.3.0。我可以在特定项目的表单中使用的理想控件是 List Item 使用名为 Combo Box.

List Style

使用此控件,我可以在 PRE-FORM 触发器中使用 set_item_property 来设置列表项的背景颜色以匹配 Canvas 颜色。

项目的默认背景颜色是白色,但这不是问题的最大部分。一个相当大的 UI 问题是选择后项目的颜色:可怕的芥末色。我更喜欢斯巴达式的东西,当然不是尖叫“嘿!看着我!”。

当我 运行 表格时,一切都很好,直到我在列表中选择一个项目。之后,所选项目的背景为芥末色。并且列表的每个弹出窗口都显示带有芥末背景的项目。

我想我可以向 Item 添加触发器来重置背景颜色,但是那没有用。我创建了以下触发器无济于事:

. WHEN-LIST-CHANGED
. POST-CHANGE
. WHEN-VALIDATE-ITEM
. WHEN-NEW-ITEM-INSTANCE

我找不到任何其他可能有用的触发器名称。

代码是否有希望强制我的 UI 偏好?


在对控件进行任何操作之前:


第一次弹出时:


在第一个弹出窗口中选择一个项目后:


第二个弹出窗口:

如果您使用的是 Oracle E-Business Suite,他们可能会在模板表单中编码该功能,我猜您可能会使用它。

如果您没有使用 EBS,那么您的表单中可能有进行此更改的代码。例如,如果您有一个 WHEN-LIST-CHANGED 触发器,其中包含一行看起来像这样的代码,您将得到您所描述的行为:

SET_ITEM_PROPERTY ('LIST1', BACKGROUND_COLOR, 'OLAF1');

如果包含该项目的 Data Block 不是数据库项目,那么您可以更改该块,使其不可更新。如果你这样做,那么芥末色就不会被使用。

看起来颜色变化(芥末色)的目的是一个视觉线索,表明尚未提交对数据库的更改。但是,如果 Data Block 不是数据库块,则不需要视觉线索,因为不可能进行任何更改。

我将 DML Data Target TypeTable 更改为 None,芥末色不再出现。

我没有更改但可能也相关的其他设置是:

Database Data Block = No
Query Data Source Type = None
Insert Allowed = No
Update Allowed = No
Locking Mode = Delayed
Delete Allowed = No
Update Changed Columns Only = No

即使它是数据库项目,您也可以在其 WHEN-LIST-CHANGED 触发器中将项目的 update_allowed 属性 设置为 false,并在其 WHEN-MOUSE-CLICK触发。这并不完美,因为如果您单击列表项的文本而不是向下箭头,那么您仍然会看到芥末酱,但至少在您完成后,芥末酱消失了。