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

问题描述 投票:0回答:2

所以这次我(希望)有一个简单的。我有一个在ExtendScript中为Adobe 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动态更改并接受更长的文本行而不会被截断。谢谢!

javascript window adobe-indesign extendscript adobe-scriptui
2个回答
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"

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
}
© www.soinside.com 2019 - 2024. All rights reserved.