|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Назрела насущная необходимость в многоколончатом treeview. Кто что использует для этого? Может кто нить посоветует готовый контрол? Облазил полинтернета не могу найти ничего подходящего. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2008, 05:11 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Сходите на http://foxclubmagazine.foxhelp.ru/mi0810.aspx Там есть пример листвью с отступами. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2008, 07:39 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2008, 11:10 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Дороговато будя : авторSingle Developer License: $399 Upgrade from version 6.0: $239 /developer Multi-Developer Licenses: ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2008, 11:18 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Хорошая штука. НО дороговато все же. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2008, 11:22 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Бесплатных вы не найдете (если только ломаные). Просто потому, что на практике это почти бесполезная вещь. Как и дерево вообще. Поигрался и бросил. Она красиво выглядит, но работать с ней трудно. Трудно для пользователя. Особенно, если много узлов. Как правило, делают все-таки два объекта: оглавление (TreeView) и содержание (Grid). Причем содержание можно делать на базе PageFrame, чтобы можно было динамически менять структуру Grid в зависимости от типа узла или уровня вложенности. Отдельные Grid на каждой странице PageFrame и активизация страниц по необходимости. Возможно, если вы опишите задачу, для решения которой, как вам кажется, нужен именно многоколоночный Grid, вам подскажут можно ли решить задачу другими способами. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2008, 14:05 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ВладимирМБесплатных вы не найдете (если только ломаные). Просто потому, что на практике это почти бесполезная вещь. Как и дерево вообще. Поигрался и бросил. Она красиво выглядит, но работать с ней трудно. Трудно для пользователя. Особенно, если много узлов. Как правило, делают все-таки два объекта: оглавление (TreeView) и содержание (Grid). Причем содержание можно делать на базе PageFrame, чтобы можно было динамически менять структуру Grid в зависимости от типа узла или уровня вложенности. Отдельные Grid на каждой странице PageFrame и активизация страниц по необходимости. Возможно, если вы опишите задачу, для решения которой, как вам кажется, нужен именно многоколоночный Grid, вам подскажут можно ли решить задачу другими способами. ну насчет дерева я не соглашусь. у нас написано несколько классов на основе TreeView к нему прикручен поиск и куча разных фишечек. все работает просто замечаетльно и удобно, тем более у нас куча древовидных справочников. Все эти танцы с бубном с изменением грайда по нодеклику или там создание дополнительных текстбоксов и комбо уже давно оттанцованы и пройдены. именно поэтому и пришло понимание необходимости многоколончатого тривью. Он используется в очень многих приложениях и весьма успешно. с его помощью интерфейс упрощается в разы. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 02:44 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Вы пользователей-то спрашивали? Если вам кажется , что с объектом работать удобно, то это только потому, что вы уже "смотреть на него не можете". Также не следует спрашивать у опытных пользователей, давно работающих с вашей системой. У них те же проблемы. "Глаз замылился". Качество интерфейса определяется "обучаемостью" нового персонала. Как быстро новый пользователь научится находить нужную информацию. Сколько времени он будет тратить на этот процесс. Главный недостаток работы с деревом - сложность поиска нужных данных. Вы вынуждены создавать паралельную, дублирующую, систему навигации и поиска. Т.е. смотрим "картинку" TreeView, но реальная работа происходит в "плоских" таблицах и списках. И возникает вопрос: а зачем этот TreeView вообще нужен, если основная работа происходит вне этого объекта? Даже та работа, для которой он вроде бы и создавался - облегчение поиска и навигации. Не облегчает TreeView ни поиска, ни навигации. Только усложняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 15:46 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ВладимирМВы пользователей-то спрашивали? Если вам кажется , что с объектом работать удобно, то это только потому, что вы уже "смотреть на него не можете". Также не следует спрашивать у опытных пользователей, давно работающих с вашей системой. У них те же проблемы. "Глаз замылился". Качество интерфейса определяется "обучаемостью" нового персонала. Как быстро новый пользователь научится находить нужную информацию. Сколько времени он будет тратить на этот процесс. Главный недостаток работы с деревом - сложность поиска нужных данных. Вы вынуждены создавать паралельную, дублирующую, систему навигации и поиска. Т.е. смотрим "картинку" TreeView, но реальная работа происходит в "плоских" таблицах и списках. И возникает вопрос: а зачем этот TreeView вообще нужен, если основная работа происходит вне этого объекта? Даже та работа, для которой он вроде бы и создавался - облегчение поиска и навигации. Не облегчает TreeView ни поиска, ни навигации. Только усложняет. Мы занимаемся разработкой пользовательских интерфейсов уже лет 15 и почти всеэто время в фокспро, начиная с 2.0. За это время было перепробовано много всего. в результате проб и ошибок наработано определенное количество классов в приемов построения интерфейсов. Назови мне такое приложение, где бы использовались ПЛОСКИЕ справочники. У нас специфика такова что ВСЕ справочники имеют древовидную структуру (то есть, побиты на группы, причем уровень вложенности групп может быть очень разный). Теперь подскажи мне способ отображать древовидные структуры лучше, чем это делает тривью. Что касается поиска, то, по моему, я говорил - поиск интергрирован прямо в класс,которому передается таблица определенной структуры. Поиск контекстный и очень быстрый. Если Вы считаете, что тривью не ускоряет ни навигации ни поиска, то я, исходя из своего опыта, считаю обратное. И не только я. Сейчас нет ни одной крупной программы, которая могла бы обойтись без тривью. А вообще разговор не о том. Мне нужен определенный контрол и я знаю КАК и ЗАЧЕМ его использовать. ВОпрос стоит, что либо разрабатывать его самостоятельно, либо использовать что-то, что уже кто-то разработал. но то, что он нужен и я буду его использовать у меня сомнений нет. Кстати, если интересно классом могу поделиться. Правда не уверен, что выберу время чтобы хорошенько его задокументировать, тем более что там используется несколько классов, каждый из которых может быть использован самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 16:54 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendrive, милости просим, FoxClub , делитесь, а практика и время вас/нас рассудят. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 17:03 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendrive Вы настолько привыкли использовать TreeView, что просто не видите других способов организации данных. Есть запись, у нее есть реквизиты (поля). Например, признак группы. Хотите "дерево"? Добавьте еще один реквизит (поле) - подгруппа. И какие проблемы вывести это как линейный список? Это один из вариантов. Можно еще использовать связанные таблицы (один уровень - одна таблица). Есть и другие варианты. Более того, есть другие принципы организации работы. Неопределенное количество уровней вложенности - это либо ошибка проектирования, либо специфическая область деятельности. Да и то, во втором случае, использование TreeView, как правило, служит не для поиска, а для наглядного представления некой отдельной (небольшой) структуры. TreeView для поиска не приспособлен. Он вообще этого не умеет. Никак. Классический пример - проводник Windows. Иерархия директорий, каталогов, папок. Вы сели за чужой компьютер. Вы не знаете где именно, в какой папке, находится нужный вам файл. Как вы будете осуществлять поиск с помощью дерева? Очевидно, просто тупо открывая ВСЕ ветки. Т.е. вообще ВСЕ. У вас нет других вариантов. Какое уж тут ускорение... А как же поиск? А поиск файла, осуществляется в линейном списке! Результат поиска - это линейный список БЕЗ дерева. Другими словами, поиск осуществляется ВНЕ идеологии древовидной струкутры. И только ПОСЛЕ окончания поиска вы делаете обратное преобразование. На основании найденной информации достраиваете иерархию. Получается двойное преобразование - из дерева в линейный список, затем поиск в этом линейном списке, затем преобразование результата в дерево. И зачем тут вообще нужно дерево? Почему бы не выбросить этот явно лишний элемент? ---------------------------------- Впрочем, вы уже не в состоянии сделать что-то другое. Вам мешает наработанный FrameWork. Теперь уже не вы разрабатываете интерфейс, а созданный FrameWork диктует вам принципы работы. Вы вынуждены подстраиваться под существующую систему и ее интерфейс. Без вариантов. Собственно, поэтому можете не обращать внимание на все ранее сказанное. Даже если вы и захотите, вы не сможете это все применить на практике. Созданный FrameWork не позволит. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 17:45 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendrive Мы занимаемся разработкой пользовательских интерфейсов уже лет 15 и почти всеэто время в фокспро, начиная с 2.0. За это время было перепробовано много всего. в результате проб и ошибок наработано определенное количество классов в приемов построения интерфейсов. Назови мне такое приложение, где бы использовались ПЛОСКИЕ справочники. У нас специфика такова что ВСЕ справочники имеют древовидную структуру (то есть, побиты на группы, причем уровень вложенности групп может быть очень разный). Теперь подскажи мне способ отображать древовидные структуры лучше, чем это делает тривью. Что касается поиска, то, по моему, я говорил - поиск интергрирован прямо в класс,которому передается таблица определенной структуры. Поиск контекстный и очень быстрый. Если Вы считаете, что тривью не ускоряет ни навигации ни поиска, то я, исходя из своего опыта, считаю обратное. И не только я. Сейчас нет ни одной крупной программы, которая могла бы обойтись без тривью. Да.. интересный спор. Могу тоже подать свой голос к мнению ВладимирМ. Не считал, сколько лет уже занимаюсь разработкой программного обеспечения, но, как говорится, "Я уже столько забыл, сколько вы еще не знаете". Это шутка. А если серьезно, то, конечно, смотрятся иерархические справочники красиво. Собственно говоря, у нас в системы тоже почти все справочники иерархические. Но вот какая штука получилась.. Для ввода данных в справочник (операция не очень частая, согласитесь) иерархия помогает. Модно не торопясь найти нужную группу элемента и добавить в нее новый элемент. Но вот когда операционист использует такой справочник для выбора нужного элемента при оформлении документа (например, приходный ордер), то оказалось, что ему (операционисту) удобнее (т.к. значительно быстрее) иметь общий список всех элементов справочника в виде грида и хорошее средство для поиска (отбора) нужного элемента в этом гриде. Наблюдения показали, что опытный операционист НИКОГДА не использует, сначала выбор в "дереве" нужной группы в иерархии элементов, а потом, сам поиск элемента. Он ПОМНИТ ключевые параметры нужно элемента (название, код и пр.) и использует их для поиска в "плоском" гриде. Нам в системе даже пришлось добавить на формы выбора элементов справочника опцию ("искать в подгруппах"), которая выводит в гриде элементы ВСЕХ подуровней "дерева", т.е., фактически, отключает "дерево" и выводит в грид ВСЕ элементы справочника, а не только из выбранной ветке. На картинке показан пример использования такого режима выбора элемента справочника: Операционист примерно знает код элемента справочника (или его название) и начинает его вводить в поле кода. Грид начинает фильтровать по введенному коду и уменьшает выборку на экране. Операционист НЕ ХОЧЕТ выбирать группу в дереве. Он использует фильтрацию только в гриде. Мышкой он (опытный операционист) практически не пользуется и весь поиск нужного элемента занимает времени значительно быстрее, чем, если бы он сначала в дереве нашел нужную группу, а затем уже и сам элемент. Не очень опытный пользователь использует поначалу "дерево" для поиска элемента, но очень быстро, как мы заметили, он переходит в режим "отображения из всех подгрупп" и поиска в гриде. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 21:03 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
А мои пользователи вообще не хотят искать нигде: не в дереве, не в списке, не в гриде. Так и вводят каждый раз новое значение. Последняя идея - сделать ввод нового значения более трудным, чем его поиск. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 21:51 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Мне кажется будет проще поколдовать с гридом (поиграть подсветкой различных строк, добавить кнопочки с плюсиками и минусиками и т.д.) и сделать из него некое подобие дерева. Нежели пытаться воткнуть грид в дерево. В этом случае открывается большой простор для творчества. А дерево - слишком ограниченный элемент. Грид на порядок гибче. А вообще, я несколько раз пытался вписать дерево в различные программы. И каждый раз убирал его. Потому что упирался в ограниченость его функционала. Красиво ? Безусловно. У юзеров слюнки текли от восторга, когда видели раскрывающееся дерево (особенно завораживал процесс на медленных компах). Но дальше красоты дело не шло. Про поиск уже писали - получается двойная работа. Так что в дереве больше понтов, чем реальной помощи для юзера. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2008, 22:11 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendriveну насчет дерева я не соглашусь. у нас написано несколько классов на основе TreeView к нему прикручен поиск и куча разных фишечек. все работает просто замечаетльно и удобно, тем более у нас куча древовидных справочников. А я поддержу Gendrive . У меня регистрационно-поисковая система вся на деревьях. Т.е. таблица или выборка, каждой записи которой соответсвует уникальный ID загоняется в многоуровневый TreeView. У него есть свойства .OleTree.SelectedItem.Key .OleTree.SelectedItem.Index Отождествляя .SelectedItem.Key с ID через Seek мгновенно отождествляем TreeView с таблицей/выборкой. Я также осуществлял перенесение данных из одной таблицы в другую путём drag-drop с одного дерева на другое. Эффект великолепный и красиво смотрится... Иконки меняются, цвета перенесённых Nodes тоже... И PopUp на RightClik(), хотя этого свойства у него нет... К тому же ему доступен inc search. И как у Gendrive , на определённом уровне у меня возникла потребность в многоколоночном TreeView, как, наверное, более прогрессивном. Но сколько я форумы лет 5-ть назад не пытал, так никто толком ничего и не посоветовал. А в нэте что находил - слишком дорого стоило... Можно, как частный случай, использовать ListView, но хорошего описания не нашёл... Лично я усматриваю один недостаток TreeView - ActiveX слишком долго строится на больших таблицах. Кто-нибудь пробовал загнать выборку в 50,000 записей в TreeView? А 600,000? А ведь есть базы и побольше. И тут уже нужны специальные алгоритмы построиения и баз и дерева. Вообще под дерево надо хорошо продумывать структуру БД. Я за TreeView, но, видимо, во всём должен быть разумный предел... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 01:12 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Владимир, я ОЧЕНЬ попрошу вас, не вести разговор в таком ключе. Мы все здесь всказываем свои мнения и пришли на форум не для того чтобы нас УЧИЛИ как жить дальше и указывали на наши недостатки, а для обсуждения неких вопросов. Если кроме психологии (ну там привыкли и все аткое) других аргументов нет, то наверное эти лучше опустить. ТЕперь по порядку. ВладимирМ Gendrive Вы настолько привыкли использовать TreeView, что просто не видите других способов организации данных. Тривью мы используем всего пару лет. Просто до этого, так же как и у большинства кто здесь пишет, руки не доходили толком разобраться в его функциональности и приемах работы с ним. Часто можно слышать упреки тривью в том что он медленно заполняется например. В моем классе ПОЛНОЕ заполнение тривью с порядка 10000 узлов происходит 2-3 секунды. причем это стандартный тривью. ВладимирМ Есть запись, у нее есть реквизиты (поля). Например, признак группы. Хотите "дерево"? Добавьте еще один реквизит (поле) - подгруппа. И какие проблемы вывести это как линейный список? Это один из вариантов. Можно еще использовать связанные таблицы (один уровень - одна таблица). Есть и другие варианты. Более того, есть другие принципы организации работы. Отобразить плоские данные в тривью без проблем. А вот попробуй сделать обратное в гриде. Потому то я и ищу контрол, который бы объединял функциональность грида и тривью. Ибо в нем я могу отображать и плоскую структуру и древовидную. ВладимирМ Неопределенное количество уровней вложенности - это либо ошибка проектирования, либо специфическая область деятельности. Да и то, во втором случае, использование TreeView, как правило, служит не для поиска, а для наглядного представления некой отдельной (небольшой) структуры. Мне кажется, что тебе нужно отучаться говорить категорично. Простой пример - справочник материалов. Ну ка запроектируй его мне с ОПРЕДЕЛЕННЫМ количеством уровней вложенности? Или справочник проектов и работ. Ты когда нить видел Primavera например? ВладимирМ TreeView для поиска не приспособлен. Он вообще этого не умеет. Никак. Классический пример - проводник Windows. Иерархия директорий, каталогов, папок. Если ТЫ не умеешь этого делать, то не значит что этого не может делать никто. ВладимирМ Вы сели за чужой компьютер. Вы не знаете где именно, в какой папке, находится нужный вам файл. Как вы будете осуществлять поиск с помощью дерева? Очевидно, просто тупо открывая ВСЕ ветки. Т.е. вообще ВСЕ. У вас нет других вариантов. Какое уж тут ускорение... а рядышком нажать копочку поиск религия не позволяет? ВладимирМ А как же поиск? А поиск файла, осуществляется в линейном списке! Результат поиска - это линейный список БЕЗ дерева. Другими словами, поиск осуществляется ВНЕ идеологии древовидной струкутры. И только ПОСЛЕ окончания поиска вы делаете обратное преобразование. На основании найденной информации достраиваете иерархию. Ну в частности в моем классе, результаты поиска выводятся точно так же в виде дерева. ВладимирМ Получается двойное преобразование - из дерева в линейный список, затем поиск в этом линейном списке, затем преобразование результата в дерево. И зачем тут вообще нужно дерево? Почему бы не выбросить этот явно лишний элемент? Опять же нет никаких преобразований. Таблица передаваемая в тривью содержит все идентификаторы. поиск осуществялется по ней. а знаяю ключ узла отобразить его в тривью дело пары миллисекунд. ВладимирМ Впрочем, вы уже не в состоянии сделать что-то другое. Вам мешает наработанный FrameWork. Теперь уже не вы разрабатываете интерфейс, а созданный FrameWork диктует вам принципы работы. Вы вынуждены подстраиваться под существующую систему и ее интерфейс. Без вариантов. Собственно, поэтому можете не обращать внимание на все ранее сказанное. Даже если вы и захотите, вы не сможете это все применить на практике. Созданный FrameWork не позволит. Еще раз. отучаемся говорить категорично и пытаться оценивать других пользуясь своим опытом. Если ты НЕ НАУЧИЛСЯ использовать что-то, то это совсем не значит что это использовать невозможно и вредно. Есть волшебное слово "ИМХО" . Есть различные мнения и от того что оно твое оно вовсе не становится истиной в последней инстанции. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 02:13 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин, Насчет скорости заполнения. Да она оставляет желать лучшего. Но, попробуй перед заполнением сделать тривью visible = .F. удивишься насколько возрастет скорость заполнения. ВО всяком случае работа в пределах первого дестяка тысяч узлов вполне себе комфортна. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 02:21 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
AleksMedGendrive, милости просим, FoxClub , делитесь, а практика и время вас/нас рассудят. постараюсь создать краткое описание классов и выложить. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 02:23 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
GendriveНасчет скорости заполнения. Да она оставляет желать лучшего. Но, попробуй перед заполнением сделать тривью visible = .F. удивишься насколько возрастет скорость заполнения. У меня форма с тривью, появляется только тогда, когда тривью заполнено. Сначала появляется формочка с ActiveX ProgressBar - по нему можно визуально оценить ход построения тривью (которого не видно). Когда ProgressBar достигает 100%, происходит его Release() и появляется формочка с ActiveX TreeView (напр., та что я приложил выше). И так везде, по схеме - SQL Select...ProgressBar...TreeView. А смотреть как строится дерево, это тоже самое как направить отчет в Excel и смотреть, как заполняются, форматируются, группируются строки... Лоховато несколько. Есть же свойство Visible... Повторяю, я за TreeView и в своё время пытался перейти на табличный вариант ListView. Но меня несколько охладило, когда я базу, спроектированную в FPD 2.0 и работающую под DOS стал помещать в TreeView. Правда, при проектировании этой ДРЕВНОСТИ, понятия TreeView, наверное, ещё не было... 3,000 записей - 19 секунд... Это долго... Я и говорю, базы надо проектировать с учётом их представления в TreeView - это позволит сэкономить много времени при построении самого TreeView. Однако, если ты строишь только узлов 10,000 за 2-3 секунды, я снимаю шляпу... Без преувеличения говорю... Мнение господина ВладимираМ о сложности поиска нужных данных, паралельной, дублирующей, системе навигации и поиска и пр... и пр... не разделяю. Хотя оно тоже имеет право на существование. Все навигационно-поисковые функции описаны на сайте Шутенко, вдоль и поперёк.... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 03:18 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин3,000 записей - 19 секунд... Это долго... Правда дерево вышло 5-ти уровневое и рекурсии использовались... Но база, с точки зрения дерева, была построена бездарно ... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 03:23 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин, в результате экспериментов я выяснил, что даже если форма не отображается, но у тривью визибл стоит .Т. то оно все равно пытается заниматься визуальной перерисовкой. А вот если ему выключить видимость, то скорость возрастает в разы. попробуй. По поводу баз данных. У нас все процедуры на SQL заточены под то, чтобы СРАЗУ выдавать таблицу с определенной структурой. В частности, в ней обязаны быть поля ID, Parent_ID, Descr. Есть еще опциональные поля в таблице: isFolder, Color_ID, Icon_ID еще какие то. классу передается только эта таблица и уже на базе ее он сам строит деерво со всеми рюшечками. Поиск тоже внутри класса - ищет сразу внутри таблицы и отбражает в дереве. То есть, я думаю, тебе подготовку данных нужно осуществлять ДО ТОГО как ты начнешь строить дерево. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 03:49 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
GendriveТо есть, я думаю, тебе подготовку данных нужно осуществлять ДО ТОГО как ты начнешь строить дерево. А я так и делаю... Свои базы я проектирую с учётом их дальнейшего древовидного представления Gendriveв результате экспериментов я выяснил, что даже если форма не отображается, но у тривью визибл стоит .Т. то оно все равно пытается заниматься визуальной перерисовкой. А вот если ему выключить видимость, то скорость возрастает в разы. попробуй. А вот это хорошая мысль... Попробую... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 03:59 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин, щас лишний раз проверил. Запуск скомпилированного приложения (справочник материалов) от момента запуска EXE до отображения окна с получением данныс с SQL (причем не просто получение а выборка их там из еще большего справочника (1сv8 SQL) и обработкой их там и заполнением тривью, количество нодов чуть меньше 4 с половиной тысяч (точно - 4440 узлов) занимает около 5 секунд. Как это выглядит видно на приложенном файле. причем вся эта форма по сути один класс просто брошенный на форму. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 04:17 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Aleksey-K Но вот какая штука получилась.. Для ввода данных в справочник (операция не очень частая, согласитесь) иерархия помогает. Модно не торопясь найти нужную группу элемента и добавить в нее новый элемент. Но вот когда операционист использует такой справочник для выбора нужного элемента при оформлении документа (например, приходный ордер), то оказалось, что ему (операционисту) удобнее (т.к. значительно быстрее) иметь общий список всех элементов справочника в виде грида и хорошее средство для поиска (отбора) нужного элемента в этом гриде. Наблюдения показали, что опытный операционист НИКОГДА не использует, сначала выбор в "дереве" нужной группы в иерархии элементов, а потом, сам поиск элемента. Он ПОМНИТ ключевые параметры нужно элемента (название, код и пр.) и использует их для поиска в "плоском" гриде. Нам в системе даже пришлось добавить на формы выбора элементов справочника опцию ("искать в подгруппах"), которая выводит в гриде элементы ВСЕХ подуровней "дерева", т.е., фактически, отключает "дерево" и выводит в грид ВСЕ элементы справочника, а не только из выбранной ветке. Алексей, точно такой же режим поиска у меня реализован в тривью. Человек набирает часть название, а контрол отображает ему то, что подходит под то что он ввел, одновременно раскрывая необходимые группы. ПРичем установкой одной галочки поиск может осуществляться как с начала строки, так и внутри строки. Также пожно ввести строку поиска и отобразить ТОЛЬКО ТО что подходит под критерии поиска (ну например набираешь слово компрессор а он может находиться в разных группах и быть разных типов компрессоры). Так что это все просто вопрос реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 05:31 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Aleksey-K, я вот решил показать скриншот как это работает В правом верхнем углу - поле поиска. Если убрать галку "показывать только найденное" то идет поиск в реальном времени когда набираешь слово. Если ее поставить появляется кнопочка поиска нажимая которрую получаешь в тривью все записи подходящие под условие. Они подсвечены зеленым. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 05:42 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
GendriveAleksey-K, я вот решил показать скриншот как это работает В правом верхнем углу - поле поиска. Если убрать галку "показывать только найденное" то идет поиск в реальном времени когда набираешь слово. Если ее поставить появляется кнопочка поиска нажимая которрую получаешь в тривью все записи подходящие под условие. Они подсвечены зеленым. Такой вариант поиска только в "дереве" был когда-то попробован и .... через некоторое время отвергнут по нескольким причинам: 1. Скорость - Поиск в курсоре и отображение в гриде по скорости существенно выше, чем поиск по дереву и отображение в нем при большом объеме данных. 2. Нахождение искомого элемента справочника на разных уровнях дерева вынуждает пользователя менять фокус взгляда. При частой операции у пользователей накапливается раздражение и нам пришлось отказаться от дерева. В гриде при отборе взгляд всегда направлен на одно место - первая строка. С уваженимем, Алексей. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 08:50 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Aleksey-K, а ты думаешь что я ищу в самом тривью? Зачем я буду это делать, если существует прекрасный и быстрый механизм поиска - фокспро? ПОиск происходит в курсоре потом просто отображается в тривью. Насчет взгляда - если осуществляется мгновенный поиск по введенным символам, то узел тоже всегда остается на одном месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 09:19 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendrive а ты думаешь что я ищу в самом тривью? Зачем я буду это делать, если существует прекрасный и быстрый механизм поиска - фокспро? ПОиск происходит в курсоре потом просто отображается в тривью. Я не думаю, я знаю, что ты именно так и ищешь: сначала по курсору, а потом по дереву (наверное по ключу нода), т.е. дважды ищешь, а я ищу один раз - только по курсору. Gendrive Насчет взгляда - если осуществляется мгновенный поиск по введенным символам, то узел тоже всегда остается на одном месте. Поясни, что такое мгновенный поиск и главное, как ты в дереве делаешь так, что искомый NODE будет в том же месте, где у тебя сейчас курсор (на другом ноде)? А если искомый нод в свернутой ветке? Да ладно.. Я ведь никого не уговариваю. Мы решили в свое время отказаться от дерева как инстумента ВЫБОРА элемента (но не ввода). Если ваши заказчики не жалуются на поиск по дереву, что у них глаза устают от мельтешения дерева, то хорошо, а наши вот заставили нам переделать поиск по "плоскому" гриду. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 09:42 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
GendriveAleksey-K, а ты думаешь что я ищу в самом тривью? Зачем я буду это делать, если существует прекрасный и быстрый механизм поиска - фокспро? ПОиск происходит в курсоре потом просто отображается в тривью. Насчет взгляда - если осуществляется мгновенный поиск по введенным символам, то узел тоже всегда остается на одном месте. Так Володя Максимов как раз про это и написал, причем корректно и с павильными выводами в конце. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 10:54 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Aleksey-Kкак ты в дереве делаешь так, что искомый NODE будет в том же месте, где у тебя сейчас курсор (на другом ноде)? А если искомый нод в свернутой ветке? aaa - id Node, всегда известный на момент построения дерева Form.OleTree.Nodes(aaa).Selected = .T. Form.OleTree.Nodes(Form.OleTree.Nodes(aaa).Index).EnsureVisible() (ну нравится мне в полной форме) Первое устанавливает курсор на искомый Node и распахивает родительские узлы, второе - визуально позиционирует дерево на распахнутом Node (если он за пределами списка Nodes). И всё... Работает мгновенно. Т.е. ситуацию, когда корректировка БД приводит к изменению Nodes.Text и его положению в узлах я решаю этим способом. Text изменился, узел, возможно тоже (может понадобится ещё и Form.OleTree.Nodes.Remove(index/key)), оккорректированный Node получил фокус, а TreeView - Scrolling (если надо). Т.е. каждый получил своё! ))) p.s.: А не шуточный тут диспут... Прям, научный... ))) Gendrive всколыхнул пласты сообщества... ))) Я уж лет 10-ть не участвовал... Даже молодость вспомнил ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 10:58 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин aaa - id Node, всегда известный на момент построения дерева Form.OleTree.Nodes(aaa).Selected = .T. Form.OleTree.Nodes(Form.OleTree.Nodes(aaa).Index).EnsureVisible() (ну нравится мне в полной форме) Первое устанавливает курсор на искомый Node и распахивает родительские узлы, второе - визуально позиционирует дерево на распахнутом Node (если он за пределами списка Nodes). И всё... Работает мгновенно. 1. Ну насчет того, что работает мгновенно, когда у вас десятки тысяч Node я не уверен, но сам не проверял. 2. И вы хотите сказать, что визуально искомый нод будет на том месте экрана, где у вас курсор при поиске? Что-то не очень верится. А если у вас искомый нод уже на экране, но не выбран, то с какой стати у вас "продернется" дерево, а не просто фокус переведется на этот нод ? Из приведенного кода, во всяком случае, это никак не слудует. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 11:35 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Aleksey-K1. Ну насчет того, что работает мгновенно, когда у вас десятки тысяч Node я не уверен, но сам не проверял. А у меня и нет TreeView на десятки тысяч Node... Вообще-то, это не я утверждал о мгновенности работы в TreeView на десятки тысяч Node. Я как раз выражал озабоченность о скорости построения дерева на 50,000 узлов (посмотрите начало) Aleksey-K2. .... А если у вас искомый нод уже на экране, но не выбран, то с какой стати у вас "продернется" дерево, а не просто фокус переведется на этот нод ? Из приведенного кода, во всяком случае, это никак не слудует.. "А если у нас" Node уже на экране , то он только получит фокус... .EnsureVisible() не передёрнет его. Но EnsureVisible() я вставляю потому что не знаю где этот Node может оказаться. Над экраном (тогда UpScrolling), или под экраном (тогда DownScrolling). Если же он на экране, - передёргивания не происходит. Я это использыю при добавлении в справочник, - никогда не известно, что взбредёт добавить в голову юзверу. А список может быть значительным, и Node добавляется у меня не в конец ветки , а согласно "купленному билету", т.е. согласно правилам позиционирования по алфавиту . TreeView перепозиционируется (Scroll) на новый Node и юзер сразу видит, что он добавил в дерево, а также какие значения полей он добавил в новом Node... p.s.: Блин, прямо симпозиум древоведов... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 14:07 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Кстати, господа! А ведь никто толком не ответил на вопрос Gendrive, с которого и начался весь этот курултай... А ведь человек то спрашивал не о том, хорош ли TreeView, насколько хорош, иль вообще плох... Я думаю он сам это знает лучше нас всех!.. Вопрос то был "Multi columm treeview". Но как и мне лет 5-6 назад никто и не ответил... Тоже ушли в сторону бичевания-восхваления TreeView. Господа! Знаете ответ о Multi columm treeview - отвечайте, нет - проходите мимо! Мне кажется так правильно... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 14:18 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин p.s.: Блин, прямо симпозиум древоведов... Давно научно доказано, что во время споров в Интернете: -никто не читает полностью сообщения других участников спора -каждый слышит только свою точку зрения -не одна из точек зрения никогда не побеждает -все в конечном итоге заканчивается взаимными оскорблениями. Поэтому Владимир Максимов правильно сделал, перейдя сразу к последнему пункту и закончив спор. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 14:26 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Я использую ctTree 6.0 от DBI Technologies Inc. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 19:33 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Aleksey-K Я не думаю, я знаю, что ты именно так и ищешь: сначала по курсору, а потом по дереву (наверное по ключу нода), т.е. дважды ищешь, а я ищу один раз - только по курсору. Алексей, все дело в том, что в тривью искать НЕ НАДО. Если ты знаешь ключ узла, который как раз находится в курсоре в котором осуществляется поиск, то переход к этому узлу делается мгновенно. Делаешь на этот узел селект и ensurevisible и все. При заполненном дереве это работает очень быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 05:11 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Aleksey-K 1. Ну насчет того, что работает мгновенно, когда у вас десятки тысяч Node я не уверен, но сам не проверял. Самый длинный процесс в данном случае это заполнение тривью. ПОсле того как оно заполнено, переход по узлам осуществляется очень быстро, даже при большом количестве узлов. Aleksey-K 2. И вы хотите сказать, что визуально искомый нод будет на том месте экрана, где у вас курсор при поиске? Что-то не очень верится. А если у вас искомый нод уже на экране, но не выбран, то с какой стати у вас "продернется" дерево, а не просто фокус переведется на этот нод ? Из приведенного кода, во всяком случае, это никак не слудует. Здесь не все так просто, на самом деле. Узел МОЖЕТ оказаться не на том самом месте, где был курсор на предыдущем узле. НО это достаточно просто решается, насколько я помню. Я просто не заморачивался этим, но думаю вопрос нескольких строчек кода в классе. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 05:16 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
BeresnevЯ использую ctTree 6.0 от DBI Technologies Inc. Купленный? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 08:58 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendrive Я все-таки дополню, но не по поводу дерева, а по способу ведения дискуссии. Прежде чем отвечать на отдельное предложение прочитай ВСЕ сообщение. Возможно, ты все-таки увидишь разъяснение смысла чуть ниже. Посмотри на ту "лапшу", что ты нарезал на мой последний ответ. Практически на каждое твое замечание идет опровержение в следующем моем предложении и ты вынужден разворачиваться на 180 градусов. Это еще в том случае, если ты отвечаешь "в тему". Но зачастую, ты отвечаешь "мимо" (не по теме), даже на выдернутые из контекста предложения. Собственно, ты просто не захотел понять смысл моего ответа. Впрочем, Aleksey-K на примерах разъяснил то, что я сказал, а ты не захотел понять. Вопрос ведь вовсе не в том, как сделать то или другое программно. Вопрос в том, как это воспринимает пользователь. Насколько он способен удобно и быстро работать. И еще, постарайся не делать скоропалительных выводов о том что другие смогли или не смогли. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 19:10 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Вовочка если ты чегото недоганяеш то это не означает что люди мимо говорять)))) TRFM - а не задавай тупые вопросы))) ты бы ещё про скорость доступа к разным ячейкам в ОЗУ где межит дата к гриду или к тривью))))) ну паржал))) аффтар пиши исчо) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2008, 15:29 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ParnishaВовочка если ты чегото недоганяеш то это не означает что люди мимо говорять)))) TRFM - а не задавай тупые вопросы))) ты бы ещё про скорость доступа к разным ячейкам в ОЗУ где межит дата к гриду или к тривью))))) ну паржал))) аффтар пиши исчо) Кстати, да. На милионниках часто становится критичным то, что у тебя в памяти болтаются данные как в TreeView, так и в курсоре. Причем, если в TreeView за свопинг отвечает только операционка, то фокс еще и сам пытается буферизировать на диск. Полный бардак и неизлечимый тормоз получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 05:53 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ParnishaВовочка если ты чегото недоганяеш то это не означает что люди мимо говорять)))) TRFM - а не задавай тупые вопросы))) ты бы ещё про скорость доступа к разным ячейкам в ОЗУ где межит дата к гриду или к тривью))))) ну паржал))) аффтар пиши исчо) И вот послышался лай Моськи на слона )) Имейте хотя бы мужество писать подобные посты от своего имени. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 11:08 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
хоть я уже и не пишу на фоксе тоже придерживаюьс точки зрения что деревья это усложнение так как минимум требуется регистрация ocx на ПК юзеров что может быть не доступно по каким то причинам по крайне мере для работы операцианистов - зы возможно моя аудитаория юзеров (типа кладовщик) была такой что я даже и не пытался к тому же в гриде у меня поиск был по любому текущему полю а в три может и можно как то но я не уверен хотя вообще это делов вкуса и фреймворка есть 1 момент где я вижу можно заюзать эту идею - типа если отчеты делать для начальства (аналитика) такой примитивный BI там да - деревья по иерерахиям очень удобоны - чтобы таскать - в многих BI системах собственно так и сделано а вот ? я не понял для чего надо то от Multi columm treeview может скриншот кто приведет инетересно глянуть как он юзается ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 16:55 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
CcRaZzYParnishaВовочка если ты чегото недоганяеш то это не означает что люди мимо говорять)))) TRFM - а не задавай тупые вопросы))) ты бы ещё про скорость доступа к разным ячейкам в ОЗУ где межит дата к гриду или к тривью))))) ну паржал))) аффтар пиши исчо) И вот послышался лай Моськи на слона )) Имейте хотя бы мужество писать подобные посты от своего имени. может тебе ещё и паспортные данные))) я вобщето не месный, и на фоксе никогда не писал)) имейте моск уважаемый, почитайте внимательно посты, подумайте... если не выйдет ещё раз подумайте))) после проводите ассоциации мосек и слонов)) ЗЫ: Просто реальный гон я невыжержал)) некомпетентность с "умным видом" меня просто бесит) Читайте доки господа) а если речь идёт о чёмто вам вовсе не ясном или немного ясном, или вы так думаете что всё знаете..... но это может быть нетак))) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 17:31 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Kruchinin PahanParnishaВовочка если ты чегото недоганяеш то это не означает что люди мимо говорять)))) TRFM - а не задавай тупые вопросы))) ты бы ещё про скорость доступа к разным ячейкам в ОЗУ где межит дата к гриду или к тривью))))) ну паржал))) аффтар пиши исчо) Кстати, да. На милионниках часто становится критичным то, что у тебя в памяти болтаются данные как в TreeView, так и в курсоре. Причем, если в TreeView за свопинг отвечает только операционка, то фокс еще и сам пытается буферизировать на диск. Полный бардак и неизлечимый тормоз получается. ИМХО: Надо менять контролы, чтоб не грузили всю дату с БД сразу... или менять весь енвиропмент) Удачи) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2008, 17:36 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Странный диспут. Что-то вроде: что лучше, велосипед или трактор? Дерево предназначено для отображения структуры. Поэтому, если нужно видеть структуру, лучшего контрола я не знаю. А для операционистов, вводящих большой объем однородной информации даже мышка лишней будет, не говоря уж о дереве. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 07:05 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Parnisha ИМХО: Надо менять контролы, чтоб не грузили всю дату с БД сразу... или менять весь енвиропмент) Вы путаете кислое с длинным. Я не про алгоритм наполнения данными, а про двукратное использование памяти одними и теми же данными. А логика "что не вижу, то вычищаю", в общем случае, порочна. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 08:07 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
AleksMedGendriveAleksey-K, а ты думаешь что я ищу в самом тривью? Зачем я буду это делать, если существует прекрасный и быстрый механизм поиска - фокспро? ПОиск происходит в курсоре потом просто отображается в тривью. Насчет взгляда - если осуществляется мгновенный поиск по введенным символам, то узел тоже всегда остается на одном месте. Так Володя Максимов как раз про это и написал, причем корректно и с павильными выводами в конце. :) Следуя этой логике (то что мол если поиск происходит в курсоре, а отображается в тривью и, на основании этого, тривью плохой) следует отказаться от телевизора. ведь действие происходит не в самом телевизоре, а где-то в другом месте. ПОэтому использование телевизора - порочная практика. надо сидеть в студии. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 08:23 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Гулин Федор, ну примерно так и выглядит ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 09:04 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ПД, а что это за контрол? можно попользоваться? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 10:16 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Parnisha Надо менять контролы, чтоб не грузили всю дату с БД сразу ... или менять весь енвиропмент) А вы вообще программист? Какое отношение тип контролов имеет к количеству данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 10:42 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendrive, это ctTree, о котором упоминалось выше ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 11:36 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Kruchinin PahanParnisha ИМХО: Надо менять контролы, чтоб не грузили всю дату с БД сразу... или менять весь енвиропмент) Вы путаете кислое с длинным. Я не про алгоритм наполнения данными, а про двукратное использование памяти одними и теми же данными. А логика "что не вижу, то вычищаю", в общем случае, порочна. Я тоже не про алгоритм наполнения, а про саму работу контрола с данными, ведь он может не под два а под 1000000... экземпляров память выделять))) все беды от кривых рук)) ведь если не грузить сразу все данные, а только те что нужны для отображения то можно убрать свопинг но увеличить обращения к БД, либо просто добавить мозгов в тазик))) а как поступить это уже Вам виднее) ЗЫ: Ну а если нельзя сделать кастыли для контрола стандартными средствами фокспро то тут уже надо менять весь енвиропмент и писать на джаве или сишарпе))) или на обджективси))..... хотя... нет ничего невозможного))) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 14:25 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Ffffffffff, 1. вообще да, а ещё и аналитик\архитектор)) 2. RTFM))) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 14:30 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ParnishaKruchinin PahanParnisha ИМХО: Надо менять контролы, чтоб не грузили всю дату с БД сразу... или менять весь енвиропмент) Вы путаете кислое с длинным. Я не про алгоритм наполнения данными, а про двукратное использование памяти одними и теми же данными. А логика "что не вижу, то вычищаю", в общем случае, порочна. Я тоже не про алгоритм наполнения, а про саму работу контрола с данными, ведь он может не под два а под 1000000... экземпляров память выделять))) все беды от кривых рук)) ведь если не грузить сразу все данные, а только те что нужны для отображения то можно убрать свопинг но увеличить обращения к БД, либо просто добавить мозгов в тазик))) а как поступить это уже Вам виднее) Целиком приводите цитаты. Kruchinin PahanА логика "что не вижу, то вычищаю", в общем случае, порочна. Как вы любите все на железо спихивать. Мозгов в тазик, сетку нагрузить. Любые ресурсы имеют свойство заканчиваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 14:59 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Parnisha, http://alexputev.35photo.ru/photo_35385/ ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 15:08 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ParnishaFfffffffff, 1. вообще да, а ещё и аналитик\архитектор)) 2. RTFM))) И что там по этому поводу написано? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 17:00 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Kruchinin PahanParnishaKruchinin PahanParnisha ИМХО: Надо менять контролы, чтоб не грузили всю дату с БД сразу... или менять весь енвиропмент) Вы путаете кислое с длинным. Я не про алгоритм наполнения данными, а про двукратное использование памяти одними и теми же данными. А логика "что не вижу, то вычищаю", в общем случае, порочна. Я тоже не про алгоритм наполнения, а про саму работу контрола с данными, ведь он может не под два а под 1000000... экземпляров память выделять))) все беды от кривых рук)) ведь если не грузить сразу все данные, а только те что нужны для отображения то можно убрать свопинг но увеличить обращения к БД, либо просто добавить мозгов в тазик))) а как поступить это уже Вам виднее) Целиком приводите цитаты. Kruchinin PahanА логика "что не вижу, то вычищаю", в общем случае, порочна. Как вы любите все на железо спихивать. Мозгов в тазик, сетку нагрузить. Любые ресурсы имеют свойство заканчиваться. Не в ресурсах дело а в умении их юзать, железо как один из вариантов, читай внимательнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 17:46 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
FffffffffParnishaFfffffffff, 1. вообще да, а ещё и аналитик\архитектор)) 2. RTFM))) И что там по этому поводу написано? там всё написано, ели непонял... то это не ко мне))) а RTFM) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 17:48 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
А с чем к тебе? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 18:14 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
FffffffА с чем к тебе? Попробуй чтото попроще))) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 19:24 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 20:31 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendrive, Моё мнение: Вы наверное действительно увлеклись треями. Если бы Вам приходилось работать с крупными приложениями ( на 10-20 млн зап), Вы бы поняи, что искать нужно в линейном списке - как рекомендовал ВЛАДИМИР М. А для небольших прилад трей - просто маркетинговый ходд. Но уже давно не удобство. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 20:58 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
FAMGendrive, Моё мнение: Вы наверное действительно увлеклись треями. Если бы Вам приходилось работать с крупными приложениями ( на 10-20 млн зап), Вы бы поняи, что искать нужно в линейном списке - как рекомендовал ВЛАДИМИР М. А для небольших прилад трей - просто маркетинговый ходд. Но уже давно не удобство. Искать можно везде))) и скорость поиска зависит от алгоритма поиска) ЗЫ: Читаем Дональда Кнута и открываем для себя массу интересного)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 21:32 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ParnishaИскать можно везде))) и скорость поиска зависит от алгоритма поиска) А кто-то говорил обратное? С чем спорим? [quot] ЗЫ: Читаем Дональда Кнута и открываем для себя массу интересного))[/quot] Да давно уже открыли. Только ведь речь то не об алгоритмах поиска, а об удобстве использования одного конкретного контрола - TreeView. Удобстве работы именно для пользователя. В частности при больших объемах данных и интенсивной работе или массовом вводе. По этой теме есть что сказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2008, 22:02 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
проходящий.ParnishaИскать можно везде))) и скорость поиска зависит от алгоритма поиска) А кто-то говорил обратное? С чем спорим? [quot] ЗЫ: Читаем Дональда Кнута и открываем для себя массу интересного)) Да давно уже открыли. Только ведь речь то не об алгоритмах поиска, а об удобстве использования одного конкретного контрола - TreeView. Удобстве работы именно для пользователя. В частности при больших объемах данных и интенсивной работе или массовом вводе. По этой теме есть что сказать?[/quot] На нашем продукте(ЦРМ) пользователи этим самым тривью очень довольны. Насчёт мультиколумн тривью то я работал с оутлайнвью - удобная вещь, но это не фокспро и даже не винда) ЗЫ:А ты наверно ВЛАДИМИР?) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 00:42 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
FAMGendrive, Моё мнение: Вы наверное действительно увлеклись треями. Если бы Вам приходилось работать с крупными приложениями ( на 10-20 млн зап), Вы бы поняи, что искать нужно в линейном списке - как рекомендовал ВЛАДИМИР М. А для небольших прилад трей - просто маркетинговый ходд. Но уже давно не удобство. Ребят, вообще кто нить читал топик а? А разве спрашивал кого-то про тонкости поиска и все такое? Мне просто нужен некий контрол. КАК и ЗАЧЕМ его использовать я знаю и так. Если уж разговор идет о поиске, то поиск я осуществляю как раз в линейном списке, а ОТОБРАЖАЮ его в виде тривью. в чем проблема то? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 02:19 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
2 Parnisha, авторНа нашем продукте(ЦРМ) Уххх... страху нагнал ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 09:11 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
valeryka2 Parnisha, авторНа нашем продукте(ЦРМ) Уххх... страху нагнал Не сцы http://www.sql.ru/forum/images/smoke.gif ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 15:04 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
GendriveFAMGendrive, Моё мнение: Вы наверное действительно увлеклись треями. Если бы Вам приходилось работать с крупными приложениями ( на 10-20 млн зап), Вы бы поняи, что искать нужно в линейном списке - как рекомендовал ВЛАДИМИР М. А для небольших прилад трей - просто маркетинговый ходд. Но уже давно не удобство. Ребят, вообще кто нить читал топик а? А разве спрашивал кого-то про тонкости поиска и все такое? Мне просто нужен некий контрол. КАК и ЗАЧЕМ его использовать я знаю и так. Если уж разговор идет о поиске, то поиск я осуществляю как раз в линейном списке, а ОТОБРАЖАЮ его в виде тривью. в чем проблема то? Вот тут идет продолжение. Речь не о поиске. Речь о неудобстве сего контрола при интенсивной работе или массовом вводе. И, возвращаяясь, к первоначальному вопросу, исходя из означенного неудобства, мало кто использует даже обычный TV, не говоря уж об многоколончатости или иных наворотах. И весь данный топик Вам пытаются сообщить именно это. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 15:11 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
проходящий. Речь не о поиске. Речь о неудобстве сего контрола при интенсивной работе или массовом вводе. И, возвращаяясь, к первоначальному вопросу, исходя из означенного неудобства, мало кто использует даже обычный TV, не говоря уж об многоколончатости или иных наворотах. И весь данный топик Вам пытаются сообщить именно это. Объясни мне, чегоя не понимаю? Или люди пишущиена фокси знают какую-то секретную военную тайну, которую мне никто не сообщил? Скажи,ты знаешь хоть одну серьезную программу, которая бы НЕ ИСПОЛЬЗОВАЛА тривью? Я не имею ввиду конкретный тривью, а какие нибудь из его разновидностей? Ну пример. Мы очень плотно используем Primavera для управления проектами. там все построено на древовидных структурах. Вообще, ЛЮБАЯ информация в нашем мире, если она поддается структурированию, имеет фрактальную структуру. И, заметь, в моем исходном сообщении НИГДЕ не говорилось про массовый ввод. Мне необходимо отображать стурктурированную информацию, с возможностью поиска. вот и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 16:46 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
GendriveСкажи,ты знаешь хоть одну серьезную программу, которая бы НЕ ИСПОЛЬЗОВАЛА тривью? Excel, Word. А если серьезно, то есть стандартные тулбоксы в FoxPro, Access-е. В них же нет TreeView. Не зря же он входит только в дополнительные контролы. P.S. Хотя тоже использую. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 17:48 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
FfffffffGendriveСкажи,ты знаешь хоть одну серьезную программу, которая бы НЕ ИСПОЛЬЗОВАЛА тривью? Excel, Word. А если серьезно, то есть стандартные тулбоксы в FoxPro, Access-е. В них же нет TreeView. Не зря же он входит только в дополнительные контролы. P.S. Хотя тоже использую. гы ;) ЛЮБАЯ программа использует FileOpenDialog ;) так что... Тривью не совсем тривиальный контрол с точки зрения использования и действительно не совсем совпадает с идеологией плоских таблиц используемых в фокспро и, тем более, акцессе. НО любые организованные данные имеют струкруту дерева. а отображать структуру дерева без тривью не понимаю как ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 18:09 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendriveа отображать структуру дерева без тривью не понимаю как ;) Отображать и работать - две очень большие разницы. Так вот для работы TV неудобен. Для отображения - да сколько угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 18:31 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
проходящий.Gendriveа отображать структуру дерева без тривью не понимаю как ;) Отображать и работать - две очень большие разницы. Так вот для работы TV неудобен. Для отображения - да сколько угодно. Ох блин... Это уже религиозный спор, по-моему. OS/2 vs Windows, C vs Pascal, TreeView vs Grid... что-тотипа этого... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 18:35 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendriveпроходящий.Gendriveа отображать структуру дерева без тривью не понимаю как ;) Отображать и работать - две очень большие разницы. Так вот для работы TV неудобен. Для отображения - да сколько угодно. Ох блин... Это уже религиозный спор, по-моему. OS/2 vs Windows, C vs Pascal, TreeView vs Grid... что-тотипа этого... Ничего подобного. Просто больше похоже на разговор слепого с глухим. Вам рассказывают про неудобства работы, Вы в ответ рассказываете про удобства отображения. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 18:41 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
а в это время в 1С эта проблема уже давно решена. триггером переключается древовидная структура (иерархия) в грид (линейный список), и наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 20:07 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
r-rayа в это время в 1С эта проблема уже давно решена. триггером переключается древовидная структура (иерархия) в грид (линейный список), и наоборот. И не только в 1-С. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 20:31 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Ffffffffr-rayа в это время в 1С эта проблема уже давно решена. триггером переключается древовидная структура (иерархия) в грид (линейный список), и наоборот. И не только в 1-С. И формы выбора/отбора из справочников там совсем без деревьев. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 21:03 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
проходящий.Gendriveпроходящий.Gendriveа отображать структуру дерева без тривью не понимаю как ;) Отображать и работать - две очень большие разницы. Так вот для работы TV неудобен. Для отображения - да сколько угодно. Ох блин... Это уже религиозный спор, по-моему. OS/2 vs Windows, C vs Pascal, TreeView vs Grid... что-тотипа этого... Ничего подобного. Просто больше похоже на разговор слепого с глухим. Вам рассказывают про неудобства работы, Вы в ответ рассказываете про удобства отображения. :) А нет мысли, что удобство работы напрямую зависит от удобства отображения данных? Или в теории интерфессов что-то радикально изменилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 02:57 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
ВладимирМ Вы настолько привыкли использовать TreeView, что просто не видите других способов организации данных. Я настолько намаялся отображать данные , пока не стал использовать для этого Тривью, что Ваши советы уже не имеют смыла. ВладимирМ Есть запись, у нее есть реквизиты (поля). Например, признак группы. Хотите "дерево"? Добавьте еще один реквизит (поле) - подгруппа. И какие проблемы вывести это как линейный список? Это один из вариантов. Можно еще использовать связанные таблицы (один уровень - одна таблица). Есть и другие варианты. Более того, есть другие принципы организации работы. а потом добавьте поле "групаа подгруппы" и "подгруппа группы подгруппы группы" а потом,когда появится еще один уровень вложенности - еще что-нибудь. "как дети,ей богу" (с) ВладимирМ Неопределенное количество уровней вложенности - это либо ошибка проектирования, либо специфическая область деятельности. Да и то, во втором случае, использование TreeView, как правило, служит не для поиска, а для наглядного представления некой отдельной (небольшой) структуры. "Когда вы говорите,Иван Васильевич, ощущение такое, что вы бредите" (с) Булгаков Классический пример "ошибки проектирования" либо " специфической области деятельности" - проводник Windows. Налицо неопределенное количество уровней вложженнсти, а конечный элемет (файл) может как иметь одинаковое название, так и одинаковые названия 2-3-5 родителей (папок в которых лежит) Так что не видя "дерева" сложно определить - тот это файл или нет. ВладимирМ TreeView для поиска не приспособлен. Он вообще этого не умеет. Никак. Классический пример - проводник Windows. Иерархия директорий, каталогов, папок. есть другие элементы контроля: - комбо бокс, лист бокс, грид - как они приспособлены для поиска? по-другому: какой контрол имеет встроеный инстумент поиска???? ответ - никакой. Для этого есть программист, есть данные, которыми он оперирует. Если кто-то думает, что идет речь о программе, при запуске которой появляется одно тривью ( с заголовком окна, плюсиками слева и крестиком для выхода в правом верхнем углу), у того просто неисправности фантазии... (ХОтя скажу вам честно, есть формы, которые используют именно такой вид для выбора единственного или нескольких элементов с использованием встроеного чекбокса из дерева) Вообще мне странно слышать(видеть) что список задач пользователя некоторые участники обсуждения сводят к поиску данных (это смешно) :-) ВладимирМ Вы сели за чужой компьютер. Вы не знаете где именно, в какой папке, находится нужный вам файл. Как вы будете осуществлять поиск с помощью дерева? Очевидно, просто тупо открывая ВСЕ ветки. Т.е. вообще ВСЕ. У вас нет других вариантов. Какое уж тут ускорение... нет, я нажму Ctrl+F и воспользуюсь формой поиска, а результат увижу в тривью. и что? а если я сел за чужой комп а там FAR или TotalCommander ??? я чем пользуюсь для поиска файла , неизвестно где находящегося? тоже поиском... А если мне в гриде с несколькими тысячами записей надо искать? Скролить весь список? или грид имеет встроенные инструменты для поиска???? Не смешите меня и отстаньте от тривью с необоснованными, а главное глупыми претензиями... ВладимирМ А как же поиск? А поиск файла, осуществляется в линейном списке! Результат поиска - это линейный список БЕЗ дерева. Результатом поиска может быть Бозон Хиддинга (или как он там), что мешает результат отобразить в виде иерархии дерева элементарных частиц, где в корне, скажем, ядро атома? какая разница человеку, который смотрит в монитор ЧТО И ГДЕ ИЩЕТ программа???? ВладимирМ Другими словами, поиск осуществляется ВНЕ идеологии древовидной струкутры. И только ПОСЛЕ окончания поиска вы делаете обратное преобразование. На основании найденной информации достраиваете иерархию. Браво!! Если бы кто-нибудь до вас Америку не открыл, вы бы это только что сделали... Какое гениальное открытие :-) и что? А если я вне идеологии формы ищу данные в таблицы из миллионов записей и результат из 10-15 показываю в гриде??? Раскритикуете грид, зо то, что ИДЕОЛОГИЯ поиска находится вне идеологии плоского грида??? Вы вообще читаете то, что пишеет? а главное для чего и для кого эти сентенции? ВладимирМ Получается двойное преобразование - из дерева в линейный список, затем поиск в этом линейном списке, затем преобразование результата в дерево. И зачем тут вообще нужно дерево? Почему бы не выбросить этот явно лишний элемент? Получается что есть контрол, которым вы не умеете пользоваться, вот и все. Но я не понимаю к чему такая рьяная агитация против его использования? ВладимирМ Впрочем, вы уже не в состоянии сделать что-то другое. Вам мешает наработанный FrameWork. Теперь уже не вы разрабатываете интерфейс, а созданный FrameWork диктует вам принципы работы. Вы вынуждены подстраиваться под существующую систему и ее интерфейс. Без вариантов. а еще мне мешает Windows, Билл Гейст и Intel Вот ведь гады.. И SQL Server почему-то не понимает запросов в произвольной форме...диктует мне свои условия..как писать, что требовать.... Кашмар... Во вложении одна из форм приложения по формированию бюджета проета , структура работ которого - дерево неопределенной иерархии+состав работ так же может быть неоднороден по своей структуре... Причем пользователь ХОЧЕТ видеть все уровни проекта сразу и перемещаясь по инм, оценивать объем ресурсов и средств, которые необходимы.. По двойному нажатию на любом элементе дерева запускается форма для работы с данным уровнем, добавление, редактирование, удаление и поиск в дереве осуществляется элементами класса, расположенными над тривью. (Все это включено в класс-контейнер, который добавляется на форму и программист получает сразу готовый набор стандартных инструментов.... Вот к такому Дереву и нужен прикрученый грид с дополнительными параметрами, чтобы не нужно было по NodeClick выполнять ненужных телодвижений... Если Вас и Ваших заказчиков и пользователей не устраивает такое отображение - это их личное дело. Возможно они прото не видели, что так может быть, или Вы их убедили, что им это не нужно (чтобы было удобнее Вам программировать в плоских списках, или сборище из неопределенного количества таблиц, по сути являющихся одним справочником. Спасибо за внимание ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 05:57 |
|
Multi columm treeview (treeview + grid)
|
|||
---|---|---|---|
#18+
Gendriveпроходящий.Gendriveпроходящий.Gendriveа отображать структуру дерева без тривью не понимаю как ;) Отображать и работать - две очень большие разницы. Так вот для работы TV неудобен. Для отображения - да сколько угодно. Ох блин... Это уже религиозный спор, по-моему. OS/2 vs Windows, C vs Pascal, TreeView vs Grid... что-тотипа этого... Ничего подобного. Просто больше похоже на разговор слепого с глухим. Вам рассказывают про неудобства работы, Вы в ответ рассказываете про удобства отображения. :) А нет мысли, что удобство работы напрямую зависит от удобства отображения данных? Или в теории интерфессов что-то радикально изменилось? Так ведь для удобной работы отображение должно быть соответствующее и вот тут-то и возникает разрыв. Ваше отображение удобно, но для чего удобно? Для какой работы? Вот для интенсивной работы оно неудобно. ps: давайте где-нить в одном месте вести обсуждение. для меня предпочтительней foxclub. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 09:58 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1587004]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
105ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 217ms |
0 / 0 |