GeneXus 15 Upgrade 12にてStencil(ステンシル)というオブジェクトが追加されています。
Stencilオブジェクトのwikiを読みましたが、用途や作成方法がわかりづらかったので、実際に調べた内容をまとめてみます。
GeneXus Wiki – Stencil オブジェクト
http://wiki.genexus.jp/hwiki.aspx?Stencil+オブジェクト,
用途
同一のレイアウトを含む画面を複数作成したい場合、Stencilオブジェクトを使用することで、共通化することができます。
共通化の対象が画面全体ではなく画面内の一部分のみ、というのがポイントになります。
それではWebコンポーネントと同じなのでは?と疑問に感じるかと思いますが、Stencilオブジェクトは下記の特徴があります。
- RulesエレメントやEventsエレメントがない
- Webとスマートデバイスの両方に対応している
Webコンポーネントは呼び出し元からパラメータを渡して、パラメータ値によって表示内容を変えるという使い方ができますが、Stencilはそういった使い方はできません。
純粋に画面のレイアウト部分のみを共通化できるようにしたものです。
また、Webコンポーネントのレイアウト部分の共通化に近いイメージですが、スマートデバイス(以下、SD)にも対応しています。
まとめると、WebやSDの画面の一部分のレイアウトを、共通部品のように開発できるオブジェクトになります。
作成方法
Stencilオブジェクトも他のオブジェクトのように、KBエクスプローラー上で新規に作成することができますが、最初から共通部品を作るというのはシチュエーションはあまりないかと思います。
作成済みのWebパネルなどのWeb FormエレメントやSDパネルのLayoutエレメントから、Stencilオブジェクトを生成することができます。
- テーブルコントロール上で右クリックし、「新規 Stencil としてラップ」を選択します。
- 新規オブジェクトのダイアログが表示されるので、名前を入力して作成ボタンを押下します。
- さきほどのテーブルコントロールのレイアウトが、Stencilオブジェクトとして作成されているのがわかります。
なお、テーブルコントロール以外にはFlexレイアウトコントロールとグループコントロールが、この方法でStencilオブジェクト化できました。
利用方法
Webコンポーネントの場合、Webコンポーネントの呼び出し元のオブジェクトから独立していますが、Stencilは利用しているオブジェクト上で、変数の値やイベントを定義します。
まとめ
Stencilオブジェクトを利用することで、レイアウトを共通化し、効率よく開発することができます。
WebアプリケーションとSDアプリケーションの両方を開発する場合に役に立ちそうです。