首页 > 解决方案 > 如何在 dm-script 中动态使用对话框文本框

问题描述

如何TextBox在 dm-script 的对话框中设置和获取 a 的文本?


查看以下示例对话框。它创建一个包含TextBox. 我想在创建时设置这个值TextBox。我想修改(获取和设置)函数调用的值,比如单击按钮。

如给定代码所示,我尝试了DLGValue()DLGTitle()DLGLabel()。但他们都没有工作。我该怎么做呢?

注意:“显示”按钮显示当前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();

标签: textboxdialogdm-script

解决方案


这将做:


    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();


推荐阅读