Деревовидний (багаторівневий) список на основі стадартного ListBox.

У цій статті розповідається про незвичайний застосуванні всім відомого контрола – стандартного ListBox. Його вдалося модифікувати таким чином, що вийшло щось, подібне контролю TreeView – Деревовидного списку. Ідея створення такого списку з’явилася абсолютно несподівано (для мене у всякому разі). Здавалося б: – ну що ще можна вичавити зі стандартного ListBox? Вже облазили і зорали його вздовж і впоперек. Однак виявилося, що можна.


Взагалі, є кілька варіантів реалізації подібного інтерфейсу. Розглянемо їх у порядку збільшення складності розуміння для початківців:



в найпростішому виконанні, це можуть бути просто кілька списків, накладених один на одного, і по черзі проявляються через властивість Visible. У цьому випадку потрібно буде придумувати процедуру, яка на подія, наприклад «подвійний клік» по одному із списків, приховує інші. Думаю, таке під силу навіть починаючим Access – дизайнерам.


другий спосіб вимагає деякої підготовки програмування VBA – тут використовується один список, динамічно заповнюваний. Вміст буде залежати від значення списку в момент кліка. Реалізація заснована на використанні UNION запитів. Можна було звичайно і просто заповнювати список за допомогою AddItem, але ідея використання запитів здалася найбільш привабливою.


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


Запит UNION, як випливає з назви, запит на об’єднання. Під об’єднанням в даному випадку буде розумітися об’єднання вмісту декількох таблиць, звідки беруться дані для списку. ChrW (9660, 9658) – Це коди символів (трикутників). Один з них вертикальний, інший горизонтальний. В принципі Ви можете змінити їх на будь-які інші. Для цього Пуск – Всі програми – Стандартні – Службові – Таблиця символів. Вибираємо символ, дивимося, який у нього код, і вставляємо в текст модуля.


У професійних додатках зазвичай додають інтерфейс навігації за допомогою «гарячих клавіш». Це дійсно зручніше і в багатьох випадках швидше, ніж клікати мишкою. У даному прикладі застосована навігація за допомогою клавіш, до яких ми звикли, працюючи з «справжнім» TreeView.


Думається, що рішення ще не остаточне. Можна, наприклад, оформити контрол як клас, ввести події додавання, видалення “вузла” та інші атрибути класичного TreeView. Якщо замислитися над питанням створення спец. символів, то можна, напевно, зробити свої символи, схожі на іконки.


Як приклад, наводжу обидва варіанти з відкритим кодом. У прикладі використовуються таблиці з програми “Склад” шановного Palarm, тому в общем-то не без його участі зародилася ця ідея.


Приклад, як це все працює, Ви можете завантажити нижче.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*