次の画面を表示し、情報を受け渡すプログラム例です。
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
- Numeric , Integer , Bignum , Fixnum , Float
- Range
- Regexp
- String , Symbol
- TrueClass , FalseClass , NilClass
Array の要素や、
Hash のキーと値も、上記のクラスに限ります。
その範囲内であれば
Array や
Hash を入れ子にしたり組み合わせることもできます。
厳密には、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_next_display()
と
yk_userwork()
を使ったデータの受け渡しは、その前後の画面間でのみ有効です。
前後の画面だけでなく、一連の操作に関わる複数の画面間でデータを共有する方法については次項で説明します。
複数の画面で情報を共有するプログラム例です。
yk_userdata( 'key', 123 )
val = yk_userdata( 'key' )
|
上の例の1行目は、複数の画面間で共有するデータ(ここでは整数
123
)に
key
という名前をつけて登録しています。
2行目は、それを取り出す例です。
異なる名前を使って複数の共有データを登録することができます。
ここでは整数を指定していますが、整数以外にも以下のクラスのオブジェクトを指定することができます。
- Array
- Hash
- Numeric , Integer , Bignum , Fixnum , Float
- Range
- Regexp
- String , Symbol
- TrueClass , FalseClass , NilClass
Array の要素や、
Hash のキーと値も、上記のクラスに限ります。
その範囲内であれば
Array や
Hash を入れ子にしたり組み合わせることもできます。
厳密には、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
の説明をご覧ください。