Travailler avec les calendriers de tâches
Contents
[
Hide
Show
]Il est possible d’associer des calendriers à des tâches particulières dans Microsoft Project. Aspose.task prend en charge cette fonctionnalité.
Tâches avec calendriers
La classe TSK expose le champ de calendrier utilisé pour définir ou obtenir le calendrier associé à une tâche. Cette propriété accepte ou renvoie un objet Aspose.Tasks.Calendar.
Pour créer un calendrier pour une tâche dans le projet Microsoft:
- Ouvrez un projet dans Microsoft Project.
- Dans le menu Projet, sélectionnez Changer les temps de travail, puis Créez un nouveau calendrier.
- Pour attribuer le calendrier à une tâche, double-cliquez sur la tâche dans le formulaire d’entrée de tâche.
- Sélectionnez l’onglet Advanced.
Réglage du calendrier des tâches
Créez un calendrier standard et créez une tâche. Attribuez le calendrier à la tâche.
1// Create project instance
2System::SharedPtr<Project> project = System::MakeObject<Project>();
3
4// Add task
5System::SharedPtr<Task> tsk1 = project->get_RootTask()->get_Children()->Add(u"Task1");
6
7// Create calendar and assign to task
8System::SharedPtr<Aspose::Tasks::Calendar> cal = project->get_Calendars()->Add(u"TaskCal1");
9tsk1->Set<System::SharedPtr<Calendar>>(Tsk::Calendar(), cal);
Getting Task Calendar
Get task calendar by traversing the tasks in a project.
1// The path to the documents directory.
2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
3
4// Create project instance
5System::SharedPtr<Project> prj = System::MakeObject<Project>(dataDir + u"ReadTaskCalendar.mpp");
6
7// Declare ChildTasksCollector class object
8System::SharedPtr<ChildTasksCollector> collector = System::MakeObject<ChildTasksCollector>();
9
10// Use TaskUtils to get all children tasks in RootTask
11TaskUtils::Apply(prj->get_RootTask(), collector, 0);
12
13// Parse all the recursive children
14
15{
16 auto tsk_enumerator = (collector->get_Tasks())->GetEnumerator();
17 decltype(tsk_enumerator->get_Current()) tsk;
18 while (tsk_enumerator->MoveNext() && (tsk = tsk_enumerator->get_Current(), true))
19 {
20 System::SharedPtr<Calendar> tskCal = tsk->Get<System::SharedPtr<Calendar>>(Tsk::Calendar());
21 System::Console::WriteLine(u"Task calendar name: {0}", System::ObjectExt::Box<System::String>(tskCal == nullptr ? u"None" : tskCal->get_Name()));
22 }
23}