Автор: Dronton2
Дата сообщения: 10.05.2007 10:25
clear2121
Как я понял:
ListBox содержит список товаров.
TreeList содержит перечень продавцов с полем, в котором перечислены продаваемые товары.
И требуется при прохождении по списку товаров подсвечивать в дереве искомых продавцов.
Задача делится на 2 части:
1. Определить событие в ListBox, срабатывающее при переходе между его элементами. (Если это DBListBox, то наверное можно привязаться к событыю из DataSet)
2. Выбрать нужные данные из дерева. Если это DBTreeList, до в датасете можно использовать фильтр, что-то наподобие такого:
DataSet.DisableControls;
DataSet.Filter := '%;5;%';
DataSet.Filtered := true;
// Здесь нужно либо отметить в датасете все записи, поменяв значение в каком-либо поле, либо составить отдельный список отфильтрованных значений ключевого поля
DataSet.Filtered := False;
DataSet.EnableControls;
// Если подсветка происходит в OnCustomDrawCell и были установлены значения в поле, то здесь всё понятно
// В противном случае здесь нужно составить список TreeList.Selections
Если датасет не использовать, то нужно написать процедуру, которая проходит по всем элементам дерева и сканирует определённое строковое поле на предмет присутствия в нём подстроки ';5;' и и добавляет искомый элемент в TreeList.Selections
Можно ещё заблаговременно на сервере БД составить запрос, возвращающий список товаров и строковое поле со списком продавцов, его продающих. Это будет работать быстрее.