2013-11-27 2 views
0

На этот раз у меня есть (надеюсь) простой. У меня есть окно ScriptUI, запрограммированное в ExtendScript для Adobe InDesign CS6. Он содержит элемент управления StaticText. После этого диалогового окна отображается пользователю, я хотел бы изменить текст этого элемента управления StaticText на основе некоторых действий, которые предпринимает пользователь. Вот очень упрощенный вариант моей проблемы:Изменение управления ScriptUI после того, как его окно уже показано

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

w.show(); 

t.text = "Good evening"; 

В приведенном выше примере, «Hello» никогда не меняется на «Добрый вечер». Однако я обнаружил, что если я добавлю элемент управления Progress Bar в это окно и периодически его обновляю вместе с элементом управления StaticText, он позволит изменять текст, но затем текст усекается, если вторая строка длиннее оригинала текст.

Как будто ширина элемента управления StaticText задана во время создания и никогда не может быть изменена после отображения его окна. Если это просто ограничение ScriptUI, просто дайте мне знать, и я буду заниматься этим. В противном случае, пожалуйста, скажите мне, есть ли что-нибудь, что я могу сделать, чтобы изменение StaticText динамически и принимать более длинные строки текста без усечения. Благодаря!

ответ

0

Try установки 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

Извините, но это не так. Кроме того, я вообще не хочу, чтобы текст был многострочным. – Sturm

+0

Единственное другое решение - сделать статический текст (и/или окно) более широким, чтобы текст не был перенесен на вторую строку. –

+0

Это не беспокойство. Перемещение текста на вторую строку. Вторая строка никогда не создается. В моем подлинном сценарии окно, содержащее эту строку текста, является _fulenty_ wide; это просто ширина самого текста, которая остается фиксированной во время создания. Таким образом, есть много места, которое остается слева и справа от текста, хотя более длинные строки текста усекаются, все еще оставляя это пространство. Если я смогу управлять захватом экрана, я отправлю его здесь, чтобы проиллюстрировать. – Sturm

0

Это структура я обычно использую [EDIT: На самом деле, это показывает его немного лучше] :

//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 
} 
+0

@Sturm Мне любопытно узнать, видели ли вы/пробовали это. – CRGreen

+0

Я сейчас в другом проекте, но скоро вернусь к этому. Мне особенно нужно обернуть голову вокруг вашего кода, во-первых, также. – Sturm

Смежные вопросы