2015-01-26 48 views
1

为什么下面的脚本没有禁用按钮,因为它应该这样做?如何启用 - 禁用对话框对象中的元素 - DLGEnabled

class ElementEnableTest : UIFrame { 

    void Action(object self) { 
     self.LookUpElement("StopButton").DLGEnabled(0); 
     result("button clicked\n"); 
    }; 

    ElementEnableTest(object self) { 
     TagGroup tgDialog = DLGCreateDialog(""); 
     TagGroup tgButton = DLGCreatePushButton("stop","Action"); 
     tgButton.DLGIdentifier("StopButton"); 
     tgDialog.DLGAddElement(tgButton); 
     self.init(tgDialog); 
     self.Display("test"); 
    }; 
}; 

alloc(ElementEnableTest); 

回答

1

脚本动作

self.LookUpElement("StopButton").DLGEnabled(0); 

将设置在相关tagStructure属性值(其描述对话框),但它不会强制对话框绘图的更新。 (请注意,DLGTitleDLGSetProgress等其他UI命令确实会强制更新。)

显示期间禁用/启用UI元素的命令为SetElementIsEnabled。因此,请使用以下行代替您的:

self.SetElementIsEnabled("StopButton",0); 

这会按照您的要求做。


第二种蛮力的方式是让对话框窗口关闭并重新创建,但我认为您通常会想要避免这种情况。

void Action(object self) { 
    self.LookUpElement("StopButton").DLGEnabled(0); 
    self.close() 
    self.display("") 
    result("button clicked\n"); 
};