RUS  ENG 

События Zulu

Страницы: 1
RSS
События Zulu
 
Хотелось бы отловить событие на создание нового элемента слоя, и при создании изменить его параметры. В документации указаны такие события как:
evMapLayerCompositionChanged
evMapElementsChanged
какие значения они имеют и какие параметров (Param1,Param2,Param3) передаются?
И можно побольше что-то о событиях узнать?
 
evMapLayerCompositionChanged - не то. Оно возникает, когда меняется порядок слоев в карте.
Обработать нужно evMapElementsChanged. При этом:
Param1: ссылка на объект IChangedElementKeys (коллекция ID объектов, подвергшихся изменению, в т.ч. создание)
Param2: число элементов
Param3: cсылка на long - (continue_flag, зарезервировано).
События пока слабо описаны - обращайтесь просто с вопросами по конкретным интересующим событиям, поясним.
 
в справке нет самого значения evMapElementsChanged. Т.е. само число неизвестно.
 
Так это константа из enum eZuluEvents, прямо ее (evMapElementsChanged) и используйте в тексте программы. Если интересует ее значение, то evMapElementsChanged = 0x00010036.
 
ага, значение и интересовало.
теперь только при добавлении объекта Param2 = 0, а к Param1[0] или Param1[1] нельзя обратиться...
я так понял список пуст...
 
пробовал нечто подобное:
function TSamplePlugin.OnZuluEvent(EventID: Integer;
const Source: IUnknown; Param1, Param2, Param3: OleVariant): Integer;
begin
//param2 почему-то = 0
if (EventID > evMapElementsChanged) then
begin
ShowMessage('Zulu Event Change'); // проходит
try
ShowMessage('Count obj: ' + IntToStr(Param1.Count));//не работает, вываливается в except
ShowMessage('count showed');
except
ShowMessage('Don''t!');
end;
end;
exit;
end;

не видит ничего...
что здесь может быть?
 
А почему "if (EventID > evMapElementsChanged) then", а не "if (EventID = evMapElementsChanged) then" ?
Страницы: 1