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 지원 센터에 전화를 걸어 보았습니다. 미리 감사드립니다.