2013-11-27 4 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"; 

위의 예에서 "Hello"는 "안녕하세요"로 변경되지 않습니다. 그러나이 창에 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

그건 내가 가진 걱정거리가 아니야. 텍스트를 두 번째 줄로 밀어 넣습니다. 두 번째 라인은 절대로 생성되지 않습니다. 내 실제 스크립트에서이 텍스트 줄이 들어있는 창은 _ 넓은 _ 너비입니다. 그것은 생성시 고정 된 텍스트 자체의 너비 일뿐입니다. 따라서 텍스트의 왼쪽과 오른쪽에 많은 공간이 남아 있습니다. 텍스트의 긴 줄이 잘리지 만 여전히 그 공간을 떠나기는합니다. 스크린 잡는 방법을 관리 할 수 ​​있다면 여기에 게시하여 설명해 드리겠습니다. – 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