Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.05.2012, 10:30
Lokky Lokky вне форума
Прохожий
 
Регистрация: 19.12.2011
Сообщения: 4
Репутация: 10
По умолчанию MemTable и поиск в закрытом дереве

Подскажите, пожалуйста как можно реализовать поиск в закрытых узлах дерева и установку записи как текущей?

Ситуация такая:
на форме 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, []);
и запись устанавливалась как текущая, нужное мне поле записи я мог изменить.

А сейчас, как сделать поиск в закрытом дереве и установить запись, как текущую?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025