响应事件

不管你的流程图是用纯代码绘制的,还是用可视化工具绘制的,其实最终都是通过代码生成的。

在生成流程图的时候,我们通常会将形状(包括线条和文字)的tag属性设置为该形状对应的数据行:

mark.Tag = dr 'tag设置为对应的数据行,用于响应事件

例如我们单击流程图中的某个形状,就需要在MouseClick事件中获得所单击的形状,然后通过形状的Tag属性获得对应的数据行,得到了数据行,就可以根据数据行的内容执行相应的操作。


Map控件中所有的形状(包括线条和文字)都可以响应鼠标事件,可响应的鼠标事件有MouseClick、DoubleClick、MouseMove、MouseDown、MouseUp。


在Map控件的鼠标事件中,用HitTest方法获得鼠标位置的形状,然后通过其tag属性获得对应的数据行,基本代码为:

Dim map As GeoMap = e.Form.Controls("Map1").GeoMap
Dim
ifo As HitTestInfo = map.HitTest(e.Sender.MousePosition) 'MousePosition为新增加的通用属性,用于返回鼠标位置
If
ifo IsNot Nothing AndAlso ifo.Vector IsNot Nothing Then '如果是形状
    
If ifo.Vector.tag IsNot Nothing AndAlso TypeOf ifo.Vector.tag Is DataRow Then 'tag属性为数据行
        
Dim dr As DataRow = ifo.Vector.Tag '获得数据行
        
'执行后续操作
    
End If
End
If

可随意扩展

我们以项目文件的形式提供了两个可视化的流程图设计工具,而不是以内置功能的形式洗提供,就是为了方便大家扩展。

你可以给两个可视化绘制工具的数据表添加一些列,然后新建一个窗口,用于输入这些列的内容,最后修改流程图设计窗口的Map控件的DoubleClik事件代码,让用户双击某形状,可以定位到形状对应的数据 行,然后打开窗口输入这些列的内容。

或者给流程图设计窗口增加一个按钮,专门用于打开你的窗口。

完成了上述工作后,再修改流程图显示窗口的绘制代码,你可以根据新增列的内容改变形状的属性,例如边框颜色、字体颜色、背景颜色、文字内容、线条宽度等等;你还可以设置Map控件的鼠标事件代码,在用户单击、双击或经过某个形状时,获取对应的数据行,然后执行特定的操作。


本页地址:http://www.foxtable.com/webhelp/topics/6190.htm