Adv TreeView
Надо бы чтоб по умолчанию у каждой ноды выводился плюсик слева (что мол её можно разворачивать) и только после щелчка по ноде проверялось, а есть ли на самом деле записи в подчинённых таблицах. Такое поведение у Tree стандартного эксплорера Windows.
Прийдётся наверное рисовать самому ноды.
А другие варианты есть?
Подскажите pls.
Содержимое нормализованной БД мне необходимо выводить в виде дерева.
Надо бы чтоб по умолчанию у каждой ноды выводился плюсик слева (что мол её можно разворачивать) и только после щелчка по ноде проверялось, а есть ли на самом деле записи в подчинённых таблицах. Такое поведение у Tree стандартного эксплорера Windows.
Прийдётся наверное рисовать самому ноды.
А другие варианты есть?
Подскажите pls.
Я не совсем понял, что мешает это сделать?
Содержимое нормализованной БД мне необходимо выводить в виде дерева.
Надо бы чтоб по умолчанию у каждой ноды выводился плюсик слева (что мол её можно разворачивать) и только после щелчка по ноде проверялось, а есть ли на самом деле записи в подчинённых таблицах. Такое поведение у Tree стандартного эксплорера Windows.
Прийдётся наверное рисовать самому ноды.
А другие варианты есть?
Подскажите pls.
Есть набор компонентов в котором вроде как этот функционал присутствует. Поларис кажется. Я лично с ним не работал, один из моих подчиненых, пытался их задействовать, патчил - вроде чего-то получилось. Но в большинстве задач вполне достаточно работать со стандартным тривью, обширное дерево из базы - ИМХО неверное решение в большинстве задач.
Но это подчеркиваю ИМХО и к теме не относится :)
обширное дерево из базы - ИМХО неверное решение в большинстве задач.
Но это подчеркиваю ИМХО и к теме не относится :)
На первый взгляд - да.
Но мне в новый версии прикладной проги это, по задумке, должно обеспечить интуитивно понятную навигацию по сложной структуре данных.
Самые большие опасения конечно в вопросе: каких такой подход накладных расходов потребует.
Потому и возник вопрос. Надо чтобы данные в ветки подкачивались по мере их разворачивания. Сразу данные в дерево не закачаешь - ни ресурсов, ни терпения ждать кэширование не хватит, и многопользовательская работа однако. Даже хитрей: все операции с данными инкапсулирует движок, при необходимости его работа логится и синхронизируется с визуальным деревом.
Просто с OnCustomDrawItem я никогда не связывался. В принципе в борланде есть пример CustomDraw, но какие же там линии дерева и кнопки +/- страшные. Прийдётся видно косить под мелкософт и пытаться по человечески отрисовать эти линии?
На первый взгляд - да.
Но мне в новый версии прикладной проги это, по задумке, должно обеспечить интуитивно понятную навигацию по сложной структуре данных.
Самые большие опасения конечно в вопросе: каких такой подход накладных расходов потребует.
Потому и возник вопрос. Надо чтобы данные в ветки подкачивались по мере их разворачивания. Сразу данные в дерево не закачаешь - ни ресурсов, ни терпения ждать кэширование не хватит, и многопользовательская работа однако. Даже хитрей: все операции с данными инкапсулирует движок, при необходимости его работа логится и синхронизируется с визуальным деревом.
Просто с OnCustomDrawItem я никогда не связывался. В принципе в борланде есть пример CustomDraw, но какие же там линии дерева и кнопки +/- страшные. Прийдётся видно косить под мелкософт и пытаться по человечески отрисовать эти линии?
В большинстве случаев, все зависит от количиства ветвей - не всегда рациональным(ИМХО в большинстве случаев) является загрузка данных по мере разворачивания ветвей. Особенно это относится к сетевым приложениям. Как правило, наиболее эффективно загрузить данные отдельным потоком в процессе инициализации приложения и работать с локальной копией в памяти. Как правило затраты на загрузку, синхронизацию с кликом по дереву, элементы предсказания переходов и пр. по ресурсам сравнимы с одномоментным формированием дерева из датасета на основе ХП. А скорость работы с приложением отличается и иногда на пару порядков. + к тому, постоянный коннект к базе, тоже имхо не лучшее в этой жизни. Хотя существуют ситуации когда выгоднее грузить данные в момент разворачивания ветви. Кстати, TheBat! - интересно как у них реализовано? Думаю, в зависимости от объема.
А с отрисовкой ничего в принципе страшного нет. Главное в ветвях не запутаться :)
Содержимое нормализованной БД мне необходимо выводить в виде дерева.
Надо бы чтоб по умолчанию у каждой ноды выводился плюсик слева (что мол её можно разворачивать) и только после щелчка по ноде проверялось, а есть ли на самом деле записи в подчинённых таблицах. Такое поведение у Tree стандартного эксплорера Windows.
Прийдётся наверное рисовать самому ноды.
А другие варианты есть?
Подскажите pls.
Если я правильно понял вопрос, то для отрисовки нодов подойдёт EHLib.
Данные в ноды, имхо, лучше грузить в момент разворачивания нода.
А скорость работы с приложением отличается и иногда на пару порядков. + к тому, постоянный коннект к базе, тоже имхо не лучшее в этой жизни.
Позвольте с Вами не согласиться. Хотя, конечно, смотря какая СУБД. У меня основная СУБД -- Oracle. Ей практически всё равно, сколько пользователей подключено и как долго продолжается сессия. А оптимизацию экземпляра и базы данных (и мониторинг) гораздо проще проводить, скажем, на тысяче длинных сессий, нежели на миллионе коротких.