Как отключить/включить элементы диалога

В этом коротком диалоговом окне я пытаюсь включить/отключить целочисленное поле. Команда DLGEnabled() здесь ничего не делает:

class BTW_Dialog : UIFrame
{   
     BTW_Dialog(object self) { Result( "\n Object `" + self.ScriptObjectGetClassName() + "` ID:" + self.ScriptObjectGetID() + " created."   ); }
    ~BTW_Dialog(object self) { Result( "\n Object `" + self.ScriptObjectGetClassName() + "` ID:" + self.ScriptObjectGetID() + " destroyed." ); }

    TagGroup CreateDLGTagGroup( object self )
    { 
        //  Dialog building method
        TagGroup DLGtgs, DLGItems
        DLGtgs = DLGCreateDialog( "Analyze", DLGItems );

        TagGroup RadioList = DLGCreateRadioList( 0, "AActOnRadio" )
            RadioList.DLGAddRadioItem( "LP", 0 ).DLGIdentifier("0").DLGSide( "Left" );
            RadioList.DLGAddRadioItem( "LF", 1 ).DLGIdentifier("1").DLGSide( "Left" );
        DLGitems.DLGAddElement(RadioList).DLGAnchor("West");

        TagGroup field = DLGCreateIntegerField( 55, 4 ).DLGSide( "Left" ).DLGIdentifier("xyz");
        DLGitems.DLGAddElement(field).DLGAnchor("West");

        return DLGtgs
    } 

    object LaunchAsModelessDialog( object self )
    { 
        self.init( self.CreateDLGTagGroup() );
        self.Display( "Analyze" );
        return self
    } 

    void AActOnRadio( object self, tagGroup itemTG )
    { 
        number radioButtonState = itemTG.DLGGetValue();
        vtagGroup xyz_tag = self.LookupElement("xyz")
        if(radioButtonState)
        {   //  trying to disable integer field:  <<<-------||
            DLGEnabled( xyz_tag, 0)
        } 
    }
}   

Alloc(BTW_Dialog).LaunchAsModeLessDialog();

Есть ли другая команда для отключения и/или скрытия целочисленного поля при нажатии переключателя? Спасибо.


person E Voelkl    schedule 09.04.2018    source источник


Ответы (1)


Команда, которую вы ищете,

void SetElementIsEnabled( ScriptObject, String identifier, Boolean is_enabled )

то есть в вашем примере заменить

DLGEnabled( xyz_tag, 0)

by

self.SetElementIsEnabled(  "xyz", 0 )

Обратите внимание, что существует аналогичная команда, позволяющая сделать элемент диалога «скрытым».

void SetElementIsShown( ScriptObject, String identifier, Boolean is_shown )
person BmyGuest    schedule 09.04.2018