このトピックでは xamGantt™ を使用してタスク期間とタスク期間単位を設定する方法を説明します。
タスクの期間はタスクが必要とする時間です。タスク期間の値は固定された稼働時間の量を表します。
タスク期間はさまざまな単位で表すことができます。タスク期間に使用可能な単位は、 ProjectDurationFormat 列挙体で定義されます。サポートされる単位のタイプは Microsoft Project 2010 がサポートするタイプと同じです。
XamGantt アセンブリはタスク期間をプログラムで設定するために ProjectDuration と ManualProjectDuration の 2 つのカスタム タイプを定義します。プロジェクト期間の設定で便利な方法は、ProjectDuration 構造の静的な FromFormatUnits メソッドを使用することです。
タスク期間の単位は標準の期間単位と継続期間単位に分類できます。標準の期間単位は 1 日あたりの稼働時間数を基準に計算します。継続時間単位は 24 時間時計と週 7 日を基準に計算します。つまり、標準の期間単位を使用して 24 時間タスクの期間を計算すると (8 時間労働を前提とする) 3 日になりますが、継続時間単位を使用して同じ計算をすると 1 日になります。
見積もり期間はタスクの期間値で現在最も信頼できる見積もりです。期間値を見積もりとして設定できますが、これはこのタスクの期間に関する情報がまだあることを示します。
注:
ProjectDuration はタスクの期間の時間 (TimeSpan として分で保管される)、期間単位 (ProjectDurationFormat として保管される) およびオプションで値が見積もられるかどうかを表します。
プロジェクト期間は ProjectSettings クラスのいくつかのプロパティによって異なります。これらのプロパティは期間が表す分数を計算するために使用されます。これらは、以下の表にまとめられています。
注:
このコード例は、ProjectDuration FromFormatUnits 静的メソッドを使用してタスクの期間をプログラムによって設定する方法を示します。異なる期間の単位と値を設定する方法を示します。
この手順を実行するには、以下が必要です。
以下の必要な参照を含むプロジェクト。
InfragisticsWPF.Controls.Editors.XamCalendar.dll
InfragisticsWPF.Controls.Grids.XamGrid.dll
InfragisticsWPF.Controls.Menus.XamMenu.dll
InfragisticsWPF.Controls.Schedules.dll
InfragisticsWPF.Controls.Schedules.XamGantt.dll
InfragisticsWPF.DataManager.dll
InfragisticsWPF.dll
コンパイルおよびランのサンプル プロジェクトの両方のプレビューを確認できます。これらのタスクごとに期間と期間単位の値を指定することによって作成されたサンプル タスクとともに xamGantt を表示します。
FromFormatUnits メソッドを使用してプロジェクト タスク期間を設定できます。以下のコード スニペットはプロジェクト タスクを作成して期間を設定する方法を示します。
C# の場合:
…
new ProjectTask {
      TaskName = "Task 01",
      IsManual = false,
      ManualDuration = ProjectDuration.FromFormatUnits(16, ProjectDurationFormat.Hours)
}…
Visual Basic の場合:
…
New ProjectTask() With { _
      .TaskName = "Task 01", _
      .IsManual = False, _
      .ManualDuration = ProjectDuration.FromFormatUnits(16, ProjectDurationFormat.Hours) _
}
…
XAML の場合:
 <Grid>
        <ig:XamGantt x:Name="xamGantt" Project="{Binding}" />
    </Grid>
C# の場合:
 public Main()
        {
            InitializeComponent();
            Loaded += OnMainLoaded;
        }
        void OnMainLoaded(object sender, RoutedEventArgs rea)
        {
            DataContext = GenerateProject();
        }
        private static Project GenerateProject()
        {
            Project project = new Project();
            ProjectTask root = new ProjectTask { TaskName = "Summary", IsManual = false };
            project.RootTask.Tasks.Add(root);
            root.Tasks.Add(new ProjectTask
            { TaskName = "Task 01", IsManual=false, ManualDuration =
				ProjectDuration.FromFormatUnits(16, ProjectDurationFormat.Hours)});
            root.Tasks.Add(new ProjectTask
            { TaskName = "Task 02", IsManual=false, ManualDuration =
				ProjectDuration.FromFormatUnits(2, ProjectDurationFormat.Days)});
            root.Tasks.Add(new ProjectTask
            { TaskName = "Task 03", IsManual = false, ManualDuration =
				ProjectDuration.FromFormatUnits(48, ProjectDurationFormat.ElapsedHours)});
            root.Tasks.Add(new ProjectTask
            { TaskName = "Task 04", IsManual=false, ManualDuration =
				ProjectDuration.FromFormatUnits(2, ProjectDurationFormat.ElapsedDays)});
            return project;
        }
Visual Basic の場合:
Public Sub New()
      InitializeComponent()
      Loaded = AddressOf OnMainLoaded
End Sub
Private Sub OnMainLoaded(sender As Object, rea As RoutedEventArgs)
      DataContext = GenerateProject()
End Sub
Private Shared Function GenerateProject() As Project
      Dim project As New Project()
      Dim root As New ProjectTask() With {
            .TaskName = "Summary",
            .IsManual = False
      }
      project.RootTask.Tasks.Add(root)
      root.Tasks.Add(New ProjectTask() With {
            .TaskName = "Task 01",
            .IsManual = False,
            .ManualDuration = ProjectDuration.FromFormatUnits(16, ProjectDurationFormat.Hours)
      })
      root.Tasks.Add(New ProjectTask() With {
            .TaskName = "Task 02",
            .IsManual = False,
            .ManualDuration = ProjectDuration.FromFormatUnits(2, ProjectDurationFormat.Days)
      })
      root.Tasks.Add(New ProjectTask() With {
            .TaskName = "Task 03",
            .IsManual = False,
            .ManualDuration = ProjectDuration.FromFormatUnits(48, ProjectDurationFormat.ElapsedHours)
      })
      root.Tasks.Add(New ProjectTask() With {
            .TaskName = "Task 04",
            .IsManual = False,
            .ManualDuration = ProjectDuration.FromFormatUnits(2, ProjectDurationFormat.ElapsedDays)
      })
      Return project
End Function
このトピックについては、以下のトピックも参照してください。