代码之家  ›  专栏  ›  技术社区  ›  miile7

如何在dm脚本中使用dialog radiobutton的chanded方法

  •  0
  • miile7  · 技术社区  · 5 年前


    下面的代码是用两个单选按钮扩展的文档提供的示例代码。结果对话框如下所示。

    Test Dialog

    单击 按钮 结果 标签显示“按钮回调”。但是当改变单选按钮时什么也不会发生。点击后 好的 我得到一个错误,它说(我改变单选按钮的次数)给定的方法不存在。

    class testDialog : UIFrame{
        void buttonCallback(object self){
            result("button callback\n");
        }
    
        void radioCallback(object self){
            result("radio callback\n");
        }
    }
    
    TagGroup dialog_items;
    TagGroup dialog_tags = DLGCreateDialog("Test Dialog", dialog_items);
    
    TagGroup button_tag = DLGCreatePushButton("Button", "buttonCallback");
    dialog_items.DLGAddElement(button_tag);
    
    TagGroup radio_list = DLGCreateRadioList(0, "radioCallback");
    radio_list.DLGAddRadioItem("Radio 1", 0);
    radio_list.DLGAddRadioItem("Radio 2", 1);
    dialog_items.DLGAddElement(radio_list);
    
    Object dialog = alloc(testDialog).init(dialog_tags);
    
    dialog.Pose();
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   miile7    5 年前

    单选按钮更改方法的回调需要 TagGroup 作为第二个论点:

    void radioButtonChanged(object self, TagGroup radio_list)
    

    所以改变 radioCallback() 函数在上面的代码中有这两个参数示例运行良好(代码如下所示)。

    radio_list 包含“值”索引中的值:

    void radioCallback(object self, TagGroup radio_list){
        number value;
        radio_list.TagGroupGetTagAsNumber("Value", value);
    
        result("radio callback, radio list has value " + value + "\n");
    }
    
    

    class testDialog : UIFrame{
        void buttonCallback(object self){
            result("button callback\n");
        }
    
        void radioCallback(object self, TagGroup radio_list){
            result("radio callback\n");
        }
    }
    
    TagGroup dialog_items;
    TagGroup dialog_tags = DLGCreateDialog("Test Dialog", dialog_items);
    
    TagGroup button_tag = DLGCreatePushButton("Button", "buttonCallback");
    dialog_items.DLGAddElement(button_tag);
    
    TagGroup radio_list = DLGCreateRadioList(0, "radioCallback");
    radio_list.DLGAddRadioItem("Radio 1", 0);
    radio_list.DLGAddRadioItem("Radio 2", 1);
    dialog_items.DLGAddElement(radio_list);
    
    Object dialog = alloc(testDialog).init(dialog_tags);
    
    dialog.Pose();