Информация о выделенном объекте

MapInfo, MapBasic
Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Информация о выделенном объекте

Сообщение Radost_ »

Добрый день,

как сделать так, чтобы при выделении объекта появлялось окошко и в нем информация о значении определенного столбца для этой таблицы. только чтоб не в таблице выделять а на карте.
Элемент выделения можно написать через ToolHander,
через SelectionInfo можно вывести имя таблицы, количество строк.
Мне нужно значение определенного параметра. Как это сделать, подскажите пожалуйста.
Мапинфо и мапбейсик 9.5
у всех в голове свои тараканы
Andrew
Активный участник
Сообщения: 134
Зарегистрирован: 01 окт 2009, 08:52
Репутация: 3
Откуда: Москва

Re: Информация о выделенном объекте

Сообщение Andrew »

Самое простое - это вывод значения через команду Print. Если перед выводом очищать это окошко, то в нем будет всегда один результат.
Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Re: Информация о выделенном объекте

Сообщение Radost_ »

что через Print я понимаю. Я не понимаю что внутри. Как правильно прописать чтоб выводилось значение конктретного поля.
Таблица.Поле не рабоает.
И я новичок, да
у всех в голове свои тараканы
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Информация о выделенном объекте

Сообщение Boris »

используйте установку указателя на конкретную строку запроса, который получается при выделении командой
FETCH
после этого можно обращаться к отдельной колонке в формате [имя_таблицы].[имя_колонки]
Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Re: Информация о выделенном объекте

Сообщение Radost_ »

но тогда же указывыются строки из таблицы.
мне нужно чтоб тыкалось на КАРТУ и появлялось соответствующее значение определенного параметра. урезанное Информация об объекте как бы
у всех в голове свои тараканы
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Информация о выделенном объекте

Сообщение Boris »

а что вы понимаете под параметром? информацию, которая отсутствует в атрибутах таблицы? Геолинк точно не подходит?
Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Re: Информация о выделенном объекте

Сообщение Radost_ »

геолинком не пользовалась и не знаю что это. не стала лезть.
есть карта. на ней есть объекты - полигоны. у полигона есть свои параметры, ну например - площадь, номер, количество населения, количество многоэтажных зданий.
вопрос в том как сделать чтобы при указании на объект выводилось новое окошко с информацией только о количестве населения в этом полигоне.
количество населения в таблице карты указано.
да, наверно это и есть атрибут.

просто я нашла только как можно обращаться к таблице из таблицы. или там Fetch. как из карты обращаться в таблицу непонятно.

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

Re: Информация о выделенном объекте

Сообщение Boris »

Radost_ писал(а):Добрый день,

как сделать так, чтобы при выделении объекта появлялось окошко и в нем информация о значении определенного столбца для этой таблицы. только чтоб не в таблице выделять а на карте.
Элемент выделения можно написать через ToolHander,
через SelectionInfo можно вывести имя таблицы, количество строк.
Мне нужно значение определенного параметра. Как это сделать, подскажите пожалуйста.
Мапинфо и мапбейсик 9.5
Т.е. после выделения таблицу Select вы знаете как получить? ИЛи проблема нажать и получить кроме Select еще и доступ подпрограмме на MapBasic'е?
Я не лез в механизм MapInfo с выделением объектов для их обработки в одно выделение-обработку. Но вот обработку по кнопке выделенного (-ных) объектов написать можно за одну строчку:
а) получаете имя запроса, в который сохранены выделенные объекты - то, что в самой MI называется таблицей (запрсом) Selection. Он всегда имеет имя, которое получается через SelectionInfo
б) через FETCH становитесь на 1-у запись в этой выборке
в) через имя_таблицы.имя_поля получаете данные из конкретного поля ТЕКУЩЕЙ строки в выборке
г) способ отображения этих данных придумываете сами - Print или окном-формой
Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Re: Информация о выделенном объекте

Сообщение Radost_ »

ну вот наверно это то и есть. попробую и отпишусь. спасибо!
у всех в голове свои тараканы
Andrew
Активный участник
Сообщения: 134
Зарегистрирован: 01 окт 2009, 08:52
Репутация: 3
Откуда: Москва

Re: Информация о выделенном объекте

Сообщение Andrew »

Попробуйте воспользоваться процедурой "SelChangedHandler". Как раз срабатывает при изменении выбора хоть в таблице, хоть на карте.
Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Re: Информация о выделенном объекте

Сообщение Radost_ »

спасибо. тогда попробую и так и так и отпишусь
у всех в голове свои тараканы
Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Re: Информация о выделенном объекте

Сообщение Radost_ »

Boris писал(а): Т.е. после выделения таблицу Select вы знаете как получить? ИЛи проблема нажать и получить кроме Select еще и доступ подпрограмме на MapBasic'е?
Я не лез в механизм MapInfo с выделением объектов для их обработки в одно выделение-обработку. Но вот обработку по кнопке выделенного (-ных) объектов написать можно за одну строчку:
а) получаете имя запроса, в который сохранены выделенные объекты - то, что в самой MI называется таблицей (запрсом) Selection. Он всегда имеет имя, которое получается через SelectionInfo
б) через FETCH становитесь на 1-у запись в этой выборке
в) через имя_таблицы.имя_поля получаете данные из конкретного поля ТЕКУЩЕЙ строки в выборке
г) способ отображения этих данных придумываете сами - Print или окном-формой
Что-то долго я пробовала :)

Пользователь делает один щелчок, данные появляются, пользователь делает второй - данные не обновляются. Подозреваю что это делать нужно закрытием таблицы Selection.
Пока у меня такой код

Include "mapbasic.def"
Declare Sub Main
Declare Sub ToolHandler
Sub Main
Note "пример процедуры "
+ "Выберете кнопочку (+) на панеле инструментов "
+ "затем выделите интересующую область"
End Sub

Sub ToolHandler

Set Map
Layer 1
Label With krsk_kd.p1

Dim s_name As String

Fetch First From Selection
s_name = Selection.p1


If WindowInfo( FrontWindow(),
WIN_INFO_TYPE ) = WIN_MAPPER Then
Print "krsk: " + s_name 'Str$(SelectionInfo(SEL_INFO_TABLENAME))
Print " "
End If

End Sub
у всех в голове свои тараканы
Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Re: Информация о выделенном объекте

Сообщение Radost_ »

Andrew писал(а):Попробуйте воспользоваться процедурой "SelChangedHandler". Как раз срабатывает при изменении выбора хоть в таблице, хоть на карте.
Замечание: Процедура SelChangedHandler не может активизировать другие окна. Другими словами, в процедуре SelChangedHandler не могут быть выполнены такие операторы, как Note, Print или Dialog - взято из мануала. поэтому не совсем понимаю как ей пользоваться
у всех в голове свои тараканы
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Информация о выделенном объекте

Сообщение Boris »

Я позволю себе обратить внимание на два существенных момента.
1) вы описали замену инструменту Info - переключиться в режим нового инструмента и им щелкать. я говорил про использование кнопки или меню, уже после выделения объекта. эта кнопка вызывает РАЗОВЫЙ вывод информации о выделенном объекте, и затем возвращается к инструменту, который был активным до ее нажатия.
2) для того, что бы быть уверенным в использовании верных данных из актуального выделения, надо использовать не

Код: Выделить всё

Fetch First From Selection
а узнать имя запроса, который в данный момент имеет алиас Selection

Код: Выделить всё

 UnDim q_name
 UnDim c_name
 print Chr$(12) '' это необязательные строки, они просто позволяют очистить окно print и использовать объявление переменных в примере
 
 Dim q_name As String
 Dim c_name As Alias
  q_name=SelectionInfo( SEL_INFO_SELNAME )  ' SEL_INFO_SELNAME = 2
  Fetch First From q_name
  c_name=q_name+".col1"
  Print "krsk 1: " + q_name 
  Print "krsk 2: " + c_name

Аватара пользователя
Radost_
Интересующийся
Сообщения: 15
Зарегистрирован: 27 фев 2011, 08:11
Репутация: 0
Откуда: Красноярск
Контактная информация:

Re: Информация о выделенном объекте

Сообщение Radost_ »

Undim q_name - не хочет работать этот оператор.
что-то я разобраться не могу как очищать окно и обнулять запрос.
как в инфо - там же тыкаешь - узнаешь, на другую область тыкаешь - изменяются значения.
у всех в голове свои тараканы
Ответить

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

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

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