Как отследить изменения в таблице

MapInfo, MapBasic
Ответить
kai
Новоприбывший
Сообщения: 4
Зарегистрирован: 29 янв 2009, 09:32
Репутация: 0

Как отследить изменения в таблице

Сообщение kai » 29 янв 2009, 09:44

Необходимо отследить изменение поля в таблице. А именно: в таблице поле содержит имена подписей(Label) для точек. При определенном имени точки должен меняться цвет подписи на карте. Проседура SelChangedHandler не подходит - не наш случай. Кто нибудь сталкивался с подобной проблемой? Пожалуйста поделитесь опытом.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Как отследить изменения в таблице

Сообщение Boris » 29 янв 2009, 18:25

Вы не сказали с какой степень оперативности должно происходить изменение цвета.
Прямо в процессе ввода атрибутивного текста или в процессе вывода слоя на экран?

kai
Новоприбывший
Сообщения: 4
Зарегистрирован: 29 янв 2009, 09:32
Репутация: 0

Re: Как отследить изменения в таблице

Сообщение kai » 30 янв 2009, 08:00

Сам текст подписи для точки на карте меняется при при выходе из редактируемой ячейки таблицы. Мне нужно перехватить этот момент, чтобы изменить цвет подписи и, возможно, символ для точки.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Как отследить изменения в таблице

Сообщение Boris » 01 фев 2009, 03:36

Я подозреваю, что все остальные стандартные события вы уже то же испробовали.
Это так? Тогда, добавьте еще несколько строк о том, почему они не сработали в вашем случае.
Вы пытаетесь что именно автоматизировать - правильность ввода оператором или что-то еще?

kai
Новоприбывший
Сообщения: 4
Зарегистрирован: 29 янв 2009, 09:32
Репутация: 0

Re: Как отследить изменения в таблице

Сообщение kai » 18 фев 2009, 09:56

Извиняюсь за большую задержку с ответом. Проблема осталась. Попробую другими словами. Мне нужно отловить событие происходящее когда текущая ячейка таблицы отредактирована и фокус (не селект строки) перемещен на другую ячейку. Это полный аналог события TDataSource.OnDataChange в Delphi.
Или же мне может подойти другое событие которому тоже есть аналог в Delphi : TDBGrid.OnKeyDown
P.S. я в MapInfo новичок, может быть мой вопрос непонятен именно потому что для других ответ очевиден.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Как отследить изменения в таблице

Сообщение Boris » 18 фев 2009, 10:37

Я возможно не до конца понял. Поэтому попытаюсь уяснить. А вы скажете - да/нет/совсем не так.
Вы открываете таблицу с диска.
Выводите ее на экран в виде "таблица" или командой Browse.
Начинаете править одну из ячеек.
Переходите к соседней ячейке - не записи, а именно ячейке.
В этот момент надо перехватить (или обработать) этот переход.
-------------------------
Для начала, отвлеченное замечание. Где-то выше или ниже в конференции был человек, который копал MapBasic глубо и сильно. Может он поможет больше, если обратитесь к нему личным сообщением. По крайне мере коды своих изысканий он выкладывал - охотно.
-------------------------
Я не понял язык программирования. Это Delphi или MapBasic?
Если MB, то как я вижу в Help'е выбор событий у него предельно скудный. Если Delphi, то там вы наверное знаете как увидеть стандартные события OLE-объекта, представленные им для использования.
-------------------------
Я не понял против или за что вы боретесь. Вам надо контролировать оператора для правильного ввода или выполнять некоторые расчеты именно в момент окончания редактирования ячейки? Почему нельзя дождаться закрытия таблицы или хотя бы перехода на другую строку? В этом случае Сработает одно из стандартных событий - SelChangedHandler, WinClosedHandler , WinFocusChangedHandler
Может от задачи я больше пойму?
-------------------------
Я небольшой знаток системных функций Windows, но может там что-то есть, какое-то событие, которое можно перехватить? Номер окна узнать - делается одной командой. Повесить собственную функцию, которая бы запускала что-то, а только потом открывала таблицу в режиме Browse, то же не очень сложно. Надо только заменить пункт меню и обработчик функциональных клавиш на свои собственные.
В конце концов, самый простой способ. Заменить команду открытия, при этом блокировать таблицу от изменения в других окнах и открыть собственное "окно" похожее или даже лучшее, чем окно MapInfo. Как понимаю Delphi вы знаете - значит для того окна напишите, что захотите. А обновлять данные будете посылая OLE команды Mapinfo.

kai
Новоприбывший
Сообщения: 4
Зарегистрирован: 29 янв 2009, 09:32
Репутация: 0

Re: Как отследить изменения в таблице

Сообщение kai » 27 фев 2009, 08:16

Спасибо за правильно поставленные вопросы. После них у меня уже нет сомнения в каком направлении решать свою проблему. Но раз вопросы прозвучали, то я на них отвечу в том же порядке.

да
----------------------
совет знающего человека может понадобится в дальнейшем
----------------------
был MapBasic, теперь наверное будет Delphi
----------------------
визуализировать результат редактирования ячейки для контроля и возможно подбора значения
"по горячим следам"
----------------------
за последний блок советов - отдельное спасибо

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей