Как отследить изменения в таблице
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 29 янв 2009, 09:32
- Репутация: 0
Как отследить изменения в таблице
Необходимо отследить изменение поля в таблице. А именно: в таблице поле содержит имена подписей(Label) для точек. При определенном имени точки должен меняться цвет подписи на карте. Проседура SelChangedHandler не подходит - не наш случай. Кто нибудь сталкивался с подобной проблемой? Пожалуйста поделитесь опытом.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Как отследить изменения в таблице
Вы не сказали с какой степень оперативности должно происходить изменение цвета.
Прямо в процессе ввода атрибутивного текста или в процессе вывода слоя на экран?
Прямо в процессе ввода атрибутивного текста или в процессе вывода слоя на экран?
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 29 янв 2009, 09:32
- Репутация: 0
Re: Как отследить изменения в таблице
Сам текст подписи для точки на карте меняется при при выходе из редактируемой ячейки таблицы. Мне нужно перехватить этот момент, чтобы изменить цвет подписи и, возможно, символ для точки.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Как отследить изменения в таблице
Я подозреваю, что все остальные стандартные события вы уже то же испробовали.
Это так? Тогда, добавьте еще несколько строк о том, почему они не сработали в вашем случае.
Вы пытаетесь что именно автоматизировать - правильность ввода оператором или что-то еще?
Это так? Тогда, добавьте еще несколько строк о том, почему они не сработали в вашем случае.
Вы пытаетесь что именно автоматизировать - правильность ввода оператором или что-то еще?
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 29 янв 2009, 09:32
- Репутация: 0
Re: Как отследить изменения в таблице
Извиняюсь за большую задержку с ответом. Проблема осталась. Попробую другими словами. Мне нужно отловить событие происходящее когда текущая ячейка таблицы отредактирована и фокус (не селект строки) перемещен на другую ячейку. Это полный аналог события TDataSource.OnDataChange в Delphi.
Или же мне может подойти другое событие которому тоже есть аналог в Delphi : TDBGrid.OnKeyDown
P.S. я в MapInfo новичок, может быть мой вопрос непонятен именно потому что для других ответ очевиден.
Или же мне может подойти другое событие которому тоже есть аналог в Delphi : TDBGrid.OnKeyDown
P.S. я в MapInfo новичок, может быть мой вопрос непонятен именно потому что для других ответ очевиден.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Как отследить изменения в таблице
Я возможно не до конца понял. Поэтому попытаюсь уяснить. А вы скажете - да/нет/совсем не так.
Вы открываете таблицу с диска.
Выводите ее на экран в виде "таблица" или командой Browse.
Начинаете править одну из ячеек.
Переходите к соседней ячейке - не записи, а именно ячейке.
В этот момент надо перехватить (или обработать) этот переход.
-------------------------
Для начала, отвлеченное замечание. Где-то выше или ниже в конференции был человек, который копал MapBasic глубо и сильно. Может он поможет больше, если обратитесь к нему личным сообщением. По крайне мере коды своих изысканий он выкладывал - охотно.
-------------------------
Я не понял язык программирования. Это Delphi или MapBasic?
Если MB, то как я вижу в Help'е выбор событий у него предельно скудный. Если Delphi, то там вы наверное знаете как увидеть стандартные события OLE-объекта, представленные им для использования.
-------------------------
Я не понял против или за что вы боретесь. Вам надо контролировать оператора для правильного ввода или выполнять некоторые расчеты именно в момент окончания редактирования ячейки? Почему нельзя дождаться закрытия таблицы или хотя бы перехода на другую строку? В этом случае Сработает одно из стандартных событий - SelChangedHandler, WinClosedHandler , WinFocusChangedHandler
Может от задачи я больше пойму?
-------------------------
Я небольшой знаток системных функций Windows, но может там что-то есть, какое-то событие, которое можно перехватить? Номер окна узнать - делается одной командой. Повесить собственную функцию, которая бы запускала что-то, а только потом открывала таблицу в режиме Browse, то же не очень сложно. Надо только заменить пункт меню и обработчик функциональных клавиш на свои собственные.
В конце концов, самый простой способ. Заменить команду открытия, при этом блокировать таблицу от изменения в других окнах и открыть собственное "окно" похожее или даже лучшее, чем окно MapInfo. Как понимаю Delphi вы знаете - значит для того окна напишите, что захотите. А обновлять данные будете посылая OLE команды Mapinfo.
Вы открываете таблицу с диска.
Выводите ее на экран в виде "таблица" или командой Browse.
Начинаете править одну из ячеек.
Переходите к соседней ячейке - не записи, а именно ячейке.
В этот момент надо перехватить (или обработать) этот переход.
-------------------------
Для начала, отвлеченное замечание. Где-то выше или ниже в конференции был человек, который копал MapBasic глубо и сильно. Может он поможет больше, если обратитесь к нему личным сообщением. По крайне мере коды своих изысканий он выкладывал - охотно.
-------------------------
Я не понял язык программирования. Это Delphi или MapBasic?
Если MB, то как я вижу в Help'е выбор событий у него предельно скудный. Если Delphi, то там вы наверное знаете как увидеть стандартные события OLE-объекта, представленные им для использования.
-------------------------
Я не понял против или за что вы боретесь. Вам надо контролировать оператора для правильного ввода или выполнять некоторые расчеты именно в момент окончания редактирования ячейки? Почему нельзя дождаться закрытия таблицы или хотя бы перехода на другую строку? В этом случае Сработает одно из стандартных событий - SelChangedHandler, WinClosedHandler , WinFocusChangedHandler
Может от задачи я больше пойму?
-------------------------
Я небольшой знаток системных функций Windows, но может там что-то есть, какое-то событие, которое можно перехватить? Номер окна узнать - делается одной командой. Повесить собственную функцию, которая бы запускала что-то, а только потом открывала таблицу в режиме Browse, то же не очень сложно. Надо только заменить пункт меню и обработчик функциональных клавиш на свои собственные.
В конце концов, самый простой способ. Заменить команду открытия, при этом блокировать таблицу от изменения в других окнах и открыть собственное "окно" похожее или даже лучшее, чем окно MapInfo. Как понимаю Delphi вы знаете - значит для того окна напишите, что захотите. А обновлять данные будете посылая OLE команды Mapinfo.
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 29 янв 2009, 09:32
- Репутация: 0
Re: Как отследить изменения в таблице
Спасибо за правильно поставленные вопросы. После них у меня уже нет сомнения в каком направлении решать свою проблему. Но раз вопросы прозвучали, то я на них отвечу в том же порядке.
да
----------------------
совет знающего человека может понадобится в дальнейшем
----------------------
был MapBasic, теперь наверное будет Delphi
----------------------
визуализировать результат редактирования ячейки для контроля и возможно подбора значения
"по горячим следам"
----------------------
за последний блок советов - отдельное спасибо
да
----------------------
совет знающего человека может понадобится в дальнейшем
----------------------
был MapBasic, теперь наверное будет Delphi
----------------------
визуализировать результат редактирования ячейки для контроля и возможно подбора значения
"по горячим следам"
----------------------
за последний блок советов - отдельное спасибо
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя