(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Древовидный (многоуровневый) список на основе стадартного ListBox.

Источник: Accessoft

В этой статье рассказывается о необычном применении всем известного контрола - стандартного ListBox. Его удалось модифицировать таким образом, что получилось нечто, подобное контролу TreeView - древовидному списку. Идея создания такого списка появилась совершенно неожиданно (для меня во всяком случае). Казалось бы: - ну что еще можно выжать из стандартного ListBox? Уж излазили и избороздили его вдоль и поперек. Однако оказалось, что можно.

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

в простейшем исполнении, это могут быть просто несколько списков, наложенных друг на друга, и поочередно проявляемых через свойство Visible. В этом случае нужно будет придумывать процедуру, которая на событие, например «двойной клик» по одному из списков, скрывает остальные. Думаю, такое по силам даже начинающим Access - дизайнерам.

второй способ требует некоторой подготовки программирования VBA - тут используется один список, динамически заполняемый. Содержимое будет зависеть от значения списка в момент клика. Реализация основана на использовании UNION запросов. Можно было конечно и просто заполнять список с помощью AddItem, но идея использования запросов показалась наиболее привлекательной.

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

Запрос UNION, как следует из названия, запрос на объединение. Под объединением в данном случае будет пониматься объединение содержимого нескольких таблиц, откуда берутся данные для списка. ChrW(9660, 9658) - это коды символов (треугольников). Один из них вертикальный, другой горизонтальный. В принципе Вы можете изменить их на любые другие. Для этого Пуск - Все программы - Стандартные - Служебные - Таблица символов. Выбираем символ, смотрим, какой у него код, и вставляем в текст модуля.

В профессиональных приложениях обычно добавляют интерфейс навигации при помощи «горячих клавиш». Это действительно удобнее и во многих случаях быстрее, чем кликать мышью. В данном примере применена навигация при помощи клавиш, к которым мы привыкли, работая с «настоящим» TreeView.

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

В качестве примера, привожу оба варианта с открытым кодом. В примере используются таблицы из программы "Склад" уважаемого Palarm, т.к. в общем-то не без его участия зародилась эта идея.

Пример, как это все работает, Вы можете скачать ниже.

Ссылки по теме

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 07.11.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft 365 Apps for business (corporate)
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft Office для дома и учебы 2019 (лицензия ESD)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерные книги. Рецензии и отзывы
Каждый день новые драйверы для вашего компьютера!
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100