Древовидный (многоуровневый) список на основе стадартного ListBox.Источник: Accessoft
В этой статье рассказывается о необычном применении всем известного контрола - стандартного ListBox. Его удалось модифицировать таким образом, что получилось нечто, подобное контролу TreeView - древовидному списку. Идея создания такого списка появилась совершенно неожиданно (для меня во всяком случае). Казалось бы: - ну что еще можно выжать из стандартного ListBox? Уж излазили и избороздили его вдоль и поперек. Однако оказалось, что можно. Вообще, есть несколько вариантов реализации подобного интерфейса. Рассмотрим их в порядке увеличения сложности понимания для начинающих:
Прокомментирую слегка второй способ: Запрос UNION, как следует из названия, запрос на объединение. Под объединением в данном случае будет пониматься объединение содержимого нескольких таблиц, откуда берутся данные для списка. ChrW(9660, 9658) - это коды символов (треугольников). Один из них вертикальный, другой горизонтальный. В принципе Вы можете изменить их на любые другие. Для этого Пуск - Все программы - Стандартные - Служебные - Таблица символов. Выбираем символ, смотрим, какой у него код, и вставляем в текст модуля. В профессиональных приложениях обычно добавляют интерфейс навигации при помощи «горячих клавиш». Это действительно удобнее и во многих случаях быстрее, чем кликать мышью. В данном примере применена навигация при помощи клавиш, к которым мы привыкли, работая с «настоящим» TreeView. Думается, что решение еще не окончательное. Можно, например, оформить контрол как класс, ввести события добавления, удаления "узла" и прочии атрибуты классического TreeView. Если задуматься над вопросом создания спец. символов, то можно, наверное, сделать свои символы, похожие на иконки. В качестве примера, привожу оба варианта с открытым кодом. В примере используются таблицы из программы "Склад" уважаемого Palarm, т.к. в общем-то не без его участия зародилась эта идея. Пример, как это все работает, Вы можете скачать ниже. |