FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9145
Вход
Ориентирование в Grid’е(ч.2)

Рассмотрен случай взаимодействия функции ObjToClient() с группой свойств [Dynamic…], для получения значения неявного свойства Column.Left. Без претензий на законченное решение.


 
Прислал: Ившев Дмитрий   Категория: Интерфейс


Современный вариант Grid’а(VFP-8/9) казалось бы, насыщен изысками интерфейса под завязку. Однако существуют приложения, в которых Fox’совский Grid заставляет программиста ломать голову над проблемой компактного размещения информации в клетках таблицы. Решение общеизвестно, пожертвовать числом строк в пользу большего числа элементов в каждой из них. Стандартный Container или Control позволяют легко расположить нужную коллекцию объектов в несколько этажей. Но заголовок Grid’а по-прежнему прост, а при включенных XP-схемах еще и весьма коварен. Текст и картинка, вот и все, что можно себе позволить. Естественно, что Fox-сообщество не сидело сложа руки и создавало заменители Header’а. Базовым классом для такого псевдо - заголовка чаще всего выбирался Container. Штатный Header с помощью свойства HeaderHeight низводился до нуля, и пока форма полностью вмещала Grid по ширине, а размеры и положение колонок оставались неизменными, все было Ok. Однако для повторения естественного взаимодействия связки «заголовок - колонка» приходилось писать не самый простой код, а иногда и приплясывать с бубном. Будь у колонки штатное свойство Left с возможностью назначения ему события Left_Assign, синхронизация любых объектов стала бы значительно более простым делом. Как вытянуть значение неявного свойства Column.Left знают практически все. Функция ObjToClient() честно сообщает, где начинается очередная секция. Теперь осталось найти диспетчера, который бы уведомлял о перерисовке Grid’а. Например, какое-либо из свойств группы [Dynamic…]. Пользовательская функция, использованная в качестве начинки любого из этих свойств, срабатывает даже при проносе стороннего окна над формой содержащей Grid.
Вот собственно и вся идея синхронизации. В качестве иллюстрации использования метода представлена форма, в которой для колонок Grid’а созданы заголовки на базе Container’а, имитирующие штатные. Подобным образом можно выводить любые объекты в нужных координатах в зависимости от состояния сетки.

 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (2.375) Вложение [12.73]kb
Дополнения пользователей
Ориентирование в Grid’е(ч.2)
[+][?]
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика