看来还得向 hyee(小狗旺财) fancuixia(范翠霞)等朋友学习啊! 防止曲线重合,我想能否这样做: 就是在曲线增加多一个linkTo属性,它表明是从usercase1指向usercase2,当再画一条曲线的时候,通过document.all.tags("line")循环找曲线并且痛linkTo属性判断两个用例(步骤)之间是否已经存在曲线,如果存在的话,则警告,否则画之,你认为呢?? <v:line style=\"POSITION: relative\" linkTo="usercase1,usercase2" from = \""+oldX + ","+oldY+" \" to = \""+newX+","+newY+"\"></v:line>
<v:line style=\"POSITION: relative\" linkTo="usercase1,usercase2" from = \"expression(usercase1.style.left),expression(usercase1.style.top)\" to = \"expression(usercase2.style.left),expression(usercase2.style.top)\"></v:line>好像不支持expression的,当我移动图的时候,我是想连接的图形的曲线也跟着移动,但好像expression不支持似的,岂不是还要手动再写几行代码??55555
有关于Path的详细解释。
<v:shape
style="MARGIN-TOP: 0pt; Z-INDEX: 1; MARGIN-LEFT: 0pt; WIDTH: 60pt; POSITION: absolute; HEIGHT: 60pt"
coordsize = "21600,21600" o:spt =
"9" path = "m@0,0l0,10800@0,21600@1,21600,21600,10800@1,0xe" ></v:shape>
我现在想把coordsize="12,12" 对应的PATH我就得到path = "m@0,0l0,6@0,12@1,12,12,6@1,0xe" 但菱形就是不出来,“@”我看了帮助,也不是很清楚是啥意思,能否跟我说说吗,还有就是怎么把对应的path得出来
<v:shape
style="MARGIN-TOP: 0pt; Z-INDEX: 1; MARGIN-LEFT: 0pt; WIDTH: 60pt; POSITION: absolute; HEIGHT: 60pt"
coordsize = "21600,21600" o:spt =
"9" path = "m@0,0l0,10800@0,21600@1,21600,21600,10800@1,0xe" >
<v:formulas>
<v:f eqn="val 21600">
</v:formulas>
</v:shape>
就是说把方程式中的第一个值(21600)传递给path
我还有个简单(对于VML已经入门的来说,肯定是简单的)问题,下面是一个帮助
//begin help
<v:textbox />
文字方塊(用於用於描述其它vml元件)
CSS屬性:
padding :
padding-bottom : 預設為0.05in
v-text-anchor : 對齊,有top , middle , bottom , top-center , middle-center , bottom-center , top-baseline , bottom-baseline , top-center-baseline , bottom-center-baseline
v-text-wrapping : 換行,true或false
Clayout-flow : horizontal , vertical , vertical-ideographic , horizontal-ideographic
//end help
这是我的代码
<v:textbox valign="middle" style="MARGIN-TOP:
5.062pt; FONT-SIZE: 20pt; LEFT: auto; MARGIN-LEFT: 8.656pt; WIDTH: 134.187pt; COLOR: maroon; FONT-FAMILY: impact; TOP: auto; HEIGHT: 146.375pt; BACKGROUND-COLOR: white;">e-note</v:textbox>
//end code
依据上面的帮助</v:textbox>不是有一个属性v-text-anchor 可以设置文字左右方向的左中右和上下方向的上中下,为什么我在style属性里加v-text-anchor=middle-center 一点效果都没有的?????
分不够可以再加!!
l 表示 line to
x 表示 话闭合图形
e 表示 end
<v:textbox valign="middle" align="middle" style="MARGIN-TOP:
5.062pt; FONT-SIZE: 20pt; LEFT: auto; MARGIN-LEFT: 8.656pt; WIDTH: 134.187pt; COLOR: maroon; FONT-FAMILY: impact; TOP: auto; HEIGHT: 146.375pt; BACKGROUND-COLOR: white">
<table width="100%" height="100%">
<tr>
<td align="middle">
e-note
</td>
</tr>
</table>
</v:textbox>
<v:textbox ...style="...;text-align:cente;vertical-align:middle"。不过许多情况下,在td之外的元素使用vertical-align经常没有效果
我现在是用VML画简单的流程图,越写下去,就遇到越多的问题
1。找点问题(我们用VISIO的时候,画一条曲线,移动到一个用例图附近的时候,曲线会自动连到用例图),想问一下是不是通过遍历每个元素,然后判断位置和曲线位置相符合来找的,这种方法可行吗?
2。流程图如何存储到XML,或者数据库,我看有些软件(不是很著名的),它每画一个流程图的时候就已经加载了一个开始活动,和结束活动这个两个流程步骤,我猜它是这样存的:通过找开始活动图的位置,找到链接它的曲线,通过曲线的位置找到下一个流程步骤,这样做的话,是不是很繁琐啊!还有什么更好的方法?
说了那么多,是不是觉得我很烦呢?!(从来没有这样在CSDN发过这么长的帖子)
用VML+javascript+xml+数据库可行吗??这个是我最担心的问题啊!!
先COPY,防止保存不了
2、尝试在服务器端生成流程图可不是一个好办法哦,最好先把相关的数据发送到客户端,客户端再根据发送的数据生成一个xmldom或者数组,然后在客户端画图更好。
3、vml可以同xml合起来,我觉得接洽的很好。示例的xml文件请见http://home.kimo.com.tw/nanashi_07/enote/vml/tem.vml
示例的使用文件见
http://home.kimo.com.tw/nanashi_07/enote/vml/imagedata.html
就是fancuixia(范翠霞)朋友说的那个网站,想必你有看过,vml,xslt,xml三者结合也可以做到,具体找msdn,我也忘了地址是什么了。可是上述这两种方法都没有
js+vml+vml Shapetype元素快。vml+javascript+xml+数据库绝对可行,可别老想钻牛角尖,一定有许多折衷的方法。
防止曲线重合,我想能否这样做:
就是在曲线增加多一个linkTo属性,它表明是从usercase1指向usercase2,当再画一条曲线的时候,通过document.all.tags("line")循环找曲线并且痛linkTo属性判断两个用例(步骤)之间是否已经存在曲线,如果存在的话,则警告,否则画之,你认为呢??
<v:line style=\"POSITION: relative\" linkTo="usercase1,usercase2" from = \""+oldX + ","+oldY+" \" to = \""+newX+","+newY+"\"></v:line>
比如一个group的coordsize='21600,21600',它的一个rect的位置是:
left:0;top:0;width:2000;height:2000;那么要连接到该rect的右边的中点,该点就是
2000,1000。放在group里面可以减少复杂度。不过coordsize要适量大一些。因为如果太小,线条有时候会显得模糊。
用一个xml文件掌控整个流程(包括可执行操作以及执行该操作的权限),
而vml只不过是该xml文件的外在表现方式。流程图可以根据等级(level属性)和位置(name属性)唯一确定一个标签,
而某一个标签可能有不同的状态(即流程的状态),在某一个的状态下可能有
一些可执行操作,执行某一个操作中,它将会改变流程的状态,也可能跳跃到
不同的标签。所以,一个标签的某一个操作就表现为一条曲线。如果你明白上面的原理,
流程图与表单的结合就好办了。
1->2 2->3 2->4 3->4
<work>
<流程步骤>
<1-2/>
<2-3/>
<2-4/>
<3-4/>
</流程步骤>
<流程图>
<1>
<!--这里记录此流程步骤用到的表单号,权限,表单用到的数据表的字段是否显示,只读 同一个表单有可能多个地方用到-->
</1>
<2>
<!--以上相同->
</2>
</流程图>
</work>
而记录整个流程图的VML的控件属性以及一些说明我是在另外一个XML,如果在上面xml文件的话我觉得更方便。我现在担心的就是javascript的下的xmldom好像不支持xPath的一些函数,xsl才支持(不知道我说的对不对)如file://*[string-length(name())=n]选择所有有n个字符的元素。执行到前流程找下一个流程的时候就不好办了。你认为上面的可行吗??
还有就是我现在是这个流程图画好了一次性保存的,而现在如果涉及到流程图步骤涉及到的表单,数据表,以及权限的话,那么多数据就不知往哪里放,而如果每涉及一个流程步骤及时更新XML的话,又觉得没必要!
<workflow>
<tag name="1" level="1"> <!--name相当于确定横坐标,level相当于确定纵坐标-->
<status value="__NEW"> <!--__NEW表示新的提交-->
<action name="申请"> <!--在这个状态下可以执行的操作,并为这个操作起一个名字-->
<mode name="R01"/> <!--把提交申请的权限赋予角色R01,因为也许有多个角色有此权限,所以不能设为属性-->
<toTag="2" /> <!--要到达的标签-->
<toStatus value="正在申请"/> <!--申请成功后状态的值-->
<page name="apply/test.asp"/> <!--可以执行本操作的文件,从而通过模块载入该文件时,可以动态确定该文件要执行的操作-->
</action>
</status> <!--因为在相同状态下可以有多个操作,所以status应作为tag的子节点-->
</tag>
<tag level="2" name="2">
</workflow>
其实搞流程的时候建立这么一个控制文件是很有必要的.越复杂的流程越显示出它的重要性,因为它可以防止逻辑混乱.如果你可以作出通用模版,并且以后的项目与流程有关,那么你只需要花一半的时间.
像如果权限的话,有可能赋予的不止是角色,还有可能是部门,或者是个人的
1.
<mode name="{R01},[D01],P01" /><!--{}表示角色[]表示部门,P01表示员工代号-->
2.
<mode>
<mode_R name="R01"/>
<mode_D name="D01"/>
<mode_P name="P01"/>
</mode>
3.
<mode>
<item name="Role">R01</mode>
<item name="Dept">D01</mode>
<item name="Userno">P01</mode>
</mode>
还是另有比较好的方法??
http://expert.csdn.net/Expert/topic/1810/1810050.xml?temp=.8042566