如何访问AppMaker列表行中存在的元素的启用属性



我有一个列表,其中listrow包含一个内部面板。然后,在面板内有3个文本字段。我想通过代码禁用这3个文本字段,但问题是我无法访问这3个文本字段的启用属性。

我尝试了以下内容:

var x=app.currentPage.descendants.FileList.descendants._values;

有什么想法?

根据列表小部件文档,属性表说明:

后代 - 该布局窗口小部件的所有孩子都以其名称识别。这不包括任何重复的孩子,例如列表中的行,网格,手风琴及其内容中的单元格。

因此,使用后代绝对不会给您想要的东西。此外,它还解释了:

儿童 - 该布局小部件的直接子女,由他们的名字标识。

在这里,没有指定它将排除重复的孩子,并且由于列表中的每个行是一个重复的孩子,因此这是我们需要使用的选项。

现在,调用孩子将为我们提供propertyMap,因此我们需要通过调用propertyMap值来迭代每个项目。因此,您需要这样做:

var rows = app.currentPage.descendants.FileList.children._values;
rows.forEach(function(row){
    var rPanel = row.descendants.[PanelWidgetName];
    var panelDescs = rPanel.descendants.
    panelDescs.forEach(function(desc){
        desc.enabled = true; //false
    });
});

我将尝试以下代码:

var listRow = app.currentPage.descendants.FileList.children._values;
for (var i in listRow) {
  var inputs = listRow[i].YourPanelName.children._values;
  for (var j in inputs) {
    inputs[j].enabled = false;
  }
}

基本上,您首先必须访问列表widget子,即列表行,然后,对于每个列表行,您可以通过调用面板的名称,然后调用该面板内的孩子来引用每行的面板这是您的输入。这就是为什么这需要一个嵌套循环的原因。我没有测试,但应该起作用。

最新更新