Прошу прощения, не углубился до конца в вопрос.
При установке в hSelect-е обобщенных условий поиска, действуют именно эти условия. Можно для текущей работы с этим контекстом hSelect-а отключить какие-то объекты, но при передаче куда-либо или копировании hSelect-а эти флажки не передаются. То есть когда Вы вызываете mapSetSiteSeekSelect в условия выделения передаются только условия, заданные в исходном hSelect-е (без флажков, установленных mapSelectObject).
Исключением является список объектов, задаваемый в hSelect-е непосредственно по номерам объектов (это функции работы с Select-ом со словом Sample).
Наиболее оптимальным вариантом в Вашем случае будет:
- выполнить начальную операцию выборки объектов (Вы это делаете через диалог, насколько я понял) - получаем Select1;
- создать новый пустой Select2;
- перебирая результаты Select1 добавлять в Select2 объекты, удовлетворяющие Вашим условиям, с помощью mapSelectSample(Un) или mapFastSelectSample(Un);
- передать Select2 в mapSetSiteSeekSelect для установки выделения.
Таким образом, получаем "легкий" Select2, содержащий только нужные Вам объекты и не нагруженный лишними условиями поиска.
Есть и другие варианты, но их я бы не рассматривал, поскольку они все более "тяжелые", требуют множественных переборов и задействуют больше ресурсов.
Функции добавления объектов в список (также рекомендую посмотреть и другие функции в seepapi.h со словом SelectSample, чтобы иметь представление о том, как правильно настроить HSelect для работы со списком объектов):
Скрытый текст |
---|
Код |
---|
// Установить доступ к заданному объекту заданного листа карты
// select - контекст условий поиска
// listname - имя листа карты,
// key - уникальный номер объекта в карте
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapSelectSample(HSELECT select, const char *listname,
long int key);
_MAPIMP long int _MAPAPI mapSelectSampleUn(HSELECT select, const WCHAR *listname,
long int key);
// Установить доступ к заданному объекту заданного листа карты
// Выполняется без проверки повторных значений номеров объектов для
// ускорения формирования списков
// select - контекст условий поиска
// listname - имя листа карты,
// key - уникальный номер объекта в карте
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapFastSelectSample(HSELECT select, const char * listname,
long int key);
_MAPIMP long int _MAPAPI mapFastSelectSampleUn(HSELECT select, const WCHAR *listname,
long int key); |
|