как сделать identify для своей программы

0 голосов
спросил 10 Март, 06 от Гость (210,080 баллов) в категории Программные продукты Esri
Помогите пожалуйста сделать identify для своей программы на VB (не VBA)? Программа простейшая в ней используется MapContol, TocControl и ToolBarControl. Заранее всем спасибо.

7 Ответы

0 голосов
ответил 14 Март, 06 от Гость (210,080 баллов)

hel me!!!!!!!!!! please!!!!!!!!image

0 голосов
ответил 15 Март, 06 от filippov70 (5,320 баллов)
Это из мануала:

Private Sub Form_Load()
Dim sProgID As String

sProgID = "esriControlTools.ControlsOpenDocCommand"
ToolbarControl1.AddItem sProgID, , , False, , esriCommandStyleIconOnly


добавление кнопки "открыть"


а кнопку и добавить на тулбар, наверно так:

заменить ControlsOpenDocCommand на ControlsIdentifyTool

попробуй

0 голосов
ответил 15 Март, 06 от filippov70 (5,320 баллов)
В VBA можно так:

Sub ExecuteCmd()
Dim pCmdItem As ICommandItem
Set pCmdItem  = Application.Document.CommandBars.Find(arcid.
Query_Identify) pCmdItem.Execute
End Sub

на VB не пойдетimage
0 голосов
ответил 15 Март, 06 от filippov70 (5,320 баллов)
А вот это пойдет
создай новый клас и

Implements IToolBarDef

Private Property Get IToolBarDef_Caption() As String
    IToolBarDef_Caption = "MyToolbar"
End Property

Private Sub IToolBarDef_GetItemInfo(ByVal pos As Long, ByVal itemDef As esriSystemUI.IItemDef)

Select Case pos
Case 0
    itemDef.ID = "esriArcMapUI.AddDataCommand" ' вот тута надо заменить AddDataCommand на что то вроде Identify
    itemDef.Group = False

End Select
End Sub

Private Property Get IToolBarDef_ItemCount() As Long

    IToolBarDef_ItemCount = 1

End Property 

Private Property Get IToolBarDef_Name() As String

    IToolBarDef_Name = "MyToolbar"

End Property

Пока фсё
0 голосов
ответил 15 Март, 06 от Гость (210,080 баллов)

Наверно я неприльно описал проблему - нужно спрограммить окно идентификации объекта, а не саму кнопку инструмента.

В хелпе описывается пример для VBA с применением IIdentifyDialog, попробовал в VB6 и в С++, но даже если добавить ESRI_references все равно такой объект не досупен, я так думаю он только в VBA доступен.

Или может кто знает как по щелчку мыши по MapControl получить список объектов карты в данной точке со свойствами т.е. типа массив объектов с атрибутами?

0 голосов
ответил 15 Март, 06 от Гость (210,080 баллов)
Dim pIdentify As IIdentify
Dim pPoint As IPoint
Dim pIDArray As IArray
Dim pFeatIdObj As IFeatureIdentifyObj
Dim pIdObj As IIdentifyObj
 
  Set pIdentify = MapControl1.Layer(0)
  Set pPoint = New Point
  pPoint.PutCoords 0, 0 (!) подставь координаты с карты
  Set pIDArray = pIdentify.Identify(pPoint)
 
  If Not pIDArray Is Nothing Then
    Set pFeatIdObj = pIDArray.Element(0)
    Set pIdObj = pFeatIdObj
    MsgBox pIdObj.Name
  Else
    MsgBox "ничего не выбрано"
  End If
0 голосов
ответил 15 Март, 06 от Гость (210,080 баллов)

Сейчас попробую.

imageСпасибо всем!!!!image

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