如何在 dm 脚本中动态使用对话框文本框
How to dynamically work with dialog TextBoxes in dm-script
如何在 dm-script 的对话框中设置和获取 TextBox
的文本?
查看以下示例对话框。它创建一个包含 TextBox
的对话框。我想在创建时设置此 TextBox
的值。我想修改(获取和设置)函数调用的值,比如单击按钮。
如给定代码所示,我尝试了 DLGValue()
、DLGTitle()
和 DLGLabel()
。但其中 none 有效。我该怎么做?
注意:显示 按钮显示当前 TagGroup
代表 TextBox
。我希望看到一些东西,无论是在初始状态还是在元素改变之后。但是我找不到任何东西。
class ExampleDialog : UIFrame{
number counter;
TagGroup field;
void addText(object self){
string msg = "Added text the " + counter + "-th time.\n";
string current_text = field.DLGGetStringValue();
field.DLGValue(current_text + "Value: " + msg);
field.DLGTitle(current_text + "Title: " + msg);
field.DLGLabel(current_text + "Label: " + msg);
result(msg);
field.DLGInvalid(1);
self.validateView();
counter++;
}
void showTg(object self){
field.TagGroupOpenBrowserWindow(0);
}
object init(object self){
TagGroup dlg, dlg_items;
counter = 1;
dlg = DLGCreateDialog("Example", dlg_items);
dlg.DLGAddElement(DLGCreatePushButton("Update", "addText"));
dlg.DLGAddElement(DLGCreatePushButton("Show", "showTg"));
field = DLGCreateTextBox(100, 10, 1);
field.DLGValue("Value: Initial");
field.DLGTitle("Title: Initial");
field.DLGLabel("Label: Initial");
dlg.DLGAddElement(field);
self.super.init(dlg);
return self;
}
}
alloc(ExampleDialog).init().pose();
这样做:
class handler : UIFrame {
void ShowText( object self ) {
string str = self.GetTextElementData("textBox");
result( "text box :[" + str + "]\n");
return;
};
void SetText( object self ) {
string str = ""
for(number i=0;i<100;i++) str+=CHR(64+Random()*26);
self.SetTextElementData("textBox",str);
return;
};
};
number boxWidth = 40, boxHeight = 4, txtLength = 160;
TagGroup Dialog = DLGCreateDialog( "text box");
TagGroup txtScript = DLGCreateTextBox( boxWidth, BoxHeight, txtLength ).DLGIdentifier( "textBox" );
TagGroup tgButton1 = DLGCreatePushButton( "Set random text", "SetText" );
TagGroup tgButton2 = DLGCreatePushButton( "show text in result window", "ShowText" );
Dialog.DLGAddElement( tgButton1 );
Dialog.DLGAddElement( tgButton2 );
Dialog.DLGAddElement( txtScript );
alloc(handler).init(Dialog).pose();
如何在 dm-script 的对话框中设置和获取 TextBox
的文本?
查看以下示例对话框。它创建一个包含 TextBox
的对话框。我想在创建时设置此 TextBox
的值。我想修改(获取和设置)函数调用的值,比如单击按钮。
如给定代码所示,我尝试了 DLGValue()
、DLGTitle()
和 DLGLabel()
。但其中 none 有效。我该怎么做?
注意:显示 按钮显示当前 TagGroup
代表 TextBox
。我希望看到一些东西,无论是在初始状态还是在元素改变之后。但是我找不到任何东西。
class ExampleDialog : UIFrame{
number counter;
TagGroup field;
void addText(object self){
string msg = "Added text the " + counter + "-th time.\n";
string current_text = field.DLGGetStringValue();
field.DLGValue(current_text + "Value: " + msg);
field.DLGTitle(current_text + "Title: " + msg);
field.DLGLabel(current_text + "Label: " + msg);
result(msg);
field.DLGInvalid(1);
self.validateView();
counter++;
}
void showTg(object self){
field.TagGroupOpenBrowserWindow(0);
}
object init(object self){
TagGroup dlg, dlg_items;
counter = 1;
dlg = DLGCreateDialog("Example", dlg_items);
dlg.DLGAddElement(DLGCreatePushButton("Update", "addText"));
dlg.DLGAddElement(DLGCreatePushButton("Show", "showTg"));
field = DLGCreateTextBox(100, 10, 1);
field.DLGValue("Value: Initial");
field.DLGTitle("Title: Initial");
field.DLGLabel("Label: Initial");
dlg.DLGAddElement(field);
self.super.init(dlg);
return self;
}
}
alloc(ExampleDialog).init().pose();
这样做:
class handler : UIFrame {
void ShowText( object self ) {
string str = self.GetTextElementData("textBox");
result( "text box :[" + str + "]\n");
return;
};
void SetText( object self ) {
string str = ""
for(number i=0;i<100;i++) str+=CHR(64+Random()*26);
self.SetTextElementData("textBox",str);
return;
};
};
number boxWidth = 40, boxHeight = 4, txtLength = 160;
TagGroup Dialog = DLGCreateDialog( "text box");
TagGroup txtScript = DLGCreateTextBox( boxWidth, BoxHeight, txtLength ).DLGIdentifier( "textBox" );
TagGroup tgButton1 = DLGCreatePushButton( "Set random text", "SetText" );
TagGroup tgButton2 = DLGCreatePushButton( "show text in result window", "ShowText" );
Dialog.DLGAddElement( tgButton1 );
Dialog.DLGAddElement( tgButton2 );
Dialog.DLGAddElement( txtScript );
alloc(handler).init(Dialog).pose();