VARCHART XGantt用户手册:解读拖动工具(上)
VARCHART XGantt是一个交互式的甘特图控件,其模块化的设计让您可以创建满足您和您的客户所需求的应用程序。(我们领先的甘特图控件VARCHART XGantt可用于.NET,ActiveX和ASP.NET应用程序。)
甘特图使计划人员可以通过来回移动来轻松地重新计划订单、任务或资源。但是,将节点定位在时间轴的某个点或紧接另一个节点之后可能会很棘手,因为甘特图中的某个点必须被鼠标精确击中。
此外,在许多甘特图中,使用了多级组。在大型计划中,如果目标组的位置很远,则用鼠标将节点从一个组或其子组拖到另一个组有时,会带来一些不便和混乱。
Snap工具:支持水平拖动
许多拖动应用程序或设计工具已经提供了所谓的snapgrid,以帮助通过预定义的网格(通常以像素间隔)精确定位对象。 VARCHART XGantt现在提供了类似的功能。移动的对象未调整为固定网格,而是调整为图形中的其他对象,因此这些对象定义了具有不规则距离的网格。
节点(或其层)、日期行、行网格和日历网格允许定义所谓的snap目标。这意味着这些对象在其自身上定义了某些位置,用作其他对象的snap动作的目标。当水平移动节点或修改节点或图层的大小时,该节点或图层的开始或结束日期将按时间顺序调整为其他对象定义的snap工具。开始日期或结束日期将朝其附近5像素之内的快照目标移动,因此将接管目标的确切日期。
已为每个节点布局定义了特殊的行为(未分组、分组、分层排列;假定相应的对象定义了snap工具):
所有节点布局:将要移动的层调整为日期行、行网格和日历网格。
未分组的布局:将要移动的图层调整为所有节点的图层。
分组布局:将要移动的层调整为一组(没有子组)节点的层。如果在交互过程中更改了组,则层将被调整为新组的对象。
分层排列:将要移动的层调整为同一分支(带有子分支)的节点的层。如果在交互过程中更改了分支,则会将图层调整为新分支的对象。
为了使snap工具生效,必须在“节点”属性页面上将其启用
API调用:vcGantt.UseSnapTargetsInInteractions = true / false
可以在“编辑图层”对话框中将图层定义为snap目标。选中“开始snap目标”和“结束snap目标”复选框,将图层的位置(即日期)设置为拖动节点或图层的snap目标。
API调用:
VcLayer.StartSnapTarget = true / false
VcLayer.EndSnapTarget = true / false
日期行可以在“指定日期行”对话框中定义为snap目标。勾选“snap目标”复选框,将日期行的位置(即日期)设置为捕捉节点或图层的snap目标。
API调用:VcDateLine.SnapTarget = true / false
snap目标LINE GRIDS / CALENDAR GRIDS
行网格和日历网格可以在两个不同的位置定义为snap目标:
在“编辑时间标度”部分中,没有单独的对象
在单个、与组或节点的对象对话框下方。
选中“编辑时间标度”部分对话框中的相应复选框,将相关对象的位置(即它们的日期)设置为拖动节点或图层的snap目标。
在“分组”对话框中,您可以访问“管理日历网格”和“管理行网格”对话框,其中勾选相应的复选框会将相关对象的位置(即它们的日期)设置为拖动节点或图层的snap目标。
API调用:
VcDateLineGrid.SnapTarget = true / false
VcCalendarGrid.StartSnapTarget = true / false
VcCalendarGrid.StartSnapTarget = true / false
请注意:由于在移动多个节点时混合所有对象(即来自多个功能区的对象)的snap目标没有意义,因此仅在移动单个节点时才考虑单个对象的snap目标。没有提供将节点单独snap到其所在的功能区的snap目标上的功能。
通过箭头键移动节点
节点不仅可以通过鼠标进行交互式移动,还可以通过键盘上的鼠标键进行移动。为此,需要以下设置:
vcGantt1.ArrowKeyMode = VcArrowKeyMode.vcResizeOrMoveNode
值vcNodeJumpToSnapTarget已添加到枚举VcArrowKeyMode。如果设置了此值,则按CTRL +向左或向右箭头键会导致标记的节点snap到下一个或最后一个snap目标,这是一个循环操作:如果到达终点,则一切都从起点开始。
本教程内容较长,敬请期待后面半部分内容~感兴趣的朋友可以点击下载VARCHART XGantt试用版尝试一下~
相关内容推荐:
想要购买VARCHART XGantt正版授权,或了解更多产品信息请点击