«дизайнерский» момент 🙂
- Автор: Still Zero
- Дата публикации: 30.12.2005
- Уровень: начальный
Я думаю, что зачастую, размещая элементы на окне просмотра данных, вы сталкиваетесь с ограничением размеров экрана. Существует такая вещь как splitter — разделитель, который помогает уменьшить/увеличить зону видимости листа. Как он работает можно посмотреть, например, в Проводнике Windows.
Но сегодня речь пойдет не о разделителе 🙂 … а о похожей на него вещи, я не знаю как это правильно называется — назвал Full splitter — полный разделитель. Задача, которая ставится перед этим элементом — полностью скрыть часть окна слева (или справа) от разделителя.
Full splitter реализовывается буквально несколькими строками кода.
Между областями, которые необходимо разделить положим кнопку. Установим на кнопку клавишу быстрого вызова (Key). В качестве клавиши может выступать, например, кнопка с буквой «Ё», или, что тоже, знаком «тильда». Также, напишем tip-чик на кнопке, что то вроде «Скрыть/показать области». Текст с кнопки необходимо удалить. Желательно установить другой вид курсора для кнопки.
Необходимо завести «флаговую» переменную, которая будет показывать скрыта ли часть или нет.
При нажатии на кнопку-разделитель должны выполняться следующие действия:
- определяемся, что необходимо делать — скрывать область или показывать (по «флаговой» переменной);
- если скрывать — скрываем все контролы левее (правее) разделителя — команда HIDE и изменяем размеры контролов правее (левее) разделителя на величину освободившегося места, также меняем положение самого разделителя — это свойства Prop:Xpos, Prop:Ypos, Prop:Width, Prop:Height;
- если показывать, то показываем ранее скрытие контролы — команда UNHIDE, и восстанавливаем предыдущее положение контролов
Пример собран на C55H, ABC.
Я использую стандартный ABC-ресайзер (resizer). Возможно для вашего ресайзера код обновления будет несколько другим. Все действия со сплиттером я вынес в простой локальный класс. Собственно такой сплиттер был подсмотрен в EMS MS SQL manager-е SplitDemo (907)