You need to enable JavaScript to run this app. DOORS DXL求助:实现填充模块列表至对话框的fillModulelist方法
优惠活动
大模型
产品
解决方案
定价
更多

DOORS DXL求助:实现填充模块列表至对话框的fillModulelist方法

完整修改后的DXL代码

你需要先新增全局存储结构保存遍历到的模块路径,调整遍历逻辑写入存储,再实现fillModuleList方法填充对话框列表,同时补充对话框初始化逻辑即可实现需求,完整代码如下:

// This DXL script iterates through all formal modules of the folder and show in dialog
DB      dbMain        = null
DBE     dbeModuleList   = null
DBE     dbeExport     = null
DBE     dbeExportPath = null

Folder  currFolder    = null
// 新增:全局存储结构,用于保存遍历到的正式模块完整路径
Skip    g_moduleList  = createString()

string startFolder="/Project/Folder";
int moduleCount=0;
 
void forAllModulesInFolder(Folder f)
{
  Item itemRef;
  string shType;
  string sItemNameFull;
  string sItemName;
  Module moduleReference;
 
  for itemRef in f do
  {
    shType = type(itemRef);
    print shType "\t";
 
    sItemNameFull = fullName(itemRef);
    print sItemNameFull "\t";
 
    sItemName = name(itemRef);
    print sItemName "\n";
 
    if(shType=="Folder")
    {
      string selectedFolder = sItemNameFull;
      Folder f = folder selectedFolder;
      forAllModulesInFolder(f);
    }
 
    if(shType=="Formal")
    {
      moduleReference = read(sItemNameFull,false,true);
      filtering off;
      // 新增:将正式模块完整路径存入全局存储
      put(g_moduleList, sItemNameFull, sItemNameFull)
      close(moduleReference);
      moduleCount++;
    }
  }
}

void fillModuleList()
{
    // 清空列表原有内容
    empty(dbeModuleList)
    string modPath
    // 遍历全局存储的所有模块路径,添加到对话框列表控件
    for modPath in g_moduleList do
    {
        insert(dbeModuleList, modPath)
    }
    // 可选:默认选中列表第一项
    set(dbeModuleList, 0)
}
 
// 主方法
void main(void)
{
  string selectedFolder = startFolder;
  Folder f = folder selectedFolder;
  forAllModulesInFolder(f);
  print "Affected Modules: " moduleCount "\n";

  // 初始化主对话框
  dbMain = create("项目模块列表", styleCentered)
  // 创建列表控件:父窗口、控件标签、显示行数、每行字符宽度、是否允许多选
  dbeModuleList = list(dbMain, "可选正式模块", 15, 60, false)
  // 你原有需求的导出相关控件初始化
  dbeExportPath = field(dbMain, "导出保存路径", 50)
  dbeExport = button(dbMain, "执行导出", 12)
  
  // 填充模块列表
  fillModuleList()
  // 渲染并显示对话框
  realize(dbMain)
  show(dbMain)

  // 对话框关闭后销毁全局存储,避免内存泄漏
  delete g_moduleList
}
 
main()

代码说明

  • 新增了全局Skip类型存储结构g_moduleList,用于保存遍历过程中找到的所有正式模块完整路径
  • 调整了遍历逻辑,识别到正式模块时自动将路径写入存储
  • fillModuleList方法实现了清空列表、遍历存储写入列表控件的完整逻辑
  • 补充了对话框初始化逻辑,遍历完成后自动弹窗展示所有模块列表

内容的提问来源于stack exchange,提问作者root

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 10:30:02