最初の画面構築(
yki_make_display()
)からその後のイベント処理、あるいは、前のイベント処理から次のイベント処理というように、それぞれの処理をまたがって同じインスタンス変数を参照しその内容を共有したいときは、
YKLookMain
クラスの
yk_var()
メソッドを使ってそのインスタンス変数名を YKLook に登録してください。
YKLook では、この唯一の登録処理により、プログラム製作者が複雑なイベント間のセッション管理をすることもなく、Webアプリでもスタンドアロンでも区別なくGUIプログラムを作れるようにしています。
使い方はとても簡単です。
セッション管理対象にしたいインスタンス変数名を、このメソッドの引数に指定するだけです。
一度指定すれば、それ以降ずっとそのインスタンス変数はセッション管理対象となり、変数の内容が変わればその内容が自動的に維持されます。
このメソッドは、
yki_make_display()
の中で使うことが多いです。
例 |
def yki_make_display()
... 他の処理 ...
gui.yk_set_listener( 'fn_callback' )
@data01 = [ 123, 456, 789 ]
@data02 = { 'key01' => 'abc', 'key02' => 'xyz' }
yk_var( '@data01' )
yk_var( '@data02' )
end
def fn_callback( prm_event )
val = @data01[ 2 ] # val は 789
val = @data02[ 'key01' ] # val は 'abc'
... 他の処理 ...
end
|
YKLook の現在のバージョンでは、スタンドアロンでプログラムを起動するときは
yk_var()
を使わなくても問題なく動作します。
しかし、これは現在の YKLook の実装方法がそうなっているだけで、仕様上は
yk_var()
を使うことが前提になっています。
いずれにしても、Webアプリとして起動するときは、必ず
yk_var()
を使ってください。
セッション管理対象のインスタンス変数に代入可能なオブジェクトは、下記のいずれかのクラスに限ります。
-
Array
-
Hash
-
Numeric , Integer , Bignum , Fixnum , Float
-
Range
-
Regexp
-
String , Symbol
-
TrueClass , FalseClass , NilClass
-
YKLookSwingBase
のサブクラス(YKLook のGUIオブジェクト)
Array
の要素や、
Hash
のキーと値も、上記のクラスに限ります。
その範囲内であれば
Array
や
Hash
を入れ子にしたり組み合わせることもできます。
厳密には、Ruby の組み込み Marshal 機能でシリアライズが可能な
オブジェクトである限り、セッション管理対象にすることができます。