Дерево по одному файлу в станд. browse

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Larion
Бывалый
Сообщения: 91
Зарегистрирован: 28 Ноябрь 2005, 10:26
Откуда: Novosibirsk

Дерево по одному файлу в станд. browse

Сообщение Larion »

У меня есть файл который хорошо отображается в SingleFileTree как переделать этот файл для browse
С уважением Larion.
kreator
✯ Ветеран ✯
Сообщения: 4983
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Дерево по одному файлу в станд. browse

Сообщение kreator »

Larion писал(а): 06 Февраль 2020, 13:04 У меня есть файл который хорошо отображается в SingleFileTree как переделать этот файл для browse
А зачем? Автоматически броуз не сможет правильно отобразить дерево. Нужна предварительная подготовка. Либо использовать скульную вьюху. Либо собирать очередь вручную по алгоритму SingleFileTree, и использовать, видимо, IMDD для полноценного броуза. И, главное, зачем? Что не так с SingleFileTree?
We are hard at work… for you. :)
Larion
Бывалый
Сообщения: 91
Зарегистрирован: 28 Ноябрь 2005, 10:26
Откуда: Novosibirsk

Дерево по одному файлу в станд. browse

Сообщение Larion »

SingleFileTree полностью устраивает но не могу организовать поиск чтобы найденная строка открывалась.
С уважением Larion.
kreator
✯ Ветеран ✯
Сообщения: 4983
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Дерево по одному файлу в станд. browse

Сообщение kreator »

Я делаю так:

Код: Выделить всё

setcursor(CURSOR:Wait)
if ~LOC:TreeExpandAll
  do TSF3:ExpandAll
  LOC:TreeExpandAll = 1
end  
i# = TSF3:CurrentChoice
loop
  i# += 1
  get(Queue:SingleFileTree,i#)
  if errorcode()=30                     ! Конец очереди, начинаем с первой записи
    i# = 0
    cycle
  end
  if i#=TSF3:CurrentChoice              ! Прошли круг и ничего не нашли
    break
  end
  if instring(clip(upper(LOC:SearchString)),upper(Queue:SingleFileTree.TSF3:Display),1,1)
    break
  end  
end  
setcursor()
if i#<>TSF3:CurrentChoice
  select(?FileTree,i#)
  post(EVENT:NewSelection,?FileTree)
else  
  select(?FileTree,i#)
end
Смысл простой. Есть контрол строки поиска. Пользователь набирает там подстроку, нажимает кнопку найти или Enter. Поскольку этот шаблон не держит всё в памяти, надо загрузить всё дерево (рутина TSFх:ExpandAll). Поскольку это занимает время, хорошо бы помнить этот момент. Дальше должно быть понятно.
We are hard at work… for you. :)
Larion
Бывалый
Сообщения: 91
Зарегистрирован: 28 Ноябрь 2005, 10:26
Откуда: Novosibirsk

Дерево по одному файлу в станд. browse

Сообщение Larion »

Спасибо выручили. В моём случае найденных строк может быть много я заряжаю Queue.
Из Queue я встану SingleFileTree с Вашей подсказкой.
С уважением Larion.
kreator
✯ Ветеран ✯
Сообщения: 4983
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Дерево по одному файлу в станд. browse

Сообщение kreator »

Larion писал(а): 06 Февраль 2020, 16:12 Спасибо выручили. В моём случае найденных строк может быть много я заряжаю Queue.
Из Queue я встану SingleFileTree с Вашей подсказкой.
Явно переводчик нужен. :mrgreen:
У меня в деревьях много повторяющихся строк. Поэтому смысл поиска такой. Раскрыть полностью дерево и передвигаться по найденным подстрокам. Пользователь для этого всё время нажимает кнопку "Поиск". Есть задачка (пока на обсуждении) организовать фильтр по дереву. Отображать только ветки, имеющие подстроку поиска. На первый взгляд сложная задача для данного шаблона.
We are hard at work… for you. :)
Larion
Бывалый
Сообщения: 91
Зарегистрирован: 28 Ноябрь 2005, 10:26
Откуда: Novosibirsk

Дерево по одному файлу в станд. browse

Сообщение Larion »

Есть задачка (пока на обсуждении) организовать фильтр по дереву. Отображать только ветки, имеющие подстроку поиска. На первый взгляд сложная задача для данного шаблона.
Да фильтр это было замечательно. Можно рассмотреть вариант раскрыть несколько веток полностью и искать в них.
Но тут надо решить проблему выборочного полного открытия веток.
С уважением Larion.
Ответить