项目浏览器未使用程序包删除脚本进行更新

时间:2014-10-31 20:24:28

标签: enterprise-architect

以下方法删除包。问题是项目浏览器永远不会刷新。调用Repository.RefreshModelView(0)强制更新,但它重新打开模型并杀死脚本执行。

以下是方法:

function clearPackage( pkg ) {
    var parent as EA.Package;
    parent = Repository.GetPackageByID(pkg.ParentID);

    var pkgList as EA.Collection;
    pkgList = parent.Packages;

    for (var i = 0; i < pkgList.Count; i++) {
        var p as EA.Package;
        p = pkgList.GetAt(i);

        if (p.PackageGUID == pkg.PackageGUID) {
            pkgList.Delete(i); 
            pkgList.Refresh();
            parent.Update();  // have tried with and without
            return;
        }
    }
}

在pkgList.Refresh之前和之后检查pkgList.Count确实显示了大小的变化。同样,问题似乎仅限于项目浏览器。

有关如何刷新项目浏览器的任何想法?

交叉发布于Sparx Forums

2 个答案:

答案 0 :(得分:3)

要删除包,您只需要删除包本身。抱歉Perl,但那是我的驴子: - )

my $p = $rep->GetTreeSelectedObject();
my $par = $rep->GetPackageByID ($p->ParentID);
my $idx = 0;
for my $sp (in $par->Packages) {
    if ($sp->PackageID == $p->PackageID) {
        $par->Packages->DeleteAt ($idx, 1);
        last;
    }
    $idx++;
}
$rep->RefreshModelView ($par->PackageID);

答案 1 :(得分:3)

尝试

Repository.RefreshModelView(parent.PackageID);

这将只刷新父包的内容,而不是整个模型。