Особенности работы с элементом Tree

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

Особенности работы с элементом Tree

Сообщение Timaas »

Помогите начинающему кларионисту... а то программиста сократили и я стал универсальным солдатом.

Есть Browsник с кучей полей и conditional behaviors, нужно реализовать связь tree с броузником по одному из полей базы браузника, типа - если поле tree равно соответсвующему полю записи то её видно, вроде система категорий. У меня Clarion 6.3 build9058. Помогите плиз, совсем туго идёт с Клашей раздупление %-(
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

Re: Особенности работы с элементом Tree

Сообщение Timaas »

Нет, ну, господа, действительно надо сделать связь бровзника с деревом. Начальство давит, а кроме меня некому ! Неужели такую простую задачку никто не может решить ! :( ?
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Особенности работы с элементом Tree

Сообщение BOB »

Все программеры ленивые , но не все ленивые программеры и если я за первое прочтение ничего не понял , то второй раз читать мне в лом . Опишите подробнее чего и из чего надо . Это у Вас сгенерированная программа или рукопашная ? если у Вас АРР , то я не помогу (не спец.).
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3285
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

Re: Особенности работы с элементом Tree

Сообщение Дед Пахом »

Тоже не понял. двигаемся по броузу - перестраиваем tree? Или наоборот? В любом случае, если всё на стандартных шаблонах Browse и RelationTree, то и там и там есть Record Filter, в рантайм надо этот фильтр менять.
С уважением, ДП
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

Re: Особенности работы с элементом Tree

Сообщение Timaas »

Идея в том, что программа чужая, и в ней в Browse(?List) выводяться все записи. У записи Za есть поле
Za:category(LONG) означающее категорию объектов. Я долго копался и таки создал по аналогии из другого куска программы работающее дерево TreeBox(?TreeList) его связал с таблицей Cat в которой записаны Cat:name (STRING) - названия категорий и Cat:avto(LONG) номер для связи с Za:category(LONG). В обоих таблицах я по аналогии с другим деревом создал поля Parent(так понимаю номер родительского поля), ID(идентификационный номер внутри Parent'a) и Last(Так и не понял что это), скопировал соответствующий Embed, создал TreeUpdateButtons, скопировал процедуру и прописал в Extensions -> Browse -> Update скопированную процедуру и ,о чудо!, дерево заработало - я был безумно счастлив(на это всё я потратил больше 2х недель и перечитал немеряно инфы на русском и ангийском по сабжу). Теперь осталось ограничить вывод в Browse(?List) по категории - т.е. если Za:category(LONG) равно выбранному Cat:avto(LONG) в дереве, то показать запись в Browse,- иначе не показывать.
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Особенности работы с элементом Tree

Сообщение BOB »

Ну дык и поздравляю . Первое время самое тяжелое (когда не знаеш что спросить) скоро пройдет.
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

Re: Особенности работы с элементом Tree

Сообщение Timaas »

BOB писал(а):Ну дык и поздравляю . Первое время самое тяжелое (когда не знаеш что спросить) скоро пройдет.
Ну как же не знаю! Я спрашиваю :
"осталось ограничить вывод в Browse(?List) по категории - т.е. если Za:category(LONG) равно выбранному Cat:avto(LONG) в дереве, то показать запись в Browse,- иначе не показывать." <- КАК ЭТО СДЕЛАТЬ ?

ЛЮДИ ! Услыште меня надоело выгребать на работе, я на Сях только писал, а работу сейчас терять ой как не охота и праздники заканчиваються ПОМОГИТЕ ПЛИЗ !!!
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Особенности работы с элементом Tree

Сообщение BOB »

Блин , те кто с АВС работает спят .
Делается все приблизительно так же как в сях .
Смотрим какая процедура отвечает за заполнение ?list.Смотрим какие параметры она принимает и тд.
Вы бы скопировали прямо сюда кусок программы уже кто-нибудь бы помог , а так через наводящие вопросы.
У Вас ?list реагирует когда вы в tree перемещаетесь ?
Отверы
1 да реагирует , но выводит в лист всегда все строки (не используется фильтр в лист).
2 не уверен что реагирует , возможно лист заполняется один раз при открытии (не отслеживается событие перемещения).
99 ...

Найдите в процедуре выводящей tree событие event:newselection (возникает при меремещении на другую строку )после него что написано ? Я даже не знаю можете ли вы посмотреть сгенеренный код . Если не можете скопировать проблемные места , кидайте сюда всю АРР никто ее не украдет .
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

Re: Особенности работы с элементом Tree

Сообщение Timaas »

BOB писал(а): Смотрим какая процедура отвечает за заполнение ?list.Смотрим какие параметры она принимает и тд.
В том то и проблема, что за заполнение ?list отвечает не одна , а штук 10 процедур и функций и выводяться в брауз не поля, а локальные переменные после обработки соответствующими процедурами и функция - ,в общем, чёрт ногу сломит. Уже месяц изучаю эту огромную программу(app весит под 4 метра) и Кларион - прогресса Ноль.
BOB писал(а): У Вас ?list реагирует когда вы в tree перемещаетесь ?
Ответы
1 да реагирует , но выводит в лист всегда все строки (не используется фильтр в лист).
2 не уверен что реагирует , возможно лист заполняется один раз при открытии (не отслеживается событие перемещения).
99 ...
Ответы:
1 не реагирует.
2 НЕ РЕАГИРУЕТ.
3 !! НЕ РЕАГИРУЕТ, ПОТОМУ ЧТО Я НЕ ЗНАЮ КАК ЭТО НАПИСАТЬ .
4 Не могу разобраться ни с фильтрами ни с conditional behaviors в extentions'ах
BOB писал(а): Я даже не знаю можете ли вы посмотреть сгенеренный код .
Если не можете скопировать проблемные места , кидайте сюда всю АРР никто ее не украдет .
Посмотреть Source и clw'шки, а также копировать могу - просто копировать очень много. Скажите , что именно Вам и куда отправить - моментально будет прислано.
А на счёт апп
-Во первых немогу - мне запрещали исходники даже домой брать, я их втихаря утащил вместе с кларой.
-Во вторых 4Мб кода + DLL(LIB'ы) выкладывать на общий доступ - больше шансов, что его "украдут", а не захотят разбираться!
BOB писал(а): Найдите в процедуре выводящей tree событие event:newselection (возникает при перемещении на другую строку )после него что написано ?
Такой вообще нет - есть только TakeNewSelection у window и у Browse и то в других процедурах.
А процедура добавления, изменения и удаления - написана мной, поэтому в ней ничего нет и событие newselection я не описывал , потому что не знаю, что туда писать.
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

Re: Особенности работы с элементом Tree

Сообщение Timaas »

Дед Пахом писал(а):Тоже не понял. двигаемся по броузу - перестраиваем tree? Или наоборот? В любом случае, если всё на стандартных шаблонах Browse и RelationTree, то и там и там есть Record Filter, в рантайм надо этот фильтр менять.
Вы не могли бы поподробнее о Record Filter - как им пользоваться, совсем не могу информации найти...
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Особенности работы с элементом Tree

Сообщение BOB »

Ну вот я сгенерил пример school .
слева встал па процедуру которая у вас выводит tree.
справа embeds открываем properties.
находим событие newselection жмем кнопку insert и указываем процедуру обслуживающую лист или вообще свою source.Значит процедура листа будет вызываться при каждом движении по трее.
Или лист и трее у вас в одном окне ?
Потом становитесь на процедуру листа и открываете его свойства.Кнопку browse box behavior и record filter пробуем писать фильтр типа одно поле = другое поле (надо пробовать я в АРР и АВС вообще не работаю) .
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

Re: Особенности работы с элементом Tree

Сообщение Timaas »

:D Спасибо. Не совсем понял, что вы предложили. Три и брауз у меня в одном окне, и по выбору в Три должны не показываться лишние записи брауза. пошёл пробовать бороться с фильтрами - так я ещё не прбовал...
BOB
Ветеран
Сообщения: 336
Зарегистрирован: 17 Июль 2005, 5:43

Re: Особенности работы с элементом Tree

Сообщение BOB »

Если в одном окне вам нужно в фильтре для листа написть Za:category=Cat:avto , а из события newselection для трее
вызывать обновление для листа . Процедуры обновления я не знаю , но думаю что-то вроде reset.
самолетчик
Посетитель
Сообщения: 33
Зарегистрирован: 31 Август 2005, 5:29
Откуда: г. Артем

Re: Особенности работы с элементом Tree

Сообщение самолетчик »

Если у вас файл для browse является подчиненным файла дерева и связь установлена по ключу many : 1, то:
1) В свойствах процедуры нажмите кнопку Tables и для файла browse установите ключ связи с материнским файлом: установите курсор на файл с ключем и нажмите кнопку Edit, выберите ключ связи;
2)Нажмите кнопку BrowseBox Behavior для окна Browse в меню Action и установите в поле Rangе limit field поле ключа Browse путем выбора
3) В поле Rangе limit type выберите File Relationship
4) В поле Related file выберите материнский файл (дерево)
Теперь при выборе записи в дереве будут отражаться связанные записи в browse
Timaas
Новичок
Сообщения: 21
Зарегистрирован: 30 Март 2009, 14:40

Re: Особенности работы с элементом Tree

Сообщение Timaas »

самолетчик писал(а):Если у вас файл для browse является подчиненным файла дерева и связь установлена по ключу many : 1, то:
А можно по подробнее, а то я не понял какие именно параметры должны быть выставлены у таблиц в словаре ?
Ответить