流程图控件MindFusion.Diagramming for ActiveX常见问题集锦(上):删除表格等

翻译|其它|编辑:吴园园|2019-11-14 13:42:42.773|阅读 16 次

概述:流程图控件MindFusion.Diagramming for ActiveX常见问题集锦(一):删除表格等

MindFusion.Diagramming for ActiveX(之前版本叫FlowChartX)是一个ActiveX 控件。它能帮助你创建工作流图,流程图和图表处理,数据库实体关系图表,组织,层次和关系图表,网络配置,图表和树。

最新版本4.9.5发布,包含多项新功能改进和bug修复,点击查看详情

点击下载MindFusion.Diagramming for ActiveX最新试用版

点击查看下一篇:

流程图控件MindFusion.Diagramming for ActiveX常见问题集锦(下):设置鼠标光标等

问:有更好的方法来在VB中使用控件实现OLE拖放?

答:有一个名为drProgrControlVB的新拖放模式,它具有与drProgrControl相同的功能。区别在于,将属性设置为VB模式时将触发的事件将参数IVBDataObject接口与自动化兼容。FlowChartX VB事件的名称与在drProgrControl模式下触发的事件名称相同,只是将“ VB”后缀添加到它们中。

问:如果尝试访问传递到RequestCreateArrow事件中的箭头的DestinationBox属性,则会遇到应用程序错误!

答:触发RequestCreateArrow后,箭头的DestinationBox对象仍未设置。我们添加了一个名为ExpectedDestination的新箭头属性,该属性仅在RequestCreateArrow事件处理程序中有效。它指的是如果验证了箭头创建后将成为箭头目标对象的框或表。

问:我无法访问box对象的Font属性,每次都会引发错误。

答:默认情况下,所有对象(表格,框,箭头)的字体均设置为null / nothing。当图表对象的字体为null时,流程图的字体用于呈现对象的文本。这个想法是通过不为每个图表元素分配字体来减少内存使用。当对象的字体为null时,它将使用流程图的Font呈现其文本。因此,如果您需要为不同的对象使用不同的字体,则应首先使用VB SET语句将它们设置为某个值,然后您就可以无错误地访问Font属性。

问:我希望能够删除表格及其相关的子表格。除非有可能创建一个组并使用DestroyGroup方法,否则我看不到能够做到这一点的方法。

答:您可以使用递归算法对表进行级联删除,如下所示:

sub CascadingDelete(tbl as Table)
 dim i as integer
 
 `this will delete all child tables
 For i = 1 To tbl.GetRelatedTables(1,
   rlManyToOne).Count
 CascadingDelete tbl.GetRelatedTables(1,
 rlManyToOne).Item(0)
 Next i
 
 `the current table has no more children
 `so we can delete it
 fc.DeleteItem tbl
end sub
 
sub someSub
 if fc.ActiveItem = itTable then
 CascadingDelete ActiveTable
 end if
end sub

问:我的系统允许用户构造流程图,但是我想在允许放置箭头之前检查周期。我一直在使用RequestCreateArrow来基于前面和后面的对象验证箭头,但是直到最终放置箭头后,我才能使用FindCycle函数。您知道解决此问题的方法吗?

答:您可以使用FindShortestPath方法来检查是否存在一个带有正在创建的箭头的循环。例如,如果在框b1-> b2之间创建了箭头,则如果FindShortestPath(b2,b1)找到一条路径,则意味着将箭头添加到该路径将导致循环(箭头连接了箭头的两端)找到路径)。

另一个解决方案:如果正在创建从b2到b1的箭头,则如果FindShortestPath(b1,b2)返回路径,则再次意味着添加箭头将导致循环。

因此,在您的RequestCreateArrow事件处理程序中,您可以使用以下代码:

if FindShortestPath(arrow.SourceBox,
 ExpectedDestination) = Nothing then
 create = true
else
  create = false
end if

问:我想以编程方式更改对象的位置(例如,移动盒子)。如何使用VB6做到这一点?

答:可以使用SetRect方法更改框和表的位置。


MindFusion.Diagramming for ActiveX现已加入在线订购,现在抢购立享优惠

想要购买MindFusion.Diagramming for ActiveX正版授权的朋友可以咨询慧都官方客服

更多精彩内容,敬请关注下方的微信公众号,及时获取产品最新资讯▼▼▼

流程图控件MindFusion.Diagramming for ActiveX常见问题集锦(上):删除表格等



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

文章转载自:MindFusion.Diagramming for ActiveX https://www.mindfusion.eu/faq/flowchartx-mix.html#cycles

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
MindFusion.Diagramming for ActiveX

它能帮助你创建工作流图,流程图和图表处理

在线
客服
在线
QQ
电话
咨询
400-700-1020
购物车 反馈 返回
顶部
在线客服系统
live chat