Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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()-для текущего окна |
|
Вернуться к началу |
|
|
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() |
|
Вернуться к началу |
|
|
dotzent
Зарегистрирован: 02.11.2009 Сообщения: 10 Откуда: Украина, Ривне
|
Добавлено: Пн Май 07, 2012 4:25 pm Заголовок сообщения: |
|
|
for i=0 to NumWindow()-1
winId=WindowId(i)
...
next |
|
Вернуться к началу |
|
|
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 для отрисовки графики. С сейвом. |
|
Вернуться к началу |
|
|
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. Но как по мне проще из динамического набора сгенерировать строку с координатами области и единажды использовать вставку в таблицу. |
|
Вернуться к началу |
|
|
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
Не понял почему, но "методом тыка" пришел к такому решению. |
|
Вернуться к началу |
|
|
SergS
Зарегистрирован: 01.11.2010 Сообщения: 51
|
Добавлено: Чт Май 10, 2012 8:00 am Заголовок сообщения: |
|
|
xax_nv писал(а): |
Не понял почему, но "методом тыка" пришел к такому решению. |
что-ж тут непонятного, Вы при каждом открытии таблицы грохаете всю графику, пересоздавая ее заново.
"Create Map" имеет смысл использовать при создании таблицы, а не при ее открытии |
|
Вернуться к началу |
|
|
xax_nv
Зарегистрирован: 28.10.2011 Сообщения: 43 Откуда: г. Нижневартовск
|
Добавлено: Чт Май 10, 2012 8:38 am Заголовок сообщения: |
|
|
Теперь буду знать. MapBasic осваиваю по ходу, программу ваяю в Access. |
|
Вернуться к началу |
|
|
|