Indesign脚本:如何向对话框staticTexts添加颜色

时间:2013-01-09 13:05:42

标签: javascript-events adobe-indesign

目前使用javascript为indesign CS6开发脚本。我正在寻找一种方法在对话框中为标签添加颜色ui,示例代码如下

var myDialog = app.dialogs.add({name:"User Interface Example Script", canCancel:true});
with(myDialog){
    //Add a dialog column.
    with(dialogColumns.add()){
        //Create a border panel.

        with(borderPanels.add()){

            with(dialogColumns.add()){
                //The following line shows how to set a property as you create an object.
                staticTexts.add({staticLabel:"Message:"});

我想知道如何使标签消息成为自定义颜色。

**编辑

我找到了使用javascript API中其他类的部分解决方案但是我仍然想知道上述是否可行

 var w = new Window("dialog");
var s = w.add ("statictext", undefined, "Static");
var e = w.add ("edittext", undefined, "Edit");
var b = w.add ("button", undefined, "Button");

// The window's backround
w.graphics.backgroundColor = w.graphics.newBrush (w.graphics.BrushType.SOLID_COLOR, [0.5, 0.0, 0.0]);
// Font and its colour for the first item, statictext
s.graphics.font = ScriptUI.newFont ("Helvetica", "Bold", 30);
s.graphics.foregroundColor = s.graphics.newPen (w.graphics.PenType.SOLID_COLOR, [0.7, 0.7, 0.7], 1);
// Font and colours for the second item, edittext
e.graphics.font = ScriptUI.newFont ("Letter Gothic Std", "Bold", 30);
e.graphics.foregroundColor = e.graphics.newPen (e.graphics.PenType.SOLID_COLOR, [1, 0, 0], 1);
e.graphics.backgroundColor = e.graphics.newBrush (e.graphics.BrushType.SOLID_COLOR, [0.5, 0.5, 0.5]);
// Font for the tird control, a button. Can't set colours in buttons
b.graphics.font = ScriptUI.newFont ("Minion Pro", "Italic", 30);
w.show ();

1 个答案:

答案 0 :(得分:1)

如果查看API,静态文本有两个单独的类(StaticText (SUI)StaticText)。看起来第一个类StaticText (SUI)提供了为静态文本着色的功能,而第二个StaticText则没有。

在您的问题中,您显示的第一个代码段是使用StaticText类,因此无法使用图形选项(颜色)。第二个代码示例正在使用StaticText (SUI)类,这就是您可以为其着色的原因。

我找到了一个很好的概述,您可能会对UI API here之间的差异感兴趣。

因此,要回答您的问题,为了向对话框添加颜色,您必须使用窗口和Scripting UI类(SUI)创建自己的对话框,而不是使用“内置”对话框类。