Классика
Поповер с порталом в другом портале – нельзя, но если хочется…

FMPro 13  Демо-файл (архив RAR 1.5 MB)


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

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

Итак, делаем по пунктам на примере БД "Компании-Отделы-Сотрудники" (подробнее см. в демо-файле).

1. Нарисуйте кнопку поповера поначалу обязательно вне главного портала "Сотрудники" - на рисунке это серенькая кнопка с красной пунктирной границей. Разместите в поповере обычные поля из таблицы Personal и нужный портал(ы), например, "Телефоны" и "Email" (см. рисунок). Задайте поповеру имя объекта "Popover".


2. В строчке главного портала, где удобно, нарисуйте кнопку, которая будет запускать раскрытие нашего поповера. На рисунке она спрятана под фото сотрудника.


3. Назначьте этой кнопке скрипт-степ Go To Object ["Popover"]  - по нажатию на нее переходим в поповер, поповер открывается, далее делаем с этим, что хотим.

После того как все заработало. кнопку поповера можно перетащить куда угодно, например, в середину (по вертикали) главного портала и разместить справа от того места, где в режиме Browse будут расположены (видны) кнопки, открывающие поповер (см. рисунок). Вот тут кнопку поповера, конечно, желательно сделать невидимой. 

Поскольку поповер был создан не в главном портале, главный портал "не считает" его своим и, стало быть портал в поповере никуда не провалится. 

Один этот поповер будет обслуживать все строчки главного портала, показывая в своем "теле" и внутреннем портале только те данные, которые связаны с выбранной строкой главного портала, если такая фильтрация необходима и реализована. В демо-файле это реализовано с помощью связи таблицы Pro с таблицами Personal, Телефоны и АдресаEmail по глобальному полю GL IDPerson, задаваемому равным полю IDPerson выбранного в главном портале сотрудника. 


Все готово!

Натяжка состоит только в том, что при выборе любой видимой в главном портале строчки (хоть верхней, хоть нижней) поповер всегда будет раскрываться в одном и том же месте - посередине. Ну и ладно - зато полноценно решена главная задача - "портал/в поповере/в портале". Тем более, что зачастую поповер и так вылезает за пределы портала, что зрительно "отвязывает" его от выбранной строчки портала. Главное, чтобы выбранная строка была выделена, например другим цветом фона. 

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

Получим вполне себе наглядную иллюзию смещающейся стрелки:

Что и требовалось.




Автор: FMLogia

Тэги: поповер, портал, фильтр

← Вернуться к списку статей