首页 > 解决方案 > 批量新建布局DXL列+图片导出

问题描述

我有一个打算批量运行的 DXL 脚本。在这个脚本中,我们读入一个 XML 文件并根据 XML 内容为引用的模块创建新列。有时,我们需要为特定列创建布局 DXL,该列创建在画布上绘制的位图,然后调用exportPicture()它来创建本地 PNG。

我面临的问题是,当此exportPicture()方法批量运行时,它只会创建一个空白的 1KB 图像,但如果在通过 GUI 运行时调用相同的方法,它就可以正常工作。

我无法提供有关代码的太多详细信息,但这是我可以分享的。

创建列:

   insert(column columnIndex)
   dxl(column columnIndex, dxlScript)
   setColumnTitle(columnIndex, columnTitle)

导出图像:

if (hasDXLCanvas(thisColumn)) 
{
  exportPicture                                                   //-
    (                                                             //-
      thisColumn,                                                 //-
      thisObject,                                                 //-
      tempStringOf( longPictName ),                               //-
      formatPNG_                                                  //-
    )
}

这是 DXL 布局脚本

int       height = 0
int       width  = 0
string  pictName
DBE   canvas
Bitmap bitmap
pictName = getPictName( obj )

if( !null( pictName )  ) 
{  
    canvas = getCanvas()

    if( !null( canvas ) )
    {
       bitmap = loadBitmap( canvas, pictName, true, width, height )

        if( !null( bitmap ) )
        {
            drawBitmap( canvas, bitmap, 0, 0 )
        }

        destroyBitmap( canvas, bitmap )
   }
}

我假设这个问题与以批处理模式在画布上绘图有关,但我可能是错的。任何方向将不胜感激。

提前致谢!

标签: ibm-doors

解决方案


在批处理模式下,很多 GUI 功能不可用。有些事情有一些变通方法,(例如,不允许加载视图,但您可以修改视图的属性,使要修改的视图为默认视图,然后保存并重新打开模块),但不要期望一切正常。您可能希望尝试使用交互模式和命令行开关 -dxl (-D),而不是使用批处理模式


推荐阅读