듀라맵에서 그래픽 레이어나 SHP 파일의 도형을 편집할때.. 편집에 대한 흐름을 보다 융통성있게 처리하기 위해 다음과 같은 이벤트를 제공합니다.
- OnEditAddedRow – 마우스를 통해 새로운 도형이 그려져 레이어에 추가된 직후 발생하는 이벤트
- OnEditBeforeDeleteRows – 선택된 도형(들)을 DEL 키를 눌러 삭제하기 직전에 발생하는 이벤트
- OnEditDeletedRows – 선택된 도형을 DEL 키를 눌러 삭제된 직후 발생하는 이벤트
- OnEditModifiedRows – 선택된 도형(들)이 편집된 직후 발생되는 이벤트
- OnEditSelectionChanging – 마우스를 통해 도형(들)이 새롭게 선택된 직후 발생하는 이벤트
- OnEditSelectionChanged – 마우스를 통해 도형(들)을 새롭게 선택하기 직전에 발생하는 이벤트
편집에 대해서 총 6개의 이벤트를 제공합니다. 언급된 순서대로 하나 하나 예제 코드를 통해 간단히 살펴보도록 하겠습니다.
먼저 OnEditAddedRow의 이벤트에 대한 C# 코드는 다음과 같습니다.
private void Xr_OnEditAddedRow(object sender, XrMapLib._IXrMapControlEvents_OnEditAddedRowEvent e) { int fid = e.fID; .... }
이벤트 매서드의 인자로 넘겨진 XrMapLib._IXrMapControlEvents_OnEditAddedRowEvent e에는 fID라는, 새롭게 추가된 도형에 대한 ID 값이 담겨있습니다.
그리고 다음은 OnEditBeforeDeleteRows에 대해 알아보겠습니다. 이 이벤트는 도형을 삭제하기 전에 정말 삭제할지의 여부를 사용자에게 묻기 위한 용도로 사용될 수 있습니다. 코드 예입니다.
private void Xr_OnEditBeforeDeleteRow(object sender, EventArgs e) { DialogResult DR = MessageBox.Show( "Are you sure that selected POIs be deleted?", "Delete POI", MessageBoxButtons.YesNoCancel); Xr.Edit.AllowDeleteByKeyboard = (DR == DialogResult.Yes); }
먼저 메세지 상자를 통해 선택된 도형을 지울 것인지를 묻습니다. 사용자가 Yes가 아닌 버튼을 누르면 Xr의 Edit 프로퍼티인 AllowDeleteByKeyboard를 false로 지정하여 삭제하지 않습니다.
다음은 OnEditDeletedRows 이벤트입니다. 이 이벤트는 선택한 도형을 DEL 키를 눌러 실제로 삭제된 직후에 발생하는 이벤트이며 도형이 삭제된 후에 어떤 일을 해야 한다면 이 이벤트에서 처리해 주면 됩니다.
그리고 OnEditModifiedRows입니다. 선택된 도형(들)을 이동하거나 새로운 정점을 추가하거나 삭제할때 발생하는 코드입니다. 코드 예는 다음과 같습니다.
private void Xr_OnEditModifiedRows(object sender, EventArgs e) { ValueList id = Xr.Edit.GetSelectedRows(); if (id.Count > 0) { .... } }
위의 코드는 도형이 편집된 직후 어떤 도형이 편집되었는지를 파악하기 위해서 Xr.Edit의 GetSelectedRows 매서드를 통해 ID의 목록을 얻어올 수 있습니다. 도형이 편집된 직후 무언가를 처리해야 한다면 바로 이 이벤트에서 처리해주면 됩니다.
다음으로 OnEditSelectionChanging 입니다. 이 이벤트는 사용자가 선택된 도형에 대한 선택 상태를 변경하기 직전에 발생하는 코드로써.. 예를 들어 A라는 도형이 선택되었을때.. 아니면 선택된 도형이 없는 상태에서 B라는 다른 도형을 선택하거나 A라는 도형의 선택을 해제했을때 발생합니다. 이 이벤트에 대한 응용예는 선택된 도형을 DEL 키를 통해 삭제했을때 어떤 도형을 삭제했는지를 파악할때 사용할 수 있는 이벤트입니다.
끝으로 OnEditSelectionChanged 이벤트입니다. 이 이벤트는 사용자가 도형을 선택하거나 선택 상태를 해제한 직후에 발생하는 이벤트입니다. 사용 예제 코드는 다음과 같습니다.
private void Xr_OnEditSelectionChanged(object sender, EventArgs e) { ValueList vl = Xr.Edit.GetSelectedRows(); if (vl.Count > 0) { .... } }
사용자가 도형을 선택한 후 어떤 일을 수행해야 할때 이 이벤트를 사용할 수 있습니다.