|
|
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
Можно ли сделать поиск в Дереве созданном кодом(без таблицы)? Искать надо имя узла(св-во Node.Text) по заданному значению. Если можно, то помогите с кодом - только-только начал постигать этот элемент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 13:52:00 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
жди понедельника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 14:01:24 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 14:50:52 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
Сделал немного по-другому, учитывая, что строка поиска может быть короче. Используя тот же синтаксис: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 15:29:06 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
А это чего значит? Код: plaintext Может так: Код: plaintext авторА вот как осуществить "Найти далее"? Запоминай уже найденные значения Nodex.Key в публичной переменной типа массив. И при поиске проверяй нет ли найденного Nodex.Key в массиве ключей, если все что удалось найти уже было найденно ранее очищай переменную. Вообще у тебя что-то не так. Загони лучше значения для дерева в таблицы (раз оно такое здоровое что нужен поиск) и осуществляй поиск внутри таблицы через (к примеру) рекордсет. Там проверяй сколько похожих записей в таблице, и если RecordCount>1 тогда имеет смысл "искать далее" если =1 то все что можно нашли, если Bof and Eof тогда ничего не найденно. Ну в этом духе короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 16:12:21 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
2 Jem: Левая звездочка вроде лишняя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 16:23:38 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч. Да ладно не помешает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 16:49:15 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
А значит это следующее: Если первые n-знаков в имени узла, где n равно длине заданного слова, равны по содержанию заданному слову, то это то, что ты ищешь. Почему-то мне Like не нравиться, может из-за того, что надо добавлять всю эту конкатенацию, может еще почему... А левая звездочка, действительно, не нужна, иначе будет применено условие "совпадение с любой частью", что совсем не нужно. Насчет таблицы для Дерева я уже подумываю, пока не понял как это сделать лучше - базу хотят переделать для работы нескольких пользователей(файл-сервер) и, если каждому организовывать локальную табл Дерево, то как они будут видеть результат работы друг-друга? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 18:05:36 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
авторчто надо добавлять всю эту конкатенацию авторсовпадение с любой частью Я просто предложил более универсальный алгоритм поиска. пользователь не обязан помнить в каком порядке идут слова в тексте узла, также можно ввести просто часть слова. авторорганизовывать локальную табл Дерево, то как они будут видеть результат работы друг-друга? Никак, дерево в любом сучаи придется перестраивать, будь то локальная таблица или связанная. Я вообще не понимаю зачем в тривью отображать те уровни ерархии которые часто подвергаются редактированию, что в конечном счете требует перезагрузки дерева. Ну хотя не хочется лезть в дебри, это тема отдельного топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 19:10:22 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
У меня названия узлов - фамилии людей, согласись - пытаясь найти, скажем, "Ованесов" и введя условие "ова", я при таком универсальном алгоритме могу получить и Петр ова , и Иван ова , и т.п. Насчет частого редактирования Дерева(в смысле добавления новых узлов/удаления старых) это я погорячился - данные довольно статичные. ---------------------------------- А вот сейчас пытаюсь создать таблицу по Дереву - не выходит. Точнее сама таблица создается, но пустая, а заполняться не хочет. Подскажите, ведь есть, небось, отработанная процедура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 19:38:31 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
Jem Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Я тоже заинтересовался этим постом и использовал Me.TreeView.DropHighlight = Me.TreeView.SelectedItem для выделения нода, но потом если я перемещаюсь по дереву, то все время возращаюсь на этот нод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2004, 16:16:18 |
|
||
|
Поиск в Дереве.
|
|||
|---|---|---|---|
|
#18+
Если я вник в суть предыдущих постов, то поиск подобным образом будет не удобен юзеру, так как, если дерево отсортировано, то по нажатию "Найти далее" - юзер будет скакать по нодам взад-вперед аки горный козел. Правда ничто не мешает искать в отсортированном запросе :). Но я сделал для себя (размер дерева позволяет - не более 500 нод) отсортированый по имени ноды массив (с Key'ями нод), по которому и ищется последовательно ноды. Выбор данного сопособа целиком и полностью не правильный :) - но у меня несколько деревьев - лень было для каждого писать процедуры поиска - а так получается универсально и быстро. Но все же лучше через запросы/процедуры - и красивей и удобней, да и универсально сделать то же можно, никто не мешает :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. arrNames - двумерный Public массив с именем и ключом ноды, массив можно создавать и сортировать в момент создания дерева либо в момент открытия формы Поиск (у меня так). В момент заполнения массива не забыть сделать Trim. Call Forms(Me.OpenArgs).ctlTV_NodeClick(tv.Nodes.Item(CStr(arrNames(i, 1)))) - это просто вызов функции из формы на котром ростет дерево (там просто отображается с листвью доп. информация) - можно заменить на Selected/Expanded = true grFind.Value - 3 флажка на форме поиска: толко сначала слова, с лбой частью слова, слово целиком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 09:27:10 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32529746&tid=1672830]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
114ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 412ms |

| 0 / 0 |
