Как включить-отключить элемент в диалоговом объекте - 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);

person KEVIVI    schedule 26.01.2015    source источник


Ответы (1)


Действие сценария

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

установит значение свойства в связанном тегеStructure (описывающем диалог), но это не приведет к принудительному обновлению рисунка диалога. (Обратите внимание, что другие команды пользовательского интерфейса, такие как DLGTitle или DLGSetProgress, вызывают обновление.)

Команда для отключения/включения элементов пользовательского интерфейса во время отображения — SetElementIsEnabled. Поэтому используйте следующую строку вместо вашей:

 self.SetElementIsEnabled("StopButton",0);

Это сделает то, что вы хотите.


Вторым способом грубой силы было бы закрытие диалогового окна и его воссоздание, но я думаю, что вы, как правило, хотели бы избежать этого.

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