阅读:2005回复:2
有谁知道ao编辑中怎么实现撤消与恢复阿,给点提示阿!附mo编辑
<P>有谁知道ao编辑中怎么实现撤消与恢复阿</P>
<P>附mo编辑</P> <P>(网上一朋友写的)今天讲讲利用MO实现编辑过程中的Undo、Redo的一种思路,利用临时图层实现图层编辑过程中的Undo,Redo。今天举得例子比较简单,就是增添要素和删除要素的撤销和重做(假设编辑过程中点线面图层每类只有一个)。 <BR> </P> <P>1. 建立临时图层</P> <P>临时图层是在每次程序加载的时候创建,利用shapefile文件,包含4个字段,分别表示操作标识,操作流水号,关键字段,字段内容,当然为了实现点线面各个图层的操作,需要创建3个shp。</P> <P>2.在添加和删除要素后</P> <P>系统中当前流水号增加1,向临时图层增加或者删除这一次操作影响的要素以及他们的字段信息,当然操作流水号也需要增添,操作标识标识这次的操作类型,也需要添加。</P> <P>3.在进行一些操作后Undo</P> <P>有了以上信息,在执行操作的过程中就可以Undo了,比如我在一次操作中增添了两个点、一条线,那么在Undo的时候就先从临时图层中通过当前操作流水号分别查询出添加的记录,这些记录的操作标识应该是“添加操作”,然后通过关键字段,在实际图层中查找,删除相应的要素。同时系统的操作流水号-1。</P> <P>4.我现在要Redo了</P> <P>如果上面的Undo错了,我需要恢复删除的要素,那么就需要首先将系统中当前流水号增加1,然后从临时图层中查询当前操作流水号所影响的记录,然后由于操作标识是“添加操作”,所以我们将这些要素和相应的字段信息进行分解,添加到对应的图层。</P> <P>5.我在Undo操作后执行添加和删除操作拉</P> <P>这个时候首先需要从流水表删除操作流水号>系统当前流水号的记录,然后同2进行操作。</P> |
|
1楼#
发布于:2006-10-16 09:39
up
|
|
2楼#
发布于:2006-10-16 10:07
IWOrkspaceEdit接口
|
|
|