Radgard
Зарегистрирован: 23.07.2007 Сообщения: 25
|
Добавлено: Ср Авг 22, 2007 2:40 am Заголовок сообщения: я вот тут такое писал... |
|
|
есть у меня код написанного мною на MapBasic небольшого модуля... делает он немного побольше чем тебе надо...
посмотри, может пригодится... по крайнгей мере работает без проблем (но под мапой)...
все взято из разных мануалов по mapbasic + некоторые ухищрения!!!
по крайней мере под mapinfo можно определить даже запись в таблице, объект которой мышкой выделен... комментарии в комплекте!
но если знаком с интегрированной картографией, то карты в руки:
Include "mapbasic.def"
Include "icons.def"
'Объявляем подпрограммы
Declare Sub Main
Declare Sub tool_sub
Declare Sub alex1
declare sub ok_sub
declare sub cansel_sub
Sub Main
'Создаем панель инструментов
Create ButtonPad "Поиск" As
'Создаем кнопку информации
ToolButton Calling tool_sub ID 1
Icon MI_ICON_REALESTATE_2
Cursor MI_CURSOR_ARROW
DrawMode DM_CUSTOM_POINT
HelpMsg "Укажите мышкой на Карту\nПоиск в точке"
'Создаем кнопку помощи
pushbutton
Icon MI_ICON_TRANSPORT_19
calling alex1
HelpMsg "Это вторая кнопка\nВторая кнопка"
'Separator
Width 2
Print "Работает программа поиска."
Print "Выберите инструмент из панели Поиск и укажите на Карту."
End Sub
Sub tool_sub
' Эта процедура вызывается, если пользователь действует
'одним из инструментов из панели Поиск.
Dim x, y As Float,
i, i_found, i_row_id, i_win_id, Pole as integer,
s_table As Alias
i_win_id = FrontWindow( )
If WindowInfo(i_win_id, WIN_INFO_TYPE) <> WIN_MAPPER Then
Note "Этот инструмент работает только в окне Карты."
Exit Sub
End If
' Определяем начальную точку действия инструмента.
x = CommandInfo(CMD_INFO_X)
y = CommandInfo(CMD_INFO_Y)
If CommandInfo(CMD_INFO_TOOLBTN) = 1 Then
' случай, когда действует точечный инструмент.
' определяем, сколько объектов содержат данную точку.
i_found = SearchPoint(i_win_id, x, y)
End If
If i_found = 0 Then
Print Chr$(12)
Beep ' Объектов в этом месте нет.
print "Пусто"
Else
Print Chr$(12)
end if
If CommandInfo(CMD_INFO_TOOLBTN) = 1 then
Print "Point: x=" + x + ", y= " + y
End If
' Обработка результатов поиска.
For i = 1 to i_found
' Определяем имя таблицы, содержащей найденный объект.
s_table = SearchInfo(i, SEARCH_INFO_TABLE)
' Определяем номер записи, содержащей найденный объект.
i_row_id = SearchInfo(i, SEARCH_INFO_ROW)
'Перемещаемся в выбранную строку
Fetch rec i_row_id From s_table
'Находим значение MI_PRINX
if s_table = "Building1" then
Pole = Building1.mi_prinx
print "mi_prinx равен: " + Pole
'Запускаем программу информации
run program "C:\Map_BASIC\1.exe"
end if
print "Имя таблицы: " + s_table
print "Номер записи: " + i_row_id
next
End sub
Sub alex1
Dialog Title "Запустить"
Control StaticText Title "Нужно ли запускать окно помощи?"
Control Okbutton calling ok_sub
Control CancelButton calling cansel_sub
end sub
sub ok_sub
end sub
sub cansel_sub
end sub |
|