2013-11-27 41 views
0

所以我這次有一個(希望)簡單的。我在Adobe InDesign CS6的ExtendScript中編寫了一個ScriptUI窗口。它包含一個StaticText控件。在向用戶顯示此對話窗口後,我想根據用戶採取的某些操作更改該StaticText控件的文本。這裏是我的問題的一個非常簡化的版本:在其窗口已顯示後更改ScriptUI控件

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

w.show(); 

t.text = "Good evening"; 

在上面的例子中,「你好」永遠不會改變,以「晚上好」。但是,我發現,如果向此窗口添加一個Progress Bar控件並定期將其與StaticText控件一起更新,它將允許文本更改,但如果第二行比原始文本更長,則文本會被截斷文本。

就好像StaticText控件的寬度是在創建時設置的,在顯示窗口後永遠不會改變。如果這僅僅是ScriptUI的一個限制,請告訴我,我會處理它。否則,請告訴我是否有任何事情可以使StaticText動態更改並接受更長的文本行而不會被截斷。謝謝!

回答

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" 
+0

對不起,但那不是這樣做的。此外,無論如何,我真的不希望文本是多行的。 – Sturm

+0

唯一的另一種解決方案是使靜態文本(和/或窗口)更寬,以便文本不會被推到第二行。 –

+0

這真的不是我的擔心。把文本推到第二行。第二行永遠不會創建。在我的真實腳本中,包含這行文本的窗口是_plenty_ wide;它只是文本本身的寬度在創建時保持不變。因此,文本的左側和右側仍有很多空間,即使更長的文本行被截斷,仍留下該空間。如果我可以管理屏幕抓取,我會在這裏張貼來說明。 – Sturm

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

@Sturm我很想知道你是否看到/嘗試了這個。 – CRGreen

+0

我目前正在另一個項目中,但我很快會回到這個項目。首先,我特別需要圍繞您的代碼進行考慮。 – Sturm

相關問題