www.map-info.ru :: Просмотр темы - Идентификатор окна MapInfo
                               РќР° главную страницу сайта

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

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



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Вс Май 06, 2012 9:07 am    Заголовок сообщения: Идентификатор окна MapInfo Добавить ответ со ссылкой на данный текст

Приветствую всех!
Запускаю экземпляр MapInfo из MS Access. Необходимо добавить записи в таблицу MapInfo. Программно делаю слой редактируемым, но требуется идентификатор окна MapInfo, как его определить?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dotzent



Зарегистрирован: 02.11.2009
Сообщения: 10
Откуда: Украина, Ривне

СообщениеДобавлено: Пн Май 07, 2012 3:39 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Функции WindowId(num) - в цыкле, FrontWindow()-для текущего окна
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Пн Май 07, 2012 3:49 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

dotzent писал(а):
Функции WindowId(num) - в цыкле, FrontWindow()-для текущего окна

Спасибо за отклик. Я делал так:
mi.Do "Open Table """ & strCurrPatch & """"
mi.Do "Create Map For " & TableName & " CoordSys NonEarth Units ""m"" Bounds " & MinMax
mi.Do "Set Distance Units ""m"""
mi.Do "Set Map FrontWindow() Layer 1 Editable On"
Ругается, что не правильный идентификатор окна 0. Возможно дело в том, что я не активизирую окно MapInfo.
А про WindowId(num) можно подробней?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dotzent



Зарегистрирован: 02.11.2009
Сообщения: 10
Откуда: Украина, Ривне

СообщениеДобавлено: Пн Май 07, 2012 4:19 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Set Map Window FrontWindow()
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
dotzent



Зарегистрирован: 02.11.2009
Сообщения: 10
Откуда: Украина, Ривне

СообщениеДобавлено: Пн Май 07, 2012 4:25 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

for i=0 to NumWindow()-1
winId=WindowId(i)
...
next
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Пн Май 07, 2012 5:11 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

На эту строчку
mi.Do "Set Map Window FrontWindow()"
ругается: "Не правильный идентификатор окна: 0"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dotzent



Зарегистрирован: 02.11.2009
Сообщения: 10
Откуда: Украина, Ривне

СообщениеДобавлено: Пн Май 07, 2012 6:42 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Если Вы не будете создавать объекты в окне карты вручную, а хотите внести их программно-активным слой делать не надо! Используйте INSERT INTO для вставки в таблицу и Alter Object для отрисовки графики. С сейвом.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Пн Май 07, 2012 6:58 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

dotzent писал(а):
Если Вы не будете создавать объекты в окне карты вручную, а хотите внести их программно-активным слой делать не надо! Используйте INSERT INTO для вставки в таблицу и Alter Object для отрисовки графики. С сейвом.

Я так и делал, семантика в таблицу заносится, а графика нет. Вернее, заносится новая, а старая пропадает. Сам не пойму.
Вот фрагмент кода:
mi.Do "Open Table """ & strCurrPatch & """"
mi.Do "Create Map For " & TableName & " CoordSys NonEarth Units ""m"" Bounds " & MinMax
mi.Do "Set Distance Units ""m"""

Set rs = db.OpenRecordset("SELECT tblUch.* FROM tblUch ORDER BY tblUch.i;")
rs.MoveLast
boss = rs.RecordCount
rs.MoveFirst
nUch = rs!kadNum

mi.Do "Create Region Into Variable obj_region 0 Pen (2,2, 16711680) Brush (1,0,16777215)"

For i = 1 To boss
nPoint = rs!gp
mi.Do "Create Point Into Variable obj_point (" & rs!Y & "," & rs!X & ") Symbol (35,0,4,""Map Symbols"",0,0) "
mi.Do "Insert Into " & TableName & " (Object, nPoint) Values (obj_point," & Chr(34) & nPoint & Chr(34) & ")"
mi.Do "Commit Table " & TableName & " Interactive"
mi.Do "Alter Object obj_region Node Add (" & rs!Y & "," & rs!X & ")"
rs.MoveNext
Next i
mi.Do "Insert Into " & TableName & " (Object,nUch) Values (obj_region," & Chr(34) & nUch & Chr(34) & ")"
mi.Do "Commit Table " & TableName & " Interactive"
mi.Do "Map From " & TableName
Set rs = Nothing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dotzent



Зарегистрирован: 02.11.2009
Сообщения: 10
Откуда: Украина, Ривне

СообщениеДобавлено: Пн Май 07, 2012 7:32 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Подобная проблема была-выручил UPDATE. Но как по мне проще из динамического набора сгенерировать строку с координатами области и единажды использовать вставку в таблицу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Пн Май 07, 2012 7:36 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

dotzent писал(а):
выручил UPDATE

А в каком месте?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Чт Май 10, 2012 7:21 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Проблема решена. Редактируемый слой действительно не нужен. Лишней была строка:
mi.Do "Create Map For " & TableName & " CoordSys NonEarth Units ""m"" Bounds " & MinMax
Не понял почему, но "методом тыка" пришел к такому решению. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
SergS



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

СообщениеДобавлено: Чт Май 10, 2012 8:00 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

xax_nv писал(а):

Не понял почему, но "методом тыка" пришел к такому решению. Smile

что-ж тут непонятного, Вы при каждом открытии таблицы грохаете всю графику, пересоздавая ее заново.
"Create Map" имеет смысл использовать при создании таблицы, а не при ее открытии
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
xax_nv



Зарегистрирован: 28.10.2011
Сообщения: 43
Откуда: г. Нижневартовск

СообщениеДобавлено: Чт Май 10, 2012 8:38 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

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

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


Top.Mail.Ru