www.map-info.ru :: Просмотр темы - Опять MapInfo и Delphi
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Rocky



Зарегистрирован: 02.10.2008
Сообщения: 4
Откуда: Самара

СообщениеДобавлено: Чт Окт 02, 2008 10:47 pm    Заголовок сообщения: Опять MapInfo и Delphi Добавить ответ со ссылкой на данный текст

Привет всем. Я зарегился на этом форуме, потому что мне срочно нужна помощь и я знаю, что вы можете помочь. Сразу скажу, в работе с MapInfo я новичек. Вобщем задача такая: из программы, написанной на Delphi, необходимо связаться с MapInfo. Затем нажатием кнопки мыши на любую точку карты возвратить в программу(н-р в Edit) координаты этой точки. С MapInfo я связался, а вот координаты получить не могу. Знаю, что нужно создать кнопку ToolButton и в её обработчике записать типа

var
X,Y : String;
begin
MapInfo.Do('Set CoordSys Layout Units "mm"');
X := MapInfo.Eval('CommandInfo(CMD_INFO_X)');
Y := MapInfo.Eval('CommandInfo(CMD_INFO_Y)');
ShowMessage('X= ' + X + ' Y = ' + Y);

(MapInfo := CreateOleObject('MapInfo.Application');)

Но как конкретно это не сделать, я не допёр.
Помогите плиз. Мне очень срочно надо. Буду очень благодарен! Заранее СПАСИБО!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vovik



Зарегистрирован: 04.05.2008
Сообщения: 57

СообщениеДобавлено: Пт Окт 03, 2008 3:21 am    Заголовок сообщения: Re: Опять MapInfo и Delphi Добавить ответ со ссылкой на данный текст

Дорогой друг я примерно делаю так
Эта утилитка на MapBasic помещяет на инструментальную панель в раздел "Программы"
кнопку с определенной иконкой (Icon MI_ICON_SIGNS_9)
При активизации этой кнопки курсор превратится в крестик (Cursor MI_CURSOR_CROSSHAIR)
Далее если щелкнуть по карте (если карта WindowInfo( FrontWindow(), WIN_INFO_TYPE ) = WIN_MAPPER)
утилитка запишет координаты в переменные x и y , откроет канал связи с приложением "Координаты.exe"
и передаст в объекты Text1(0) и Text1(0) значения переменных
Все комментировать не буду
Дерзай!

Include "MAPBASIC.DEF"
Include "Icons.def"
Include "MENU.DEF"
Declare Sub Main
Declare Sub My_sub

Sub Main
Set CoordSys Nonearth units "m" Bounds (10000,10000) ( 100000,100000)
Set Distance Units "m"
'Здесь мы созаем кнопку и назначаем ей обработчик в виде процедуры My_sub
Alter ButtonPad ID 3 Add ' Программы
Separator
ToolButton
Calling My_sub
Icon MI_ICON_SIGNS_9
HelpMsg "Кнопка получения координат \nКнопка получения координат"
Cursor MI_CURSOR_CROSSHAIR
Show
End Sub
Sub My_sub
Dim x As Float
Dim y As Float
Dim nChan As integer
Dim Pach_program As String
If WindowInfo( FrontWindow(), WIN_INFO_TYPE ) = WIN_MAPPER Then ' Определяет тип окна если карта
x = CommandInfo(CMD_INFO_X)
y = CommandInfo(CMD_INFO_Y)
Pach_program = ApplicationDirectory$( )
If Right$(Pach_program, 1) <> "\" Then
Pach_program = Pach_program+ "\"
End If
OnError GoTo NOT_nChan 'Если нет связи
Run Program Pach_program+ "Координаты.exe" 'Запускает программу Координаты.exe написаную на VB
nChan = DDEInitiate("Координаты","DDETopic") ' Открывает канал DDE-связи.
DDEPoke nChan, "Text1(0)", Str$(x) ' передаем координату X
DDEPoke nChan, "Text1(1)", Str$(y) передаем координату Y
DDETerminate nChan ' Закрывает канал DDE-связи.
end if
Exit Sub
NOT_nChan:
Note "Нет связи с программой ""Координаты.exe"" "
End Sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rocky



Зарегистрирован: 02.10.2008
Сообщения: 4
Откуда: Самара

СообщениеДобавлено: Вт Окт 07, 2008 4:54 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо, дорогой друг. Но это не совсем то, на что я рассчитывал. Я не понимаю, как это реализовать в Delphi. Помогите, кто чем может. Очень надо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Нестеров Валерий



Зарегистрирован: 21.03.2006
Сообщения: 492

СообщениеДобавлено: Ср Окт 08, 2008 8:19 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

1. Думаю стоит почитать Хелп по MapBasic (раздел "Интегрированная Картография").
2. В каталоге установки MapBasic есть примеры для разных языков программирования "MapBasic\SAMPLES\DELPHI".
_________________
Жизнь прекрасна!i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Rocky



Зарегистрирован: 02.10.2008
Сообщения: 4
Откуда: Самара

СообщениеДобавлено: Пт Окт 10, 2008 3:53 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Help по MapBasic'у я читал, вроде все понял. Но все же в Delphi реализовать не получается. А в Samples про получение координат нечего нет. Подскажите, как создать кнопку ToolButton и правильно написать для неё обработчик(напоминаю, все это в Delphi). Наверняка кто-то сталкивался с этим. Буду очень благодарен за помощь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vovik



Зарегистрирован: 04.05.2008
Сообщения: 57

СообщениеДобавлено: Пн Окт 13, 2008 2:24 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

В Samples про получение координат очень даже много сказано правда для С++ и VB но если пораскинуть мозгами , то можно и это применить и для Delphi.
Разобраны примеры с использованием уведомляющих вызовов (Callbacks) , а хочешь имитировать строку состояния MapInfo, то создай метод, SetStatusText, чтобы у него был один аргумент: строка и вычленяй из этой строки текущие координаты курсора на карте.
Потом, в моем первом тебе примере дан фрагмент кода на MB который создает кнопку на инструментальной панели MI и передает координаты клика мышью в объект textbox приложения написаного на VB с таким же успехом будут переданы данные и в объект Tedit приложения написаного на Delphi
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rocky



Зарегистрирован: 02.10.2008
Сообщения: 4
Откуда: Самара

СообщениеДобавлено: Пн Окт 13, 2008 3:04 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо. :) Буду пробовать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru