VARCHART XGantt用户手册(ActiveX版):如何操作互动事件(下)
VARCHART XGantt是一个交互式的甘特图控件,其模块化的设计让您可以创建满足您和您的客户所需求的应用程序。(我们领先的甘特图控件VARCHART XGantt可用于.NET,ActiveX和ASP.NET应用程序。)除此之外,同时还具有一个稳定可靠的甘特图工具,在编写第一行代码之前,您就可以知道是否可以满足客户的需求。
在启用实时更新的拖放交互过程中,接收和处理有关对象的信息将非常有用。本文介绍该教程的后面一部分内容,内容紧接前文哦~
交互事件
如前面所述,现在在交互过程中和交互结束时引发对象事件。事件处理程序的签名,例如这里的VcNodeModifying事件的值没有变化。但是如何识别事件是在交互过程中还是在交互结束时引发的?
这可能很重要,因为例如,并非将鼠标移动引起的每一个修改都存储到数据库中:这将导致过多的耗时工作。当然,仅应在操作完成后存储数据。
现在,可以通过伴随并描述交互的一些新事件来解决此问题,并且可以在交互过程中的对象事件中对其进行评估。
按下鼠标左键后,VcInteractionStarted事件将传递有关鼠标键所在的对象(对象和对象类型)以及该对象发生了什么的信息。交互所需的一切都可以准备好。
提示:还可以在此处切换特定于对象和上下文的更新行为。在极端情况下,一个节点可能会完全动态地做出反应,而另一个节点会带有蓝色的幻影帧。此外,相应的设置(InInteractionEventsEnabled)允许有关是否在交互过程中也要发生对象事件的单独决定。
示例:节点
buy
对象:NodeObject
类型:vcObjTypeNodeInDiagram
OperationMode:vcIIMMoveNode
按下鼠标左键时,VcInteractionStarted事件显示图表中节点的移动已经开始。
应该伴随交互的信息或元素可以在此处初始化。
创建对象
在某些互动中,最初没有可用的对象,例如创建节点或框时。在这种情况下,事件VcInteractionObjectChanged会在内部创建对象后立即发生,这是涉及节点的实际图表节点。
该动作的结束由VcInteractionEnded事件指示。在交互过程中使用的所有其他元素都可以在此处删除。
使用交互事件创建新对象时,过程如下:
VcInteractionStarted
VcInteractionObjectChanged
修改/修改的事件,显示创建元素时的修改
创建和创建事件
VcInteractionEnded。
互动期间激活了非交互事件
如果在交互过程中也启用了交互事件(vcGantt.InInteractionEventsEnabled = true),则释放鼠标键时将有一个附加事件,指示这些事件的结束:VcInInteractionEventsEnded。
这使得将交互过程中引发的对象事件与交互结束时引发的对象事件区分开来变得容易。如果引发此事件,则下一个对象事件将是结束事件。
可能的情况
换句话说,使用交互事件时有两种可能的情况。
控制与以下对象的交互:
非交互事件已关闭
非交互事件已打开
停用非交互事件时与所涉及对象的事件进行协作
屏幕截图显示了在关闭非交互事件(vcGantt.InInteractionEventsEnabled = false)时,Interaction(黄色闪电)和对象事件(赭色和绿色闪电)如何协作:
交互开始,由InteractionStarted事件指示。
释放鼠标键时,对象事件首先出现,例如VcNodeModifying和VcNodeModified带有节点。换句话说,这是关于对象事件的旧行为,因此,如果不使用InInteraction事件,则无需修改对象事件中的现有代码。
交互的结束由VcInteractionEnded事件指示。
与相关对象的事件合作,而InInteraction事件已激活
如果使用了InInteraction事件,则会出现以下事件:
VcInteractionStarted在按下鼠标左键时开始
鼠标移动时的Modifying和Modified事件
VcInInteractionEventsEnded,然后释放鼠标左键时完成对象事件
VcInteractionEnded指示交互结束。
示例:移动节点:
当鼠标光标位于某个节点上时,如果按下鼠标左键,则交互开始。出现事件VcInteractionStarted。
移动鼠标时出现的事件表示实际节点的状态(VcNodeModifying),而在更新时(VcNodeModified1>)图表节点。
释放鼠标键时,将出现VcInInteractionEventsEnded事件
对象事件VcNodeModifying和VcNodeModified指示交互结束时图表节点的状态。
最后出现的是VcInteractionEnded事件。
示例:设置节点更新行为“鼠标移动”时对象事件的行为
由于VcNodeModifying事件允许修改EventReturnstatus(e.ReturnStatus),因此现在也可以在交互过程中完成此操作。
因此,如果e.ReturnStatus = ReturnStatusFalse指示所提供的数据不是“有效的”,则图表中的对象将不会随着下一次可能的更新而刷新,并且不会引发相应的VcNodeModified事件。
通过将对象保留在其旧位置并通过幻像指示当前位置,可以看到该图像。
通过实物可视化的对象(当前仅节点和节点框)的状态指示如下:
当前位置通过变亮的实部来可视化,事件中仍会提供其值。
最后一个有效状态,即最后一个未将ReturnStatusFalse返回为e.ReturnStatus的状态,由另一个实数表示,表示那里“被卡住了”。这样,两条信息都可以可视化。
在该节点上,最后一个有效状态的值(即被卡住的实数)与VcNodeModifying-Event中的e.OldNode对应。如果VcInInteractionEventsEnded之前的最后一个VcNodeModifying事件以ReturnStatusFalse完成,则将提供最后一个有效状态在结束事件中。
可以决定是否接受此状态。如果在结束事件中设置ReturnStatusFalse,则将恢复原始的开始状态。
实用技巧:我们建议创建一个“Interactioning InteractionInfo”对象,该对象提供有关事件中交互的所需信息,并可以进行相应的评估。
本教程内容到这里就结束了,感兴趣的朋友可以继续关注我们哦,我们会不断更新更多内容~您也可以点击下载VARCHART XGantt试用版进行评估~
相关内容推荐:
VARCHART XGantt用户手册(ActiveX版):如何操作互动事件(上)
想要购买VARCHART XGantt正版授权,或了解更多产品信息请点击