VARCHART XGanttは、インタラクティブなガントチャートコントロールであり、そのモジュラー設計は、あなたとあなたの顧客のニーズを満たすアプリケーションを作成することができます。それは、迅速かつ容易にそれが簡単に複雑なデータを理解すること、あなたは、パフォーマンスのボトルネックを特定遅延や資源の効率的な使用を避けるために支援し、あなたのアプリケーションに統合することができます。
〜この記事では、どのようにVARCHART XGantt主要なコンピューティング活動終了時刻を説明し、興味のある友人は、自分の手を見てああすることができます
表の終了日の欄は空白のまま。「からVARCHART XGanttのカレンダーに含めることができる助けを借り、スタート」および「の期間フィールド計算のイベント」。
デフォルトのカレンダーでは、営業日(月曜日〜金曜日)は、活動時間として定義され、週末(土曜日と日曜日)に、非アクティブ時間として定義されます。
図では、あなたは灰色の背景で非アクティブな時間を識別することができます。「により、ノード」プロパティページを無効にする「ノードに割り当てられたカレンダーのカレンダーをオフにするオプションを」。
かどうか、カレンダーの計算でその違いに注意してください。
活動は、金曜日から始まるとカレンダーが有効になっている場合、イベントは火曜日に終了します3日間の最後。いいえ、カレンダー、イベントは日曜日に終了しません。
オブジェクトを介して終了日(...)のAddDuration VcCalendar計算する方法。各活動のため、開始と持続時間。彼らは、インデックスによって対応するデータフィールドから取得することができます。DataFieldプロパティ(...)終了日を設定し、その後、あなたが呼び出す必要がありUpdateNode VcNodeを使用すると、データへの変更を見ることができるような方法。
サンプルコード
VcCalendarとしてDIM tmpCal 日付として薄暗いtmpDate tmpCal = VcGantt1.CalendarCollection.Active設定 tmpDate = tmpCal.AddDuration(node.DataField(2)、node.DataField(4)) node.DataField(3)= tmpDate node.UpdateNode
開始日と終了日が自動的にマウス操作によって、アクティブ時に配置されている活動を作成または変更。
これとは対照的に、APIまたは編集ダイアログと日付の設定は非勤務時間中に配置することができます。
結果の日付を計算することにより、常に就業時間内に位置しています。ためには日付が活動期間の必要な開始日と終了日から、作業時間のAPIで設定して計算することを確実にします。
サンプルコード
tmpDate = tmpCal.AddDuration(node.DataField(3)、_ (-1)* node.DataField(4)) node.DataField(2)= tmpDate
データの一貫性を維持するために、損失または負の持続時間は正しくないとみなされなければならない、と0にリセット。開始日が欠落している場合、終了日を計算することができません。名前の必要なコードまとめSetNodeEndDate(...)別の方法を。
サンプルコード
Private Sub SetNodeEndDate(ByVal node As VcNode) 'Avoid empty or negative duration If node.DataField(4) = "" Or node.DataField(4) < 0 Then node.DataField(4) = "0" End If 'Start date empty then end date should also be empty If node.DataField(2) = "31.12.1899 00:00:00" Then node.DataField(3) = "" Else 'Precondition is property page nodes '"Assign calendar to nodes" must be true Dim tmpCal As VcCalendar Dim tmpDate As Date Set tmpCal = VcGantt1.CalendarCollection.Active tmpDate = tmpCal.AddDuration(node.DataField(2), _ node.DataField(4)) node.DataField(3) = tmpDate 'Start date only in active times tmpDate = tmpCal.AddDuration(node.DataField(3), _ (-1) * node.DataField(4)) node.DataField(2) = tmpDate node.UpdateNode End If End Sub
需要计算日期:
1、活动结束后
2、通过数据编辑对话框或就地编辑器修改日期或持续时间之后
3.、API修改活动值后
然而,在通过鼠标交互进行修改之后,不必启动计算,因为这将自动执行内部计算。
可以通过VcGantt对象的属性NodeCollection来设置包括所有节点的计算循环。它的代码将被添加到事件Form1_Load(...)的末尾。
示例代码
'Calculate end date for all nodes Dim node As VcNode For Each node In VcGantt1.NodeCollection SetNodeEndDate node Next
可以通过事件OnNodeModifyComplete捕获用户引起的数据更改。方法调用执行结束日期的计算。
示例代码
プライベートサブVcGantt1_OnNodeModifyComplete _ (VcGanttLib.VcNode、_としてByValノード ブールとしてByVal isLastNodeInSeries)は SetNodeEndDateノード End Subの
データはAPIを介して変更されている場合は、呼び出す必要がありSetNodeEndDate(...を)。