Страница 1 из 2

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

Добавлено: 27 фев 2011, 08:16
Radost_
Добрый день,

как сделать так, чтобы при выделении объекта появлялось окошко и в нем информация о значении определенного столбца для этой таблицы. только чтоб не в таблице выделять а на карте.
Элемент выделения можно написать через ToolHander,
через SelectionInfo можно вывести имя таблицы, количество строк.
Мне нужно значение определенного параметра. Как это сделать, подскажите пожалуйста.
Мапинфо и мапбейсик 9.5

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

Добавлено: 28 фев 2011, 10:33
Andrew
Самое простое - это вывод значения через команду Print. Если перед выводом очищать это окошко, то в нем будет всегда один результат.

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

Добавлено: 28 фев 2011, 14:00
Radost_
что через Print я понимаю. Я не понимаю что внутри. Как правильно прописать чтоб выводилось значение конктретного поля.
Таблица.Поле не рабоает.
И я новичок, да

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

Добавлено: 28 фев 2011, 14:06
Boris
используйте установку указателя на конкретную строку запроса, который получается при выделении командой
FETCH
после этого можно обращаться к отдельной колонке в формате [имя_таблицы].[имя_колонки]

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

Добавлено: 28 фев 2011, 14:27
Radost_
но тогда же указывыются строки из таблицы.
мне нужно чтоб тыкалось на КАРТУ и появлялось соответствующее значение определенного параметра. урезанное Информация об объекте как бы

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

Добавлено: 28 фев 2011, 14:29
Boris
а что вы понимаете под параметром? информацию, которая отсутствует в атрибутах таблицы? Геолинк точно не подходит?

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

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

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

про геолинк ушла читать.

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

Добавлено: 28 фев 2011, 15:03
Boris
Radost_ писал(а):Добрый день,

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

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

Добавлено: 28 фев 2011, 15:06
Radost_
ну вот наверно это то и есть. попробую и отпишусь. спасибо!

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

Добавлено: 28 фев 2011, 16:08
Andrew
Попробуйте воспользоваться процедурой "SelChangedHandler". Как раз срабатывает при изменении выбора хоть в таблице, хоть на карте.

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

Добавлено: 28 фев 2011, 16:19
Radost_
спасибо. тогда попробую и так и так и отпишусь

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

Добавлено: 27 мар 2011, 14:18
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

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

Добавлено: 27 мар 2011, 14:20
Radost_
Andrew писал(а):Попробуйте воспользоваться процедурой "SelChangedHandler". Как раз срабатывает при изменении выбора хоть в таблице, хоть на карте.
Замечание: Процедура SelChangedHandler не может активизировать другие окна. Другими словами, в процедуре SelChangedHandler не могут быть выполнены такие операторы, как Note, Print или Dialog - взято из мануала. поэтому не совсем понимаю как ей пользоваться

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

Добавлено: 27 мар 2011, 22:24
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


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

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