增加功能按钮

示例一

你可以打开CaseStudy目录下的文件“甘特图绑定状态.Table”。

打开这个项目的窗口,可以看到甘特图的工具栏多了个“标记任务”按钮,单击这个按钮,可以将当前任务的任务名单元格的样式设置为红底白字,再次单击则取消设置:

要实现这个功能,首先在窗口的AfterLoad事件中加上代码:

Dim gv As GanttView = e.Form.Controls("GanttView1").GanttView
gv.Strip.Items.Add(
"cmdMark", "标记任务", "MarkCell16.ico", StripItemTypeEnum.Button)

然后在GanttView的StripItemClick事件加上代码:

Dim gv As GanttView = e.form.Controls("GanttView1").GanttView
If
e.StripItem.Name = "cmdMark" Then
   
Dim tk As Gantt.Task = gv.SelectedTask
   
If tk IsNot Nothing Then
       
If tk.FieldStyles.Count > 0 Then '如果已经设置了样式
            tk.FieldStyles.Clear
'则清除样式
       
Else
           
Dim ft As New Gantt.FieldStyle()
            ft.Field = Gantt.StyleField.Name
'设置任务名称单元格
            ft.BackColor = Color.Red
'红色背景
            ft.ForeColor = Color.White
'白色字体
            tk.FieldStyles.Add(ft)
'添加到样式集合
       
End If
   
End If
End
If

示例二

自带工具栏的"增加空白行"按钮,其实是在当前行位置增加一个空白任务,如果你觉得这样不方便,可以自己增加一个工具栏按钮。

首先在创库的AfterLoad事件加上代码:

Dim gv As GanttView = e.form.Controls("GanttView1").GanttView
Dim
idx As Integer = gv.Strip.Items("tsbAddBlankRow").Index '获得原来的增加空白行按钮的位置
gv.Strip.Items(
"tsbAddBlankRow").ToolTip = "插入空白行" '将其提示改为"插入空白行"
gv.Strip.Items.Insert(idx,
"cmdAddBlankRow", "增加空白行", "AddRow16.ico", StripItemTypeEnum.Button) '插入一个按钮用于增加空白行

然后在GanttView的StripItemClick事件加上代码:

Dim gv As GanttView = e.form.Controls("GanttView1").GanttView
If
e.StripItem.Name = "cmdAddBlankRow" Then
   
Dim tk As New Gantt.Task
    gv.tasks.add(tk)
    gv.SelectedTaskIndex = gv.Tasks.Count - 1

End
If

示例三

你可以打开CaseStudy目录下的文件“甘特图非绑定状态.Table”,参考其中的窗口“甘特图2”。

之前在导出数据到DataTable这一节,,我们通过在窗口增加一个普通按钮来导出数据。

你可以不用普通按钮,直接在GanttView自带的工具栏中加上一个按钮用于导出数据:

 

实现过程很简单:

1、在窗口的AfterLoad事件加上代码:

Dim gv As GanttView = e.Form.Controls("GanttView1").GanttView
gv.Strip.Items.Add(
"cmdExport", "导出数据", "datalist.ico",StripItemTypeEnum.Button)

2、然后在GanttView的StripItemClick事件加上代码:

If e.StripItem.Name = "cmdExport" Then
   
Dim gv As GanttView = e.Form.Controls("GanttView1").GanttView
    DataTables(
"任务").DataRows.Clear()
    DataTables(
"前驱任务").DataRows.Clear
    DataTables(
"资源分配").DataRows.Clear
    DataTables(
"资源定义").DataRows.Clear
   
For Each rs As Gantt.Resource In gv.Resources '变量资源定义
       
Dim dr As DataRow = DataTables("资源定义").AddNew()
        dr(
"资源ID") = rs.ID
        dr(
"资源名称") = rs.Name
        dr(
"资源类型") = rs.ResourceType
        dr(
"计量单位") = rs.UnitOfMeasure
        dr(
"单位成本") = rs.Cost
   
Next
   
For Each tk As Gantt.Task In gv.Tasks '变量全部任务
       
Dim tr As DataRow = DataTables("任务").AddNew()
        tr(
"任务ID") = tk.ID
        tr(
"任务名") = tk.Name
        tr(
"类型") = tk.Mode
        tr(
"摘要") = tk.Summary
        tr(
"开始日期") = tk.Start
        tr(
"结束日期") = tk.Finish
        tr(
"持续天数") = tk.Duration
        tr(
"完成百分比") = tk.PercentComplete
        tr(
"父任务ID") = tk.OutlineParentID '也就是所属摘要任务的ID
       
For Each pk As Gantt.Predecessor In tk.Predecessors '遍历这个任务的前驱任务
           
Dim pr As DataRow = DataTables("前驱任务").AddNew()
            pr(
"任务ID") = tk.ID
            pr(
"任务名称") = tk.Name
            pr(
"前驱任务ID") = pk.PredecessorTaskID
            pr(
"前驱任务名称") = pk.PredecessorTask.Name
            pr(
"前驱类型") = pk.PredecessorType
            pr(
"延迟天数") = pk.Lag
       
Next
       
For Each rs As Gantt.ResourceRef In tk.ResourceRefs '遍历这个任务用到的资源
           
Dim zr As DataRow = DataTables("资源分配").AddNew()
            zr(
"任务ID") = tk.ID
            zr(
"任务名称") = tk.Name
            zr(
"资源ID") = rs.ResourceID
            zr(
"资源名称") = rs.Resource.Name
            zr(
"资源用量") = rs.Amount
            zr(
"资源单价") = rs.Resource.Cost
       
Next
   
Next
End
If

重要提示:

自行增加的功能按钮,name属性不能以"ts"开头,否则不会触发事件。


本页地址:http://www.foxtable.com/webhelp/topics/4034.htm