Sonntag で VLE を利用する

Sonntag で VLE を利用する

VLE で作成したレイアウトを Sonntag のスクリーングラフィックとして利用することができます。この場合、Sonntag の仕組みによってアプリケーションロジックをスクリーンとスクリーンコマンドに分離でき、VLE で作成するレイアウトクラスにイベントハンドラなどを記述する必要がなくなります。

VLE で画面レイアウトを作成する

VLE で作成した画面レイアウトを用意します。(VLE の利用方法は「レイアウトの作成」などを参考にしてください)

Sonntag で利用するために、まずは作成したレイアウトクラスとそのコンストラクタを public にする必要があります。ソースファイルを開いて、以下の赤字のように public の記述を追加してください。

{define-layout-class public SampleLayout
    || Begin meta-data DO NOT EDIT
    ・・・(略)
    {constructor public {default}
        {self.initialize-components}
    }
}

スクリーンを定義する

VLE で作成したレイアウトクラスをスクリーングラフィックとして利用する場合は、VScreen-of というクラスを継承してスクリーンを定義します。VScreen-of はパラメータ化クラスで、以下のようにスクリーングラフィック(VLE で作成したレイアウトクラス。この例では SampleLayout)をパラメータで指定します。 

{define-class public SampleScreen
  {inherits {VScreen-of SampleLayout}}
  ・・・(略)
}

このように作成したスクリーンは、チュートリアルで説明したスクリーンと同様、スクリーンスロットを利用して以下のように表示することができます。

{ScreenSlot SampleScreen}

VLE レイアウト上のオブジェクトを参照する

スクリーンクラス(VScreen-of のサブクラス)では layout ゲッターを使用して VLE で作成したレイアウトクラスのオブジェクトを参照できます。よって、VLE 上でデザイン名(design-name)を指定したオブジェクトをスクリーンクラス内から参照する構文は以下のようになります。

self.layout.design-name

例えば以下は、デザイン名が foo-tf というコントロールの value に “FOO” という値をセットするコードです。

set self.layout.foo-tf.value = “FOO”

チュートリアルで説明した find-graphic-by-name メソッドを上記で示した方法の代わりに使用することもできます。この場合は VLE 上のオブジェクトに「デザイン名」ではなく「名前」プロパティを設定します。