4D v17 R6では、4D View Proのドキュメントのスタイルをプログラムでカスタマイズすることができます。それには、3つの方法があります。1) デフォルトスタイルコマンドでシートの一般的なスタイルを定義する、2) スタイルシートコマンドでよく使うカスタムスタイルを定義する、最後に3) セルススタイルコマンドで特定のセルのスタイルを定義する。
スタイルコマンドは、前景色と背景色、セルの背景画像、ボーダー、セルのパディング、フォント、水平・垂直方向の配置、テキストの装飾、テキストのインデントなどを定義することができるオブジェクトを使用します。
デフォルトのスタイルを定義するには、以下のコマンドを使用します。
スタイルシートを定義するには、次のコマンドを使用します。
また、セルスタイルの設定や取得、スタイルシートの適用を行う場合は、次のコマンドを使用します。
デフォルトのスタイル
デフォルトのスタイルを作成することで、シート全体の一般的なスタイルを簡単に定義することができます。範囲を指定する必要はなく、スタイル・オブジェクトを VP SET DEFAULT STYLEコマンドにスタイル・オブジェクトを渡せば完了です。デフォルトスタイルのおかげで、スタイルが文書と一緒に一度だけ保存され、すべてのセルで繰り返されないため、文書のサイズを大幅に削減することができます。
以下は、シートのデフォルトフォントと背景色を定義するコードです。
$style:=New object
$style .font:="14pt Arial"
$style .backColor:="#F0FFFF"
VP SET DEFAULT STYLE ("ViewProArea";$style)
スタイルシート
複数のセルで同じスタイルを使用する必要がある場合は、スタイルシートを VP ADD STYLESHEETでスタイルシートを作成し、すべてのセルに適用してください。こうすることで、(必要に応じて)すべてのセルのスタイルを同時に更新することができます。
以下は、ボーダーを使用し、文書内にテーブルを作成するためのコードです。
// Create the border style
$style:=New object
$style.font:="18pt Arial"
$style.backColor:="#FF1493"
// create your stylesheet in the document
VP ADD STYLESHEET ("ViewProArea"; "Table"; ) ( ("ViewProArea";1;1;10;10); ("name"; "Table")$style
// Apply the style
VP SET CELL STYLEVP CellsNew object))
セルスタイル
また、特定のセルに直接スタイルを適用することもできます。 VP SET CELL STYLEコマンドのおかげで、特定のセルに直接スタイルを適用することもできます。この場合、スタイルオブジェクト全体が、指定されたすべてのセルにコピーされることに注意してください。これは、ドキュメントのサイズに影響を与える可能性があります。
例えば、1つのセルの背景に画像を表示させる場合。
// create style object
)
$style:=New object
$style .backgroundImage:=Get 4D folder(Current resources folder)+"4D.png"
$style .backgroundImageLayout:=vk image layout center
// Apply the style 特定セルへ
VP SET CELL STYLE (VP Cell ("ViewProArea";1;1);$style
ボーダー
スタイル属性で範囲の境界を管理するのは複雑なので、新しい VP SET BORDER コマンドを追加しました。
たとえば、次のように、範囲の外側に太いボーダー、内側に細いボーダーのスタイルを追加する必要がある場合。
これを使うことができます。
$range:=VP Cells ("ViewProArea";1;1;5;5)
// define border style
$border :=New object("color"; "black")
//Apply the style to the left, top, right, and bottom borders of the range
$border .style:=vk line style thick
VP SET BORDER ($range;$border;New object("outline";True)
//Apply the style to the inner horizontal and vertical borders of the range
$border.style:=vk line style thin
VP SET BORDER ($range;$border;New object("内側";True))
詳しくは、doc centerをご覧ください。