![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Подскажите, пожалуйста как можно реализовать поиск в закрытых узлах дерева и установку записи как текущей?
Ситуация такая: на форме 3 грида: "работы" "материалы" "смета", гриды "работы" и "материалы" отображают записи соответствующих DataSource, в которые записи попадают из memtable - ов. В memtable записи попадают с помощью метода LoadFromDataSet из датасетов. В гридах "работы" "материалы" отображаются справочники в виде дерева. Однако в справочнике "работы" при его заполнении можно указать связанные с работой материалы. (данные записываются в базе данных в отдельную таблицу, для простоты объяснения назовем её "связи"). При двойном клике на работе в гриде "работы" полю IsSelected выбранной строки присваивается значение 1, происходит заполнение IBQuery (который тоже находится на форме и служит для выбора из БД, из таблицы "связи" материалов связанных с этой работой, если они были заданны при формировании справочника "работы"). Дальше идет перебор в цикле записей выбранных в IBQuery, поиск материала в memtable отвечающем за вывод в грид "материалы". установка записи, с искомым материалом, как текущей и изменение у этого материала значения поля IsSelected на 1. В итоге мемтейбл грида "смета" добавляются записи из мемтейблов "работы" и "материалы" со значением = 1. Все замечательно работает, если в инспекторе объектов memtable в свойстве TreeList -> DefaultNodeExpanded выставить значение true. Тогда дерево раскрыто и всё работает. Но заказчик сказал, что дерево при открытии должно быть свёрнуто. А вот в свёрнутом дереве у меня не получается сделать поиск материала и установить запись, как текущую, чтоб изменить значение поля IsSelected. При раскрытом дереве мне достаточно было сделать вот такой поиск: Код:
mmTable.Locate('RECID', qQuery.FieldByName('REF_RECID').AsInteger, []); А сейчас, как сделать поиск в закрытом дереве и установить запись, как текущую? |