Программирование >>  Реализация целостности данных 

1 ... 82 83 84 [ 85 ] 86 87 88 ... 124


лолжньг знать, к како ной форме или ее фрагменту относится открытая вспомогательная форма. Чтобы напоминать им об этом, включите во вспомогательную форму некоторые элементы: основного диалогового окна, из которого была открыта эта форма. Не обяза-тельн щап, во вспомогательную форму всю группу элементов,

к которой она относится - достаточно лишь информации, необходимой для привязки вспомогательной формы к основной.

Существует и другое решение: сделать вспомогательные формы модальными. Пожалуй, это один из тех редких случаев, когда модальность вполне уместна, поскольку помогает неразрывность контекста пользовательского интерфейса. Но не забывайте, что модальные формы сильно стесняют пользователей, ограничивая свободу их действий. Поэтому я советую использовать эти формы только

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

Если вы не хотите использовать множество вспомогательных окон, разместите всю дополнительную информацию в нескольких подчиненных формах (subforms) главной формы (в у Basic это специальные элементы управления фреймы). Мне не очень нравится такой подход, поскольку так довольно сложно поддерживать контекст. Необходимо предусмотреть механизм шяющий пользователю в любой момент определить, какую именно из подчиненных форм он видит на экране своего монитора. Если отображение форм на экране управляется при помоши меню, то не так уж просто подсказать пользователю, что для доступа к дополнительным данным из этой формы он должен воспользоваться командами меню. Кнопки или переключатели тоже не спасут - пользователи могут не понять, почему после щелчка этой кнопки экран принимает совершенно другой вид. Я все-таки считаю оптимальным решением форму с расположенными на ней вкладками и рекомендую применять этот известный и испытанный метод как можно чаще. Зачем прибегать к нестандартным решениям там, где можно обойтись привычными средствами?

Связи один к одному

в большинстве случаев процесс разработки формы, представляющей две между которыми существует связь к одному ,

принципиально ничем не отличается от разработки формы, представляющей простую сущность. Можно написать запрос, объединяющий поля двух таблиц, и затем работать с полученным результатом, как с одной простое мстью. Если этот результат содержит множество



ЧАСТЬ 3 Проекш()Оваяке гктьэовательскоп) интерфейса

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

Когда основная сущность является участником нескольких связей один к одному , наилучший вариант композиции формы определяется самой природой связей. Есди связи между сущностями могут существовать все одновременно, рассматривайте их как единый набор записей, используя одну или несколько форм для отображения

данных пользователю. Этот случай опять-таки принципиально ничем не отличается от проектирования формы, представляющей одну простую сущность.

Однако во многих случаях связи между сущностями являются взаимоисключающими: например, связь между сущностями Product (Продукт), Beverage (Напиток) и Cheese (Сыр). Каждый продукт может относиться к одной из категорий, но не к обеим одновременно - это может либо напиток, либо сорт сыра. В таких ситуациях используйте подчиненные формы или фреймы - разумеется, если вы не слишком стеснены ограничениями на размеры основной формы. Здесь вам не нужно заботиться, чтобы пользователь понял, что в данном контексте есть данные, непосредственно связанные с основной формой - таких данных просто твует. Более того, вкладки, размещенные на основной форме, только запутают пользователя.

Если же вам все-таки не удается разместить всю необходимую информацию в одной форме, примените метод, который мы уже обсуждали, когда говорили о моделировании простых сущностей. Разбейте все элементы формы на группы и расположите эти группы на

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

этих атрибутов и используйте его в качестве заголовка вкладки. Если

заголовок вкладки (или название кнопки) будет меняться каждый раз

по мере выборки новых записей из таблицы, вы рискуете окончательно запутать пользователя.

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

меняться всякий раз, когда выбрана следующая запись. Если на первой вкладке нет атрибутов подчиненной сущности, внешний вид фор-



ГЛАВА 1 остямй и фермами системы

мы не меняется, и это позволит увеличить производитель-

ность, так как отпадет необходимость частого обновления экрана.

Связи один ко многим

Во многих формах представлены сущности, связанные отношениями один ко При компоновке таких форм, как правило, не воз-

никает особых трудностей, поскольку существует правило: в форме должны быть представлены связи один ко многим , а не многие к одному .

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

Ни в коем случае нельзя допускать обратной ситуации: когда пись, участвующая в связи со стороны многие , является определяющей - это лишь приведет к ненужному усложнению или противоречиям в логике работы системы и запутает пользователя.

Итак, вы убедились, чт ись, участвующая в связи со стороны

один , управляет отображением данных в форме. Теперь решите, как

именно будут отображаться пользователю записи, участвующие в связи со стороны многие . У вас два варианта для выбора: выводить все записи сразу или отображать их по одной. При этом многое зависит

от объема информации, выводимой пользователю: для отображения в данной форме из каждой записи могут выбираться или несколько полей, или все.

В первом случае вы можете спроектировать форму так, чтобы в ней отображались сразу все записи. На рис. 14-2 для отображения записей, участвующих в связи со стороны используется подчиненная форма, размещенная в окне с непрерывным режимом просмотра. В подчиненной форме отображаются четыре поля записей,

участвующих в связи со стороны многие . Выборка данных выполняется из базы данных

Полоса прокрутки справа на подчиненной форме означает, что не

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



1 ... 82 83 84 [ 85 ] 86 87 88 ... 124

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика