手动计划
任务的计划模式有两种,分别是手动计划和自动计划.
手动计划可以提供最大的灵活性,可直接指定任务的开始日期和结束日期, 不会因为约束、前驱任务或资源的依赖关系而导致任务日程被动变更。
我们通常将计划模式为手动的任务,称为手动任务,我们可以通过拖动、手动或代码方式增加手动任务。
在添加手动任务时,不需要(也不能)设置约束,而是直接指定任务的起始日期和结束日期:
如果通过拖动创建手动任务,会自动生成起始日期和结束日期。
如果要改为通过起始时间和持续时间来设置日程,则要先去掉结束日期复选框的勾选状态:
你可以通过代码创建手动任务,例如:
Dim
gv
As
GanttView = e.Form.Controls("GanttView1").GanttView
gv.Tasks.Clear()
'清除原来的任务
gv.StartDate =
New
Date(2024,
9, 1)
'设置项目的起始日期,每个任务的开始日期不能早于此日期
Dim
tk1
As
New
Gantt.Task
'增加一个任务
,通过开始日期和结束日期来设置日程
tk1.Name =
"Task1"
'设置任务名名称
tk1.Mode = Gantt.TaskMode.Manual
'计划模式为手动
tk1.Start =
New
Date(2024,
9, 2)
'任务开始日期
tk1.Finish =
New
Date(2024,
9, 12)
'任务结束日期
gv.Tasks.Add(tk1)
'将任务添加到Tasks集合
Dim
tk2
As
New
Gantt.Task()
'增加一个任务
,通过开始日期和持续天数来设置日程
tk2.Name =
"Task2"
'设置任务名称
tk2.Mode = Gantt.TaskMode.Manual
'计划模式为手动
tk2.Start =
New
Date(2024,
9, 13)
'任务开始日期
tk2.Duration = 6
'任务持续时间为6个工作日
Dim
pre
As
New
Gantt.Predecessor()
'定义一个前置类
pre.PredecessorTask = tk1
'设置前驱任务为Task1
pre.PredecessorType =
Gantt.PredecessorType.FinishToStart
'两个任务的关系为"FinishToStart",也就是前驱任务完成后才开始本任务
tk2.Predecessors.Add(pre)
'将添置类添加到Predecessors集合
gv.Tasks.Add(tk2)
'将任务添加到Tasks集合
运行上述代码,会得到两个手动任务:
手动任务很灵活,没有约束,例如我们可以拖动Task2调整其开始日期,使得其开始日期在前驱任务Task1的结束日期之前,如果是自动任务,这是不允许发生的:
如上图所示,系统对于这种日程冲突,会在表格的行号位置显示一个红色的冲突符号。