Как получить контроль над строкой в ​​табличном макете в Oracle

Это может быть просто, но я новичок в Oracle. Я использую Oracle 10g и имею форму, которая перечисляет нашу информацию из связанной таблицы в табличном макете. Последний столбец данных представляет собой тип элемента «Элемент списка», который имеет список элементов «Включено» (T) и «Отключено» (F).

Что мне нужно, так это то, что когда пользователь меняет этот раскрывающийся список на отключенный, я хочу, чтобы ТОЛЬКО в этой строке были отключены некоторые столбцы, а не весь столбец.

Это также предполагает, что при загрузке формы он будет отключать и включать строки данных в зависимости от того, какие значения извлекаются из столбца EnabledDisabled в базе данных.

Спасибо за помощь!


person DotNetDan    schedule 24.03.2010    source источник


Ответы (1)


Вариант 1: используйте свойство элемента ENABLED.

К сожалению, Oracle Forms не позволяет изменять свойство ENABLED элемента на уровне экземпляра элемента.

Однако вы можете включить или отключить весь элемент, когда пользователь вводит запись — используйте триггер WHEN-NEW-RECORD-INSTANCE — в зависимости от значения текущей записи для элемента списка триггер установит для свойства ENABLED значение PROPERTY_TRUE или PROPERTY_FALSE.

Конечно, ваш элемент списка также будет иметь тот же код в своем триггере WHEN-LIST-CHANGED.

Недостатком этого подхода является то, что весь столбец будет «выглядеть» отключенным для пользователя, и они не смогут выбрать другую запись, используя эти отключенные элементы.

Вариант 2: используйте свойства INSERT_ALLOWED и UPDATE_ALLOWED.

Вы можете установить эти свойства на уровне экземпляра элемента, используя SET_ITEM_INSTANCE_PROPERTY. Вы должны установить их в триггере POST-QUERY блока, а также в триггере WHEN-LIST-CHANGED элемента списка.

Однако это не изменит внешний вид элементов на экране. Чтобы решить эту проблему, вы также можете установить визуальный атрибут на уровне экземпляра элемента (например, изменить элементы, чтобы использовать темно-серый фон или что-то в этом роде).

Дополнительные комментарии.

person Jeffrey Kemp    schedule 25.03.2010
comment
Ну, это воняет. Хорошо, думаю, я просто сделаю описание функциональности в форме понятным для пользователей. Еще раз спасибо, Джефф, за то время, что ты спас меня от того, чтобы не крутить колеса. - person DotNetDan; 25.03.2010
comment
К сожалению, не просто :) - но я несколько раз использовал вариант 2 с хорошим эффектом. - person Jeffrey Kemp; 25.03.2010