RUS  ENG 

Обработка событий

Страницы: 1
RSS
Обработка событий
 
Здравствуйте, как мне обработать событие (и какое?) добавления элемента на карту,
в частности необходимо при добавлении объекта на карту проверить подходит ли он по типу для связи с другим элементом,
чтобы нельзя было связывать разнородные эелементы,

и вообще какие события можно перехватить в рабочей области,
заранее благодарб
 
void __fastcall TForm1::MapCtrl1ElementsChanged(TObject *Sender,
IChangedElementKeys *Elems, long LayerIndex, eEditorAction Action,
eUserReaction *ContinueFlag)
{
int i;
AnsiString result;
//в переменную resulut сохраняем произведенное над объектом действие
if(Action == eEditorAddObject)
result = "eEditorAddObject";
if(Action == eEditorMoveObject)
result = "eEditorMoveObject";
if(Action == eEditorDelObject)
result = "eEditorDelObject";
if(Action == eEditorMoveNode)
result = "eEditorMoveNode";
if(Action == eEditorInsertSymbol)
result = "eEditorInsertSymbol";
if(Action == eEditorDeleteGroup)
result = "eEditorDeleteGroup";
if(Action == eEditorUndo)
result = "eEditorUndo";
if(Action == eEditorRedo)
result = "eEditorRedo";
if(Action == eEditorDeleteNode)
result = "eEditorDeleteNode";
if(Action == eEditorInsertNode)
result = "eEditorInsertNode";
if(Action == eEditorRotateObject)
result = "eEditorRotateObject";
if(Action == eEditorMoveSegment)
result = "eEditorMoveSegment";
if(Action == eEditorDeleteSymbol)
result = "eEditorDeleteSymbol";
if(Action == eEditorSplitRegion)
result = "eEditorSplitRegion";
if(Action == eEditorCorrectRegion)
result = "eEditorCorrectRegion";
if(Action == eEditorJoinRegions)
result = "eEditorJoinRegions";
if(Action == eEditorRotateRegion)
result = "eEditorRotateRegion";
if(Action == eEditorScaleObject)
result = "eEditorScaleObject";
if(Action == eEditorObjectSetup)
result = "eEditorObjectSetup";
if(Action == eEditorUpdateLabel)
result = "eEditorUpdateLabel";
if(Action == eEditorCombineGroup)
result = "eEditorCombineGroup";
if(Action == eEditorTransformLayer)
result = "eEditorTransformLayer";
if(Action == eEditorBufferZone)
result = "eEditorBufferZone";
if(Action == eEditorDecombineGroup)
result = "eEditorDecombineGroup";
if(Action == eEditorSplitPolyline)
result = "eEditorSplitPolyline";
if(Action == eEditorOther)
result = "eEditorOther";
if(Action == eEditorChangeDirection)
result = "eEditorChangeDirection";
if(Action == eEditorChangeTypeMode)
result = "eEditorChangeTypeMode";
if(Action == eEditorWriteGroup)
result = "eEditorWriteGroup";
if(Action == eEditorConvertToLines)
result = "eEditorConvertToLines";
if(Action == eEditorConvertToRegions)
result = "eEditorConvertToRegions";
if(Action == eEditorAttachToNodes)
result = "eEditorAttachToNodes";
if(Action == eEditorGroupSetup)
result = "eEditorGroupSetup";
if(Action == eEditorMoveGroup)
result = "eEditorMoveGroup";
if(Action == eEditorTransformGroup)
result = "eEditorTransformGroup";
if(Action == eEditorScaleGroup)
result = "eEditorScaleGroup";
if(Action == eEditorChangeElemState)
result = "eEditorChangeElemState";
if(Action == eEditorPaste)
result = "eEditorPaste";

Memo2->Lines->Clear();
Memo2->Lines->Add(result);
//В перечисляем все измененные объекты и какие изменения над ними были произведены
for(int i = 1;i<Elems->Count;i++){
Memo2->Lines->Add(IntToStr(Elems->get_Item(i)) + " " + IntToStr(Elems->get_EditResult(i)));
}

//обрабатываем событие на предмет валидности

//действия по окончании проверки на валидность
ContinueFlag = eUserContinueAction; //продолжение операции пользователем
ContinueFlag = eUserStopAction; //окончание операции пользователем



}
Страницы: 1