0

所以这次我有一个(希望)简单的。我有一个用 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";

在上面的例子中,“你好”永远不会变成“晚上好”。但是,我发现,如果我在此窗口中添加一个进度条控件并与 StaticText 控件一起定期更新它,它将允许文本更改,但如果第二行比原来的长,文本会被截断文本。

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

4

2 回答 2

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
}
于 2013-12-28T06:10:13.997 回答
0

尝试设置multilinetrue

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"
于 2013-11-28T05:33:41.050 回答