2014-10-10 3 views
0

DXL을 처음 사용하면서 DOORS에 열이있는 마스터 모듈 (모듈 A)을 만들려고합니다. 모듈 B의 텍스트 다음에 모듈 C의 제목이 표시됩니다. 모듈 B는 모듈 A에 링크되고 모듈 C는 모듈 B에 링크됩니다. 모듈 A가 1) B에서 링크 된 내용을 표시하도록하고 싶습니다 , 2) 각 모듈 B 오브젝트와 같은 행에 모듈 B에 링크 된 모듈 C 이름을 표시합니다. 모듈 C의 이름을 대괄호로 나타내기를 원합니다. 그것은 다음과 같이한다 : 모듈 A 내직접 모듈 (DXL DOORS)에 연결되지 않은 모듈의 이름을 표시하는 방법

첫 번째 칼럼 : 두 번째 열 "수동으로 입력 텍스트를"

현재 나는에 B를 가져올 수있다 "텍스트를 수동으로 B [C의 이름]에 입력" 이 디스플레이에 대한 유용한 시작했다 Show DXL columns from other modules

:

여기
pragma runLim, 0 
void showIn(Object o, int depth) { 
    Link l 
    LinkRef lr 
    ModName_ otherMod = null 
    Module linkMod = null 
    ModuleVersion otherVersion = null 
    Object othero 
    string disp = null 
    string s = null 
    string plain, plainDisp 
    int plainTextLen 
    int count 
    bool doneOne = false 
    string linkModName = "*" 
    for lr in all(o<-linkModName) do { 
     otherMod = module (sourceVersion lr) 
     if (!null otherMod) { 
      if ((!isDeleted otherMod) && (null data(sourceVersion lr))) { 
       load((sourceVersion lr),false) 
      } 
     } 
    } 
    for l in all(o<-linkModName) do { 
     otherVersion = sourceVersion l 
     otherMod = module(otherVersion) 
     if (null otherMod || isDeleted otherMod) continue 
     othero = source l 
     if (null othero) { 
      load(otherVersion,false) 
     } 
     othero = source l 
     if (null othero) continue 
     if (isDeleted othero) continue 
     doneOne = true 
     if (depth == 1) { 
      s = probeRichAttr_(othero,"Object Text", false) 
      if (s == "") 
      displayRich("\\pard " " ") 
      else 
      displayRich("\\pard " s) 
     } 
    } 
} 
showIn(obj,1) 

내가 다른 쿼리에서 지금까지 발견 것입니다 : 여기 A. 내에서 새 열은 코드 C의 이름을 B의 새 열에 대괄호로 묶으십시오. 여기에 제 코드가 있습니다 :

pragma runLim, 0 
    int lines[4] = {0, 0, 0, 0} 
    void adjustLines(int depth, showAtDepth) { 
    int count 
    for (count = 0; count < 4; count++) { 
    while (lines[depth-1] < lines[count]) { 
     if (depth == showAtDepth) displayRich("\\pard " " ") 
     lines[depth-1]++ 
    } 
    } 
} 
void showIn(Object o, int depth) { 
Link l 
LinkRef lr 
ModName_ otherMod = null 
Module linkMod = null 
ModuleVersion otherVersion = null 
Object othero 
string disp = null 
string s = null 
string plain, plainDisp 
int plainTextLen 
int count 
bool doneOne = false 

    string linkModName = "*" 
    for lr in all(o<-linkModName) do { 
     otherMod = module (sourceVersion lr) 
     if (!null otherMod) { 
      if ((!isDeleted otherMod) && (null data(sourceVersion lr))) { 
       load((sourceVersion lr),false) 
      } 
     } 
    } 
    for l in all(o<-linkModName) do { 
     otherVersion = sourceVersion l 
     otherMod = module(otherVersion) 
     if (null otherMod || isDeleted otherMod) continue 
     othero = source l 
     if (null othero) { 
      load(otherVersion,false) 
     } 
     othero = source l 
     if (null othero) continue 
     if (isDeleted othero) continue 
     int oldLines = lines[depth-1] 
     adjustLines(depth, 1) 
     bool kick = (doneOne) && (lines[depth-1] == oldLines) 
     if (kick) { 
      lines[depth-1]++ 
      if (depth == 1) displayRich("\\pard " " ") 
     } 
     if (depth < 4) { 
      showIn(othero, depth+1) 
     } 
     doneOne = true 
     if (depth == 1) { 
      s = name(otherMod) 
      if (isBaseline(otherVersion)) { 
       s = s " [" versionString(otherVersion) "]" 
      } 

     s = "{[" s "]}" 

     displayRich s 

     } 
     lines[depth-1] += 3 
    } 
} 
showIn(obj,1) 

그러나 여기에는 두 가지 문제점이 있습니다. 1) 나는 C의 객체로부터 B로 들어오는 여러 개의 링크를 가지고 있으며, 모든 링크에 대해 여러 번 C의 이름을 표시합니다. B의 객체 당 한 번만 C의 이름을 표시하고 싶습니다. 따라서 중복성이 없습니다. 2) C의 이름은 B에 새로운 열로 표시되지만 이미 기존 열에있는 텍스트의 끝에서 연결됩니다.

또한 A와 B 사이의 링크 집합은 B와 C 사이의 링크 집합과 다른 폴더에 있으므로 위에서 제공 한 stockoverflow 응답은 1처럼 작동하지 않는 것 같습니다.

여기에는 두 가지 다른 접근 방식이 있다고 가정합니다. B의 객체 텍스트 끝에 C라는 이름을 표시 한 다음 B 열을 호출하여 연결된 객체를 가져옵니다. 이 경우에는 B에 대해서만 DXL 코드가 필요합니다. 또는 B 열을 호출하고 C 이름을 추가 할만큼 똑똑하게 만듭니다. 이 경우에는 A에 DXL 코드 만 있으면됩니다.

이 포럼이이 질문에 적합한 장소인지 확실하지 않습니다. IBM 지원 센터에 전화를 걸어 보았습니다. 미리 감사드립니다.

답변

1

알아요 ... 난 당신이 이런 식으로 뭔가를 찾고 생각 ...

pragma runLim, 0 
void showIn(Object o, int depth) { 
    Link l, l2 
    LinkRef lr 
    ModName_ modC = null 
    ModName_ otherMod = null 
    Module linkMod = null 
    ModuleVersion otherVersion = null 
    Object othero 
    string disp = null 
    string s = null 
    string plain, plainDisp 
    int plainTextLen 
    int count 
    bool doneOne = false 
    string linkModName = "*" 
    for lr in all(o<-linkModName) do { 
    otherMod = module (sourceVersion lr) 
    if (!null otherMod) { 
     if ((!isDeleted otherMod) && (null data(sourceVersion lr))) { 
      load((sourceVersion lr),false) 
     } 
    } 
    } 
    for l in all(o<-linkModName) do { 
    otherVersion = sourceVersion l 
    otherMod = module(otherVersion) 
    if (null otherMod || isDeleted otherMod) continue 
    othero = source l 
    if (null othero) { 
     load(otherVersion,false) 
    } 
    othero = source l 
    if (null othero) continue 
    if (isDeleted othero) continue 
    doneOne = true 
    if (depth == 1) { 
     s = probeRichAttr_(othero,"Object Text", false) 
     for l2 in all (othero <- "*") do { 
      modC = source(l2) 
      s = s " [" name(modC) "]" 
      break 
     } 

     if (s != "") 
     displayRich("\\pard " s) 
    } 
    } 
} 
showIn(obj,1) 
당신이해야 할 수도 있습니다

이 응답 조금 늦게이고 나는 당신이 지금에 의해 이동 확신합니다,하지만 귀하의 특정 상황에 맞게 약간 수정하십시오.

행운을 빌어 요!