связать PageLayoutControl с документом

0 голосов
спросил 02 Дек, 09 от -3A- (5,220 баллов) в категории Программные продукты Esri
Всем доброго времени суток!

Как связать PageLayoutControl (который создается в моем модальном окне, запускаемом из модуля-расширения ArcMap) с уже открытым в ArcMap документом?
И можно ли это сделать вообще?

Или этот контрол связывается с документом только через IPageLayoutControl.LoadMxFile?

8 Ответы

0 голосов
ответил 06 Фев, 10 от Commrad1 (3,660 баллов)

Если не разобрались еще, то в примерах Developer Kit есть такой. Ненайдете, пишите, скину код. В данный момент нет подрукой.

0 голосов
ответил 08 Фев, 10 от -3A- (5,220 баллов)
Commrad
не то чтобы разобрался
просто сделал по-другому

но если нетрудно, можете дать ссылку на пример (имени солюшена хватит :) ) - Developer Kit у меня есть
0 голосов
ответил 08 Фев, 10 от Commrad1 (3,660 баллов)
SamplesCOM\Controls\CopyFocusMapVisual_Basic правда это для MapControl и PageLayoutControl, но думаю леко перенесеться и для ArcMap.
0 голосов
ответил 08 Фев, 10 от -3A- (5,220 баллов)
большое спасибо
посмотрю image
0 голосов
ответил 08 Фев, 10 от -3A- (5,220 баллов)
посмотрел
это не то, в примере как раз-таки грузится документ
а мне это не надо - у меня он уже загружен и мне надо к нему прицепиться из PageLayoutControl

ну да ладно, эту проблему я давно решил другим способом :)
0 голосов
ответил 08 Фев, 10 от Commrad1 (3,660 баллов)
Разве это не то что нужно? Или я что-то не понял? У вас есть открытый документ в ArcMap и форма с PageLayouteControl и вам нужно загруженную карту поместить в данный контрол на вашей форме? Я попробывал переписать тот пример под ArcMap все работает.
 
Private Sub UserForm_Activate()
CopyAndOverwriteMap
End Sub

Public Sub CopyAndOverwriteMap()
   
  'Get IObjectCopy interface
  Dim pObjectCopy As IObjectCopy
  Set pObjectCopy = New ObjectCopy

  'Get IUnknown interface (map to copy)
  Dim pToCopyMap As IUnknown
  Dim pMxDoc As IMxDocument
  Set pMxDoc = ThisDocument
  Set pToCopyMap = pMxDoc.ActiveView.FocusMap

  Dim pMap As IMap
  Set pMap = pToCopyMap
  pMap.IsFramed = False
 
  'Get IUnknown interface (copied map)
  Dim pCopiedMap As IUnknown
  Set pCopiedMap = pObjectCopy.Copy(pToCopyMap)

  'Get IUnknown interface (map to overwrite)
  Dim pToOverwriteMap As IUnknown
  Set pToOverwriteMap = PageLayoutControl1.ActiveView.FocusMap
 
  'Overwrite the MapControl's map
  pObjectCopy.Overwrite pCopiedMap, pToOverwriteMap
 
 
End Sub

0 голосов
ответил 09 Фев, 10 от -3A- (5,220 баллов)
Commrad
слона-то я и не заметил image
спасибо за кусок кода - попробую у себя
    
0 голосов
ответил 19 Апр, 10 от hovik_492000 (220 баллов)
Бсем Привтю
А Вы непробовали этот код на VC++?
У меня функция ipObjectCopy->Overwrite(ipCopiedMap, &ipToOverwriteMap)
возвращает овибку типа E_POINTER, а на VB и  C# все работает.
Спосибо

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...