如何在 dm 脚本中使用对话框单选按钮的更改方法
How do I use the changed method of a dialog radiobutton in dm script
dm脚本中单选按钮chanded方法回调如何使用?
以下代码是文档提供的示例代码,扩展了两个单选按钮。生成的对话框如下所示。
单击 按钮 效果非常好。 结果 选项卡显示 "button callback"。但是当更改单选按钮时没有任何反应。单击 OK 后,我收到一条错误消息(与我更改单选按钮的次数一样多),给定的方法不存在。
如何使用单选按钮回调?
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();
单选按钮更改方法的回调需要 TagGroup
作为第二个参数:
void radioButtonChanged(object self, TagGroup radio_list)
因此,将上面代码中的 radioCallback()
函数更改为具有这两个参数的示例工作正常(下面提供的代码)。
请注意,这使得获取单选按钮的选定值变得容易,因为 radio_list
包含 "Value" 索引中的值:
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();
dm脚本中单选按钮chanded方法回调如何使用?
以下代码是文档提供的示例代码,扩展了两个单选按钮。生成的对话框如下所示。
单击 按钮 效果非常好。 结果 选项卡显示 "button callback"。但是当更改单选按钮时没有任何反应。单击 OK 后,我收到一条错误消息(与我更改单选按钮的次数一样多),给定的方法不存在。
如何使用单选按钮回调?
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();
单选按钮更改方法的回调需要 TagGroup
作为第二个参数:
void radioButtonChanged(object self, TagGroup radio_list)
因此,将上面代码中的 radioCallback()
函数更改为具有这两个参数的示例工作正常(下面提供的代码)。
请注意,这使得获取单选按钮的选定值变得容易,因为 radio_list
包含 "Value" 索引中的值:
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();