| Обсуждение |
| Вопрос по GDBThemeBrowser.Theme [ Роман Ларченко ]Вторник, 28 сентября 2010, 07:40
Вот такой код
objGDBThemeBrowser = gdb.CreateThemeBrowser(objGDBTheme)
...
MsgBox(objGDBThemeBrowser.Theme.Name)
Console.ReadKey()
MsgBox(objGDBThemeBrowser.Theme.Name)
Пока открыто окно (пока система ждет нажатия клавиши), я вручную открываю другую тему в окне браузера. После этого вторая команда MsgBox(objGDBThemeBrowser.Theme.Name) выдает ошибку:
"currentUser" not understood
Как получить ссылку на тему, после ее ручного изменения? |
|
| [ ObjectLand Support ]Среда, 29 сентября 2010, 16:08
Действительно ошибка имеет место быть. Обязательно будет исправлена в следующей версии ObjectLand.
Сейчас Вы можете поступить следующим образом:
1. Установить обработчик события ThemeBrowserChanged (см. http://objectland.ru/support/doc/comapi/ThemeBrowser_ThemeBrowserChanged.html). В него аргументом передается номер новой темы.
2. Получить тему по этому номеру из коллекции GeoDatabase.Themes |
|
| [ Роман Ларченко ]Пятница, 1 октября 2010, 03:40
Спасибо.
В vb.net обработка событий com - все очень просто, проверил - работает.
Проблема только в том, что работаю с c++builder 6 :)
Вопрос уже не к разработчикам Objectland.
Может кто-нгибудь из читающих форум сталкивался с обработкой событий com в билдере? Киньте ссылку на статью по теме, пожалуйста! |
|
| [ Дмитрий ]Понедельник, 15 октября 2012, 23:39
Здравствуйте.
Не работает обработчик событий ThemeBrowserChanged
Код брал из примеров.
Ниже отрывок кода:
Объявления:
Public Class Form1
Private Const GDB_NAME As String = "Проба" ' Имя ГБД.
Private Const THEME_NAME As String = "Тема1" ' Имя темы.
Dim objGDBEngine As GDBEngineLib.IGDBEngine ' Ядро ObjectLand.
Dim objGDB As GDBEngineLib.IGDBGeoDatabase ' ГБД.
Dim objGDBTheme As GDBEngineLib.IGDBTheme ' Тема ГБД.
Public WithEvents objGDBThemeBrowser As GDBEngineLib.GDBThemeBrowser ' Средство просмотра темы.
....
Обработчик:
Private Sub objGDBThemeBrowser_ThemeBrowserChanged(changeTypeInt As Integer, arg1 As Integer, arg2 As Integer, arg3 As Integer) Handles objGDBThemeBrowser.ThemeBrowserChanged
MsgBox("Выбрали!!!!")
txtEventsLog.AppendText("Окно средства просмотра темы неактивно." & vbCrLf)
Dim strType As String ' Описание или номер типа геометрий.
Dim strLayer As String ' Описание или номер слоя.
' Выбор типа изменения в средстве просмотра темы.
Select Case changeTypeInt
' Тип изменений - "изменение состояния окна средства просмотра темы".
Case objGDBThemeBrowser.gdbBrowserChgActive
If arg1 = 0 Then
txtEventsLog.AppendText("Окно средства просмотра темы неактивно." & vbCrLf)
Else
txtEventsLog.AppendText("Окно средства просмотра темы активно." & vbCrLf)
End If
' Тип изменений - "изменение видимости окна средства просмотра темы".
Case objGDBThemeBrowser.gdbBrowserChgVisible
If arg1 = 0 Then
txtEventsLog.AppendText("Окна средства просмотра темы скрыто." & vbCrLf)
Else
txtEventsLog.AppendText("Окно средства просмотра темы видимо." & vbCrLf)
End If
' Тип изменений - "начало прорисовки темы".
Case objGDBThemeBrowser.gdbBrowserChgThemePaintStart
txtEventsLog.AppendText("Прорисовка темы начата." & vbCrLf)
' Тип изменений - "окончание прорисовки темы".
Case objGDBThemeBrowser.gdbBrowserChgThemePaintEnd
txtEventsLog.AppendText("Прорисовка темы окончена." & vbCrLf)
' Тип изменений - "изменение просматриваемой темы".
Case objGDBThemeBrowser.gdbBrowserChgTheme
txtEventsLog.AppendText("Просматриваемая тема изменена на тему №" & arg1 & "." & vbCrLf)
' Тип изменений - "завершение прорисовки геометрии".
' Следующий код закомментирован ввиду большого размера прорисовываемой темы.
' При раскомментировании данного кода существенно увеличивается
' время работы скрипта и размер создаваемого протокола.
Case objGDBThemeBrowser.gdbBrowserChgThemePaintFeature ' txtEventsLog = txtEventsLog & _
' "Завершена прорисовка геометрии №" & arg1 & " типа №" & arg2 & _
' " в слое №" & arg3 & "." & vbCrLf
' Тип изменений - "изменение множества селектированных геометрий
' в результате интерактивного взаимодействия пользователя с окном просмотра темы".
Case objGDBThemeBrowser.gdbBrowserChgFeatureset
' Установка типа селектированных геометрий.
If arg1 = 0 Then
strType = "разных типов"
Else
strType = "типа №" & arg1
End If
' Установка номера слоя селектированных геометрий.
If arg2 = 0 Then
strLayer = "разным слоям"
Else
strLayer = "слою №" & arg2
End If
' Вывод сообщения о типе и номере слоя селектированных геометрий.
txtEventsLog.AppendText("Выбрана(ы) геометрия(и) " & strType & ", принадлежащие " & strLayer & "." & vbCrLf)
' Тип изменений - "требование активизации окна клиентского приложения
' со стороны средства просмотра темы".
Case objGDBThemeBrowser.gdbBrowserChgActivateClient
txtEventsLog.AppendText("Средство просмотра темы требует активизации окна клиентского приложения." & vbCrLf)
End Select
End Sub
База запускается, открывается тема и все ...
Код вообще не работает((( Т.е. даже не выскакивает MsgBox в первой строке.
У меня VS2010 Win7x64
Пожалуйста подскажите где ошибка? |
|
ОтветитьЗнаком «*» отмечены обязательные для заполнения поля. |
| |