2012-09-26 2 views
0

동적 인 MPP 파일을 만들려고합니다. 내가 겪고있는 문제는 다른 작업 (하위 작업)에 대한 작업을 만드는 것입니다.MSProject.Task 하위 작업 만들기

첫 번째 작업을 삽입 한 후에이 코드 조각을 사용하려고합니다. 다른 모든 주요 작업은이 작업의 하위 작업이며 내가 원하는 하위 작업은 이상한 방식으로 나타납니다. 이

task 1 
    subtask 1 

    task 2 
    subtask 2 

내 코드 나는이에 너무 많은 정보를 찾을 수있는 다음과 같은

Microsoft.Office.Interop.MSProject.Task task; 

string t1, t2; 

for (int i = 0; i < 5; i++) 
{ 
    task = project.Tasks.Add(

    "Task_" + i.ToString(), i + 1); 
    t1 = "05/12/2012"; 
    t2 = "12/12/2012"; 

    /*TimeSpan span = Convert.ToDateTime(t2) - Convert.ToDateTime(t1); 
    task.Duration = span.Hours;*/ 
    task.Start = t1; 
    task.Finish = t2; 
    task.ResourceNames = "Someone"; 

    //task.OutlineLevel = 1; 

    task.Text1 = "Task_TestTask" + i.ToString(); 

    //also tried with this one 
    /*Microsoft.Office.Interop.MSProject.Task newTask = task.OutlineChildren.Add("otraSubTarea_" + i.ToString(), task.ID + 1); 
    newTask.Start = "12/12/2012"; 
    newTask.Finish = "12/12/2012"; 
    newTask.OutlineIndent();*/ 

    Microsoft.Office.Interop.MSProject.Task subTask = project.Tasks.Add("SubTaskName_" + i.ToString(), task.ID+1); 
    subTask.Start = "05/12/2012"; 
    subTask.Finish = "12/12/2012"; 
    subTask.OutlineIndent(); 
} 

처럼

Task_0 
     Task_1 
      Task_2 
      Task_3 
       Task_4 
       SubTaskName_4 
      SubTaskName_3 
      SubTaskName_2 
     SubTaskName_1 
    SubTaskName_0 

나는 원한다.

답변

2

이 문제를 이미 해결했는지는 확실하지 않지만 내 글은 내가 들여 쓰기 한 질문에 도움이되었으므로 여기에 답변도 나와 있습니다.

나는 당신이 인덱스 (또는 첫번째에서 두번째 인덱스를 계산하는)가 필요 두 가지 문제가 위가

  1. 를 해결할 수와 있다고 생각합니다. 하나의 색인은 작업 및 해당 이름뿐만 아니라 부속 작업을 추적합니다. 두 번째 인덱스는 실제 작업의 위치를 ​​추적해야합니다. 예 : 작업 1은 위치 1에 삽입되고 작업 2는 배열과 같이 위치 3에 삽입됩니다. 작업 인덱스는 0부터 시작하지 않고 1부터 시작합니다.
  2. 작업을 들여 쓰기하면 모든 하위 작업도 들여 쓰기를 상속하므로 새로운 '부모'작업은 'outdent'해야합니다. 당신은 모든 부모 작업이 초기 작업

다음 코드를 기대내어 쓰기 것으로 가정 할 수는 나를 위해 작동 :

int iTaskIndex = 1; 
for (int iTaskNameIndex = 1; iTaskNameIndex <= 5; iTaskNameIndex++) 
{ 
    Task task = project.Tasks.Add("Task_" + iTaskNameIndex.ToString(), iTaskIndex); 
    if (iTaskIndex > 1) 
     task.OutlineOutdent(); 
    Task subTask = project.Tasks.Add("SubTaskName_" + iTaskNameIndex.ToString(), iTaskIndex + 1); 
    subTask.OutlineIndent(); 
    iTaskIndex += 2; 
} 

을 새로운 부모와 자식 작업 쌍을 삽입 한 후

    필요
  1. 증가 1
  2. 으로 작업 이름을 지정 지수는 다시 2
  3. 하여 작업 위치 지수를 높이 이 날을 제공 들여 새 상위 작업

를 추가하기 전에 (또는 경우) :

Task_1 
    SubTaskName_1 
Task_2 
    SubTaskName_2 
Task_3 
    SubTaskName_3 
Task_4 
    SubTaskName_4 
Task_5 
    SubTaskName_5 

당신은 함께 이러한 인덱스를 결합 단지 (명명 인덱스를 기반으로 계산으로 위치 인덱스를 참조 할 수 있습니다 예를 들어, iTaskIndex = ((iTaskNameIndex * 2) -1))하지만 두 개의 분리 된 indeces로 이슈와 코드가 더 명확해질 것이라고 생각했습니다.