На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Почему сохраняется объект на карте, транзакция которого отменена

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Почему сохраняется объект на карте, транзакция которого отменена, TMapEditMetric
 
Здравствуйте!

Используем компонент MapEditMetric1
для перемещения объекта по карте.
Все хорошо работает.
Требуется программе в методе MapEditMetric1StopAction
выполнять
form_main.MapObj1.Commit;
form_main.MapObj1.Style := OS_NORMAL;
form_main.MapObj1.Repaint;
form_main.mvMap.AdjustData;
form_main.mvMap.Repaint;

Но только для объектов
If (form_main.MapObj1.ExCode = 10000007) or
(form_main.MapObj1.ExCode = 10000008) or
(form_main.MapObj1.ExCode = 10000012) or
...

для других объектов метод
form_main.MapObj1.Commit;
не выполняется

Выполняется вместо этого
form_main.MapObj1.Repaint;
form_main.mvMap.Repaint;

В результате на экране монитора все хорошо отрабатывается,
т.е. для других объектов, новое положение объекта не запоминается, все хорошо.

Однако,
любопытный пользователь щелкает мышью по тому месту, до куда он пытался дотянуть перемещаемый объект,
и который не запомнит свое новое положение.
В результате на экране появляется выбранный объект, которого фактически на карте его нет.
Почему?
 
Компонент TMapEditMetric выполняет отрисовку объекта, заданного в настроенном для него TMapObj.
Объект совершенно не обязательно должен сохранятся на карту для этого, отрисовка выполняется из памяти, транзакции на это никак не влияют.
 
Цитата
Денис Вицко написал:
Компонент TMapEditMetric выполняет отрисовку объекта, заданного в настроенном для него TMapObj.
Объект совершенно не обязательно должен сохранятся на карту для этого, отрисовка выполняется из памяти, транзакции на это никак не влияют
Денис, вопрос как раз в том, что в памяти объект остается.
Можно ли очистить память, если не прошла команда Commit?  
9991.PNG (9.72 КБ)
9993.PNG (9.35 КБ)
9992.PNG (10.31 КБ)
 
Цитата
Сергей Викторович написал:
любопытный пользователь щелкает мышью по тому месту, до куда он пытался дотянуть перемещаемый объект,и который не запомнит свое новое положение.

Видимо, этот клик приводит к MapEditMetric.StartAction, поэтому отрисовывается объект, всё еще находящийся в TMapEditMetric.MapObj.

Значит, что-то не так в логике работы интерфейса программы.
Как должно быть - Вам виднее. Либо не вызывать на такие клики MapEditMetric.StartAction, либо сначала выбрать нужный объект для нового перемещения и заполнить его в MapEditMetric.MapObj, либо если в MapEditMetric по Вашему мнению должен попасть пустой объект, то очистить его.

Очистить объект в MapObj просто - метод TMapObj.ClearObject
 
Цитата
Денис Вицко написал:
Очистить объект в MapObj просто - метод  TMapObj.ClearObject
Спасибо, Денис.
Как всегда просто и доступно!
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности