Абриаль 2.1 Назад Начало Выше29/09/04 А.И.Пацкин [packin.ru]
Строение гипертаблиц ] Интерфейс гипертаблиц ] Навигация в таблицах ] Изменение данных в таблицах ] [ Дополнительные возможности таблиц ]

Дополнительные возможности таблиц


В этом разделе описан удобный для пользователя Режим просмотра и ряд возможностей дополнительной настройки для разработчика табличного интерфейса.

Дополнительные возможности табличного интерфейса.


Режим просмотра.

Это режим согласованной работы двух таблиц, между которыми устанавливается зависимость "главная - детальная". Когда меняется позиция активной ячейки в главной таблице, то синхронно с этим меняется содержание детальной таблицы. В детальной таблице заглавная пара аспект-объект устанавливается такой, какой она стала бы в главной таблице, если бы там была нажата клавиша Enter. Т.е. детальная таблица показывает состояние главной таблицы как бы на один шаг навигации вперед. Этот режим делает существенно более комфортным многие виды просмотров.

Режим просмотра устанавливается  клавишей Ctrl-W или выбором пункта контекстного меню Просмотр (Lookup) в таблице, предполагаемой на роль главной. После этого данный пункт меню помечается галочкой, и образуется окно для детальной таблицы. Все прочие окна кроме пары таблиц сворачиваются, а пара таблиц главная-детальная раскладывается на весь экран.

Детальную таблицу можно сделать главной в другой паре таблиц.

Зависимость детальной таблицы от главной отменяется щелчком мыши, удаляющем отметку против пункта меню Просмотр(Lookup) в главной таблице. Детальная таблица при этом не удаляется, а просто становится обычной независимой таблицей.

Заголовки столбцов.

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

Любые нужные пользователю заголовки для столбцов таблицы можно установить в текстовых атрибутах дескриптора аспекта. В атрибуте TITLE - можно указать заголовок для аспектного столбца. В атрибуте TITLR - можно указать заголовок для объектного столбца, соответствующего данному аспекту.

Но проще изменить заголовок прямо на месте, щелкнув по нему мышью при нажатой клавише CTRL.

Текст заглушки.

В некоторых случаях бывает удобно, чтобы при отсутствии связей по некоторому аспекту у объекта, в соответствующей ячейке отображался некий текст вместо пустоты. Например, отсутствие супруги отображалось бы текстом "холост". Тогда нужно приписать этот текст аспекту, (точнее его дескриптору) в атрибуте NO_TXT.

Маска ввода.

Для контроля правильности ввода в текстовые значения, соответствующему аспекту должен быть приписан шаблон ввода. Этот шаблон приписывается дескриптору аспекта в атрибуте MASK.

Шаблон представляется текстом, состоящим из трех частей, разделенных между собой символами ";". В первой части записываются специальным образом символы, которые можно вводить (см. Таблицу... ниже) и символы, добавляемые маской. Во второй части указывается 0 или 1, в зависимости от того, нужно или нет сохранять во введенном тексте символы, добавленные маской. В третьем разделе указывается символ, используемый для обозначения тех незаполненных вводом позиций.

Таблица символов шаблона маски.

Символ

Назначение

! Наличие символа "!" значит, что недостающие символы во введенном тексте предваряются пробелами, а отсутствие его значит, что пробелы размещаются в конце.
> Символ значит, что все последующие за ним символы должны вводиться в верхнем регистре, пока не кончится маска, или пока не встретится символ "<".
< Символ значит, что все последующие за ним символы должны вводиться в нижнем регистре, пока не кончится маска, или пока не встретится символ ">".
<> Символы значат, что далее анализ регистра не производится.
\ Символы, следующие за "\" являются буквенными, а не специальными символами маски.
L В данной позиции должна быть буква.
l В данной позиции может быть только буква или ничего.
A В данной позиции должна быть буква или цифра.
a В данной позиции может быть только буква или цифра или ничего.
C В данной позиции должен быть любой символ.
c В данной позиции может быть любой символ или ничего.
0 В данной позиции должна быть цифра.
9 В данной позиции может быть цифра или ничего.
# В данной позиции может быть цифра или знак "+" или знак "-" или ничего.
: Символ используется для разделения часов минут и секунд.
/ Символ используется для разделения дней месяцев и годов в датах.
_ Символ означает автоматическую вставку в текст пробела.

Например, маска для ввода номера телефона может иметь вид.

(999)000-00-00;0;_

Аспект содержимого класса.

Эта возможность несколько расширяет полезность режима просмотра. Можно присвоить некоему классу один из его аспектов в атрибуте BODYATR дескриптора класса. И этот аспект будет считаться аспектом содержимого данного класса. Тогда, если таблица представителей данного класса будет главной в режиме просмотра, и активным будет столбец с именами этих сущностей, то в детальной таблице будет отображаться аспект содержимого данного объекта, а не что-либо еще. Это позволит видеть в главной таблице некий список имен, а с каждым именем будет связан, например, некоторый текст, видный в детальной таблице. Т.е. таким способом мы получаем средство для быстрого просмотра текстов.

Порождающий аспект класса.

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

Например, у нас есть база данных для классификации видов фауны. Допустим мы смотрим на таблицу, где собраны все виды семейства кошачьих: кошка, лев, тигр и т.д. Теперь, если мы нажимаем на Esc, то по умолчанию мы попадаем в таблицу представителей для класса Семейство, т.е. таблицу всех семейств, которых сотни. И семейство кошачьих окажется рядом с семействами птиц и рыб!

Наверное, более логичным было бы нам попасть в таблицу не всех вообще семейств животных, т.е. таблицу представителей класса "Семейство", а в таблицу семейств отряда хищных, куда входит семейство кошачьих. Для того чтобы это работало, необходимо объявить порождающий аспект для класса "Семейство", и это должен быть тот аспект - атрибут класса Семейства, который связывает Семейство с Отрядом. И если мы так сделаем на всех уровнях иерархии, то, нажимая Enter, мы будем опускаться по иерархии, а, нажимая на Esc - так же постепенно подниматься, а не "вылетать" сразу на верхний уровень.

Порождающий атрибут-аспект задается для класса в атрибуте ROOTATR (из отношения того же имени) для описателя данного класса. Строго говоря, свойство ROOTATR класса задает нестандартный способ реакции на клавишу Esc


Все права защищены. © 2000-2004 РосНИИ ИИ
http://artint.ru
Copyright. © 2000-2004 by RRIAI
Александр Иосифович Пацкин [mailto:aleksandr@tochka.ru].
29/09/04

К началу документа.