在已显示其窗口后更改ScriptUI控件

时间:2013-11-27 18:16:47

标签: javascript window extendscript adobe-indesign

这次我有一个(希望)简单的。我在ExtendScript for Adob​​e InDesign CS6中编写了一个ScriptUI窗口。它包含一个StaticText控件。在向用户显示此对话框窗口后,我想根据用户采取的某些操作更改该StaticText控件的文本。这是我的问题的一个非常简化的版本:

var w = new Window("dialog");
    var t = w.add("statictext", undefined, "Hello");

w.show();

t.text = "Good evening";

在上面的示例中,“Hello”永远不会变为“晚上好”。但是,我发现,如果我将Progress Bar控件添加到此窗口并定期与StaticText控件一起更新,它将允许文本更改,但如果第二行比原始文本长,则文本会被截断文本。

就好像StaticText控件的宽度是在创建时设置的,并且在显示窗口后永远不会改变。如果这只是ScriptUI的限制,请告诉我,我会处理它。否则,请告诉我是否可以执行任何操作以使动态静态文本更改并接受更长的文本行而不会被截断。谢谢!

2 个答案:

答案 0 :(得分:0)

尝试将multiline设为true

var w = new Window("dialog");
    var t = w.add("statictext", undefined, "Hello", {multiline:true});

w.show();

t.text = "Good evening";

这应该可以防止文本在第一行之后被截断。

您可以通过在文本字符串中添加返回字符(\r\n)来测试它:

t.text = "Good\revening"

答案 1 :(得分:0)

这是我经常使用的结构 [编辑:实际上,这显示它好一点]:

//global:
var n=1;
//////////////////////////

function doTextChange(target, newText) {
    target.text = newText;
}

var win = new Window('dialog', 'dialog',[300,100,645,396]);
var w = buildUI();
if (w != null) {
    w.show();
}

function buildUI() {
    if (win != null) {
         win.t = win.add("statictext", [14,15,314,37], "Hello");
         win.closeBtn = win.add('button', [240,210,320,232], 'Close', {name:'Cancel'});
         win.changeBtn = win.add('button', [240,210+33,320,232+33], 'Change', {name:'Cancel'});
         win.closeBtn.onClick = function () { this.parent.close(1) };
         win.changeBtn.onClick = function () { n++;doTextChange(  win.t, "Good evening " + n);};
    }
    return win
}