描画オブジェクトのサイズと位置を制御する次の4つのプロパティがあります。
これらのプロパティはすべて Unit 型です。X と Y のデフォルト値は「自動」(静的フィールド Unit.Auto)です。つまり、オブジェクトは、親から指定されるスタック規則に従って配置されます(詳細については、「スタック規則」を参照)。幅と高さのデフォルト値は、描画オブジェクトの型によって異なります。
すべての描画オブジェクトのデフォルトのサイズを次に示します。
幅 | 高さ | 自動サイズ | |
---|---|---|---|
RenderArea RenderToc RenderReport RenderSection RenderC1Printable |
親の幅 | 自動 | 子のサイズの合計によって決まります。 |
RenderEmpty | 自動 | 自動 | 0 |
RenderGraphics | 自動 | 自動 | コンテンツのサイズによって決定されます。 |
RenderImage | 自動 | 自動 | 画像のサイズによって決定されます。 |
RenderInputButton RenderInputCheckBox RenderInputRadioButton RenderInputComboBox RenderInputText | 自動 | 自動 | コンテンツのサイズによって決定されます。 |
RenderRichText | 親の幅と同じ | 自動 | -- |
RenderLine RenderPolygon RenderEllipse RenderArc RenderPie RenderRectangle RenderRoundRectangle | 自動 | 自動 | 図形のサイズによって決定されます。 |
RenderTable |
親の幅と同じ (自動幅は、列の幅の合計として計算されます。この場合は、すべての列の幅が絶対値で指定されている必要があります。) |
自動 | (すべての行の高さの合計として決定) |
RenderParagraph RenderText RenderTocItem | 親の幅と同じ | 自動 | テキストのサイズによって決定されます。 |
RenderField | 親の幅 | 自動 | コンテンツのサイズによって決まります。 |
RenderBarCode | 自動 | 自動 | コンテンツのサイズによって決まります。 |
これらのプロパティのデフォルト値はカスタム値でオーバーライドできます。「スタック規則」で説明したように、X 座標または Y 座標に「自動」以外の値を指定すると、そのオブジェクトがスタックフローから除外されます。サイズプロパティと位置プロパティは、次のいずれかの方法で設定できます(下のサンプルの「ro」は描画オブジェクト)。
ro.Width = Unit.Auto;
ro.Height = "auto";
ro.X = new Unit(8, UnitTypeEnum.Mm);
ro.Y = 8;(単位として C1PrintDocument.DefaultUnit が使用される)
ro.Width = "28mm";
ro.Height = new Unit(50, DimensionEnum.Width);
ro.Width = "100%";
別のオブジェクトのサイズまたは位置を参照して設定します。オブジェクトは、次のキーワードのいずれかで識別されます。
self - 現在のオブジェクト(デフォルト値。省略可能)。>
parent - オブジェクトの親。
prev - 前の兄弟オブジェクト。
next - 次の兄弟オブジェクト。
page - 現在のページ。
column - 現在の列。
page<N> - 指定された番号のページ。メモ:このページがすでに存在している必要があります。将来生成されるページへの前方参照はサポートされていません。
column<M> - 現在のページの指定された列。
page<N>.column<N> - 指定されたページの指定された列。
<object name> - 指定された名前のオブジェクト。名前は Name プロパティの値です。オブジェクトはまず現在の兄弟から検索され、次に子から検索されます。
参照されるオブジェクトのサイズと位置は、left、top、right、bottom、width、height の各キーワードで識別されます(座標はオブジェクトの親に対する相対位置)。
いくつかの例を示します。
ro.Height = "next.height"; - オブジェクトの高さを次の兄弟オブジェクトの高さに設定します。
ro.Width = "page1.width"; - オブジェクトの幅を最初のページの幅に設定します。
ro.Height = "width"; - オブジェクトの高さを自分自身の幅に設定します。
ro.Y = "prev.bottom"; - オブジェクトの Y 座標を前の兄弟オブジェクトの下端に設定します。
ro.Width = "prev.width"; - オブジェクトの幅を前の兄弟オブジェクトの幅に設定します。
ro.Width = "Max(prev.width,6cm)"; - オブジェクトの幅を6 cm または直前の兄弟オブジェクトの幅の大きい方に設定します。
ro.Width = "prev.width + 50%prev.width"; ? オブジェクトの幅を前の兄弟オブジェクトの幅の 1.5 倍に設定します。
ro.Width = "150%prev"; - 上と同じです。設定する要素と同じ要素を参照する場合は、要素(この場合は「width」)を省略できます。
ro.Width = "prev*1.5"; - これも上と同じです。ただし、パーセントではなく乗算を使用しています。
サイズや位置が文字列に設定されているサンプルでは、Unit(string) コンストラクタを使用する構文も使用できます。次に例を示します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
ro.Width = New C1.C1Preview.Unit("150%prev") |
C# コードの書き方
C# |
コードのコピー
|
---|---|
ro.Width = new Unit("150%prev"); |
文字列の大文字小文字は区別されないため、「prev.width」、「PrEv.WidhT」、および「PREV.WIDTH」はすべて同じです。