如何在 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();