51CTO向您推荐《体验Visual Studio 2008展望2010》专题。希望这个专题能让您更好的使用Visual Studio 2008。
Visio是微软旗下的一款图表制作与流程管理工具,用来帮助IT和商务人员来可视化的分析和交流复杂信息。而Visual Studio则是一个应用程序的可视化开发平台。这两个互不搭界的内容,他们会有交叉点吗?
微软将这变为了可能。简单的说,在Visual Studio中提供了一些项目模板。这些模板可以帮助用户来创建用于Visio的应用程序外接程序。而这些外接程序又可以帮助Visio直线自动化、扩展Visio的功能等等。通过应用程序级外接程序体系结构将两个产品紧紧的联系在一起。笔者日常在项目管理中,经常需要使用Visual Studio工具来开发一些Visio的个性化功能。在这里就将笔者的经验跟大家分享一下,供各位读者参考。
一、Visual Studio可以给Visio带来哪些改善。
简单的说,通过Visual Studio来让Visio实现自动化,主要是通过API来完成的。这是一个原则性的内容,笔者先要强调一下。虽然也可以通过其他方式来实现,但是并不建议。因为这会增加工程的复杂性。一般来说,大部分任务都可以通过API来编写代码完成。笔者常用的功能有以下几个。
一是根据业务逻辑和用户的输入管理Visio中的形状。如笔者使用Visio来管理用户的流程制作。流程具有一定的步骤。当用户在输入信息的时候,如果每有按步骤来。如跳过了一个步骤,那么当用户输入信息时就可以在界面上探出一个问号的形状。这可以提醒用户,必须按流程来输入数据。
二是可以用来控制关系图的可视化效果。在跟其他用户通过Visio来进行信息交流分析的时候,往往需要根据实际情况来控制关系图的可视化效果。如某个对象的平移或者缩放。一个比较简单的例子,就是将鼠标移动到某个对象上,或则单击,这个对象会自动扩大。这可以让其他用户更加清晰的看到相关的内容。
三是将外部的数据导入到Visio中。如果需要将Word等文档的内容导入到Visio中,则可以使用其自带的导入工具。但是如果需要将其他的文档,如ACD文件,则需要开发其他的接口。如果有这个需求的话,使用Visual Studio来完成,是一件比较轻松的事情。
以上三点可能是在实际工作中经常会遇到的需求。当然这两个产品之间的合作不限于这些方面,可能还有更多。由于工作经验的限制,笔者只强调这几点。如果大家还有比较典型的应用,希望各位可以分享出来,大家共同进步。
二、Visio与Visual Studio之间交互的渠道。
本来要扩展某个应用程序的功能是一件比较复杂的工作,因为其需要考虑到方方面面的内容。而现在借助Visual Studio来实现Visio的自动化,则是一件相对简单的工作。这主要是因为他们提供了一些可以相互交互的对象。这些对象排列在一个与用户界面密切相关的层次结构中。这些对象就好像是一道道门。通道已经有了,现在主要的问题就是如何配一个合适的钥匙。
根据笔者的经验,在通过VisualStudio与Visio打交道的时候,主要需要用到三个对象。分别是Application对象、Document对象、Page对象。如果用户有这个需求,那么首先需要做的就是了解这个三个对象,特别是需要知道,这三个对象可以分别实现什么样的功能。只有如此,当用户提出需求的时候,Visual Studio管理员才能够对症下药,选择合适的对象。
其中Application对象它表示Visio应用程序,它的所有成员通常作为一个整体应用于Viso,是另外两个对象的父级。而Document对象与Page对象则是具体的对象。前者是Visio编程的中枢,它主要负责一个绘图、模具和模板文件。而后者主要表示前景或者背景的绘图区域。
笔者比较愿意将Application对象比喻成未来的丈母娘,后其余两个对象就是他的女儿。而用户就好像是白马王子。当白马王子要跟他的女儿结婚的话,必须要通过Application对象,或者经过其同意。只要他同意之后,以后这小两口的日子怎么过(具体怎么操作与实现),就是他们之间的事情了。了解这三个对象之间的关系,对于我们后续的开发工作会有很大的帮助。
三、通过VS向Visio文档中添加形状。
了解上面三个对象的关系之后,下面笔者就好总结一下,通过VS向Visio发出各种问候所需要注意的内容。如通过VS向Visil文档添加某个具体形状,如判断用的零星是怎么实现的,以及相关的注意事项。
如果向VS向Visio中添加形状,简单的说可以分为两个步骤。
第一步:从Documents对象中查询主控形状。
这里需要注意一点,如果要通过VS向Visio文档中添加某个形状,有一个前提就是这个形状必须已经存在于Documents对象中。也就是说,只能够实现对已经存在对象的调用。如果用户需求添加一些自定义的形状,那么就需要一个额外的步骤。如可以在Visio中先通过添加功能将其加入到Documents对象中。然后再通过VS来调用。Documents对象在上面的内容中笔者已经强调过,它主要负责一个绘图、模具和模板文件。也即是说,所有的形状信息都是保存在这个对象中的。当VS向Visio文档中添加某个形状时,首先要做的就是在这个对象中进行查找,看自己需要添加的形状是否在这个文件中。这里主要用到Documents.Masters集合。如果形状比较多的话,为了提高查询的速度,用户可以通过索引或者主控形状的名字来检索主控形状。下面这段代码就是用来查询形状是否存在。
Visiostencil.masters.get_itemu(@”形状的名字”)。
第二步:将需要的形状添加到文档中。
找到某个形状之后,就需要将其加入到某个文件中。在加入这个操作的时候,我们需要至少指定两个内容。一是将哪个形状加入到这个文件中,二是将其放到哪个位置上去。有时候可能还需要指定一个内容,就是这个形状要显示的文本内容。虽然这个并不是必须的。如果有需要的话,最好一起来完成。具体来说,可以通过以下两段代码来完成。
Visiopage.drop(刚才查询到的形状,坐标X,坐标Y)
VisioStarshape.text=@”要显示的内容”
注意以上三个语句往往需要连着用。第一个语句主要用来查询所需要的形状是否存在。第二个语句就是将刚查查询到的形状放置到文档中(其使用的参数就是第一个语句种查询出来的结果)。第三个语句就是往这个形状中添加一些描述性的文本。一般来说,前两个语句是必须的,而第三个语句是可选的。一般为了提高可读性,往往将这个三个语句放到一起,如下面所示:
Visiostencil.masters.get_itemu(@”形状的名字”);
Visiopage.drop(刚才查询到的形状,坐标X,坐标Y);
VisioStarshape.text=@”要显示的内容”;
第一条语句主要用到了Documents对象,第二条语句用到了Page对象。这两个对象份工合作,各自完成相关的动作。简单的说,Documents对象是静态的内容,或者只是一个文件,只要用来保存可用的形状。而Page对象就是一些动作的集合,如添加某个形状、删除某个形状、放大或者缩小某个形状等等。对于形状的具体操作,都需要通过Page对象来完成。为此对于Page对象中的各种方法,如Drop,管理人员必须要有十分详细且精确的了解。否则的话,下面很多工作就都无法开展了。
通过上面这个简单的案例,可以看出在Visual Studio平台与Visio三个对象的帮助下,跟Visio打交道并没有我们想象中的那么复杂。通过一段时间的练习与操作,相信各位读者都可以轻松的掌握如何让Visio实现自动化的技巧。这篇文章中提到的一些技巧与注意事项,能够为大家这方面的改进带来一定的帮助。
【编辑推荐】