| IGDBLayoutElement [ alans ]Понедельник, 26 ноября 2007, 17:44
Столкнулся с такой проблемой: создаю элемент карты:
GDBEngineLib.IGDBLayoutElement map_el;
Затем обращаюсь к нему, чтобы получить какие-либо параметры, например:
int num = map_el.Number;
Во время выполнения выдает ошибку NullReferenceException.
Подскажите пожалуйста, как с этим бороться. Заранее благодарен. |
|
| [ ObjectLand Support ]Понедельник, 26 ноября 2007, 18:25
Объект LayoutElement представляет элемент макета ГБД, а не элемент карты. В приведенном коде вы не создаете элемент, а всего лишь объявляете переменную типа IGDBLayoutElement, поэтому и NullReferenceException. Создание элементов макета см. документацию по СОМ-интерфейсам ObjectLand:
http://www.objectland.ru/support/doc/comapi/H1_Layout.html
http://www.objectland.ru/support/doc/comapi/H3_Layout_Methods7.html |
|
| [ alans ]Понедельник, 26 ноября 2007, 19:33
Дак в моём случае я не хочу создать новый элемент карты, я просто хочу получить информацию о уже существующем элементе, который выбран в данный момент. |
|
| [ Максим Юрьевич Трухачёв ]Четверг, 29 ноября 2007, 07:57
Чтобы "получить информацию о уже существующем элементе, который выбран в данный момент", надо сначала программно создать окно редактора темы (Объект ThemeBrowser, объявленный "с событиями") и вывести его на экран. Когда пользователь что-то выберет, возникнет событие ThemeBrowserChanged, которое вы должны обработать (на обработчики событий есть ограничения - они не должны взаимодействовать с пользователем, и должны исполняться максимально быстро). То есть пользователь должен будет работать с картой через вашу программу, к работающему ObjectLand подключиться извне невозможно. |
|
| [ Alexei ]Пятница, 30 ноября 2007, 18:58
А жаль, что невозможно. Кстати, GDBThemeBrowser - довольно глючная штука, если его встраивать в родительское окно. ExecuteCommand вообще работает непонятно как. У меня, например, команда gdbBrowserCmdThemePrint
подвешивает программу на второй странице диалога печати, а gdbBrowserCmdWindowRefresh вызывает исключение (точно не помню, что-то вроде ClipRect not understood).
Наверно, поэтому в ObjectLand Explorer не используется GDBThemeBrowser? ;\ |
|
| [ ObjectLand Support ]Пятница, 30 ноября 2007, 19:21
Мы проверим поведение GDBThemeBrowser, а в ObjectLand Explorer он не используется по архитектурным соображениям. |
|
| [ alans ]Суббота, 1 декабря 2007, 14:16
Спасибо огромное! Натолкнули на интересную идею. Всё отлично заработало! |
|
ОтветитьЗнаком «*» отмечены обязательные для заполнения поля. |