Цитата |
---|
mihalych72 написал: крайне неудобно!!! мне придется алгоритм поиска переделывать, чтобы хранить результаты поиска и сохранялось выделение отмеченных объектов. |
чтобы что-то выделить, надо где-то иметь список того, что выделить.
Цитата |
---|
mvMap.SetObjSelected( xFinderPT.MapFind.MapSelect, xFinderPT.MapFindObj.ColorImage, true); |
Метод TMapView.SetObjSelected записывает контекст поиска во внутренний MapSelect, что далее для выделения объектов не требует обязательного наличия MapSelect, переданного в первом параметре данного метода.
Поэтому его удаление не должно никак влиять.
GIS ToolKit поставляется с исходными кодами. Вы всегда можете посмотреть, как работает тот или иной метод внутри.
xFinderPT - это некий Ваш объект, как он работает и что делает при удалении, не известно.
С каким компонентом TMapView связаны xFinderPT.MapFind, xFinderPT.MapFindObj, xFinderPT.MapFind.MapObj?
ну а если Вы будете осуществлять выделение DoViewSelect, то отвечающий за перечень выделяемых объектов экземпляр TMapSelect надо оставлять "живым", пока требуется выделение.
Цитата |
---|
mihalych72 написал: когда мне нужно найти объект на карте по Key, как мне лучше искать: так? fMapFind.MapSelect.SetSelectKey( aKey, aKey); или так? fMapFind.MapSelect.KeyObject( StrToInt( aKey) := true; |
Возникла путаница понятий.
Есть уникальный номер объекта на карте (он же ключ - целочисленное значение).
Этот уникальный номер не меняется при изменении карты.
Есть порядковый номер объекта на карте (тоже целочисленное значение). После сортировки карты этот номер меняется.
А еще есть классификационные признаки, определяющие условный знак объекта из цифрового классификатора.
Условный знак имеет внешний код (неизменное целочисленное значение), внутренний код (порядковый номер знака - меняется при добавлении и удалении условных знаков), короткое имя (ключ - короткое символьное значение), длинное имя.
TMapSelect.KeyObject - это короткое имя (ключ) условного знака в классификаторе карты. См. справку -
Если требуется найти конкретный объект по уникальному номеру, можно не использовать TMapFind, а сразу настроить TMapObj на нужный объект:
Если с помощью TMapFind, то SetSelectKey.