YKLook説明書 YKLook用アプリの応用 画面遷移 前へ   次へ
   

画面遷移




次の画面を表示する

次の画面を表示するプログラム例です。

yk_next_display( 'second.rb' )

以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、次の画面を表示します。

def yki_make_display()
    btn = YKLookButton.new( 'ボタン' )
    pan = YKLookPanelFlow.new()
    pan.yk_add( btn )
    yk_add( pan )
    btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
    yk_next_display( 'second.rb' )
end

ここで指定している second.rb は、上のプログラム例と同じように YKLook 用の Ruby プログラムです。
この second.rb をディレクトリ付きで指定するときは、必ず相対パスで指定してください。


次の画面へ渡す

次の画面を表示し、情報を受け渡すプログラム例です。

yk_next_display( 'second.rb', ['data01'] )

以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、次の画面を表示し、その画面に情報を受け渡します。

def yki_make_display()
    btn = YKLookButton.new( 'ボタン' )
    pan = YKLookPanelFlow.new()
    pan.yk_add( btn )
    yk_add( pan )
    btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
    yk_next_display( 'second.rb', ['data01'] )
end

受け渡しデータは常に配列の形にしてください。
この配列の要素数は任意です。
ここではその要素として文字列をひとつだけ渡していますが、文字列以外にも以下のクラスのオブジェクトをいくつでも渡すことができます。
Array の要素や、Hash のキーと値も、上記のクラスに限ります。
その範囲内であれば ArrayHash を入れ子にしたり組み合わせることもできます。
厳密には、Ruby の組み込み Marshal 機能でシリアライズが可能な オブジェクトである限り、次の画面に情報を受け渡すことができます。

h = { 'key1' => obj1, 'key2' => obj2 }
a = [ val1, val2, val3 ]
yk_next_display( 'second.rb', [h, a] )

次の画面(ここでは second.rb )側では、メソッド yk_userwork() にて受け渡しデータを参照できます。
受け渡しデータがないときは nil を戻り値として返します。
受け渡しデータがあるときはその配列を戻り値として返します。

各メソッドの詳細については クラス解説 YKLookMain の下記メソッドの説明をご覧ください。

yk_next_display() yk_userwork() を使ったデータの受け渡しは、その前後の画面間でのみ有効です。
前後の画面だけでなく、一連の操作に関わる複数の画面間でデータを共有する方法については次項で説明します。


複数の画面で共有する

複数の画面で情報を共有するプログラム例です。

yk_userdata( 'key', 123 )
val = yk_userdata( 'key' )

上の例の1行目は、複数の画面間で共有するデータ(ここでは整数 123 )に key という名前をつけて登録しています。
2行目は、それを取り出す例です。
異なる名前を使って複数の共有データを登録することができます。

ここでは整数を指定していますが、整数以外にも以下のクラスのオブジェクトを指定することができます。
Array の要素や、Hash のキーと値も、上記のクラスに限ります。
その範囲内であれば ArrayHash を入れ子にしたり組み合わせることもできます。
厳密には、Ruby の組み込み Marshal 機能でシリアライズが可能な オブジェクトである限り、複数の画面間で情報を共有することができます。

h = { 'key1' => obj1, 'key2' => obj2 }
a = [ val1, val2, val3 ]
yk_userdata( 'complex-data', [h, a] )   # 登録

data = yk_userdata( 'complex-data' )    # 取り出し

ここで共有するのは、同じ時系列上にある一連の操作に関わる画面間についてのものです。
一連の操作を終え、プログラムを終了すると、それまで共有していたデータは自動的に消えます。
その後、再度プログラムを起動すると、以前の共有データは残っていません。

YKLook におけるこの機能の目的は、複数の画面間のセッション管理を簡単に実現することです。
このメソッド yk_userdata() を使うだけで、プログラム製作者が複雑な画面間のセッション管理をすることもなく、Webアプリでもスタンドアロンでも区別なくGUIプログラムを作ることができます。

データを永続的に保持したいときは、プログラム製作者が直接ファイルをオープンして出力したり、データベースを使って保存するような処理をおこなってください。

メソッド yk_userdata() の詳細については クラス解説 YKLookMain の説明をご覧ください。




   
YKLook説明書 YKLook用アプリの応用 画面遷移 前へ   次へ


Copyright (c) 2003-2010 YorozuKotowariYa Ltd.