01-17-2012, 08:00 PM
あるインスタンスの、ある値の「変更」を監視したい場合、どのような方法がありますか?
目的はデバッグではなく、たとえば、あるCommandButton の enabled? をfalse にした際、
監視していたそのボタンのラベル自身が、自分の表示文字を切り替える、というような場合を考えています。
Observerを利用したり、コマンドボタンの継承クラスに同様の機能を実装することができることは理解していますが、
今回の目的は、既存のコードになるべく影響を出さないように、継承クラスなどはつくら渦に実現できればと思っています。
言い換えると、on-action などのイベントと同じように、「enable? の値が変わったら」という記述方法があるか、
というイメージになります。
register-options を利用して、下記のようなコードで実現できるのではと予想したのですが、
監視するオプションの指定方法が分かりません。
目的はデバッグではなく、たとえば、あるCommandButton の enabled? をfalse にした際、
監視していたそのボタンのラベル自身が、自分の表示文字を切り替える、というような場合を考えています。
Observerを利用したり、コマンドボタンの継承クラスに同様の機能を実装することができることは理解していますが、
今回の目的は、既存のコードになるべく影響を出さないように、継承クラスなどはつくら渦に実現できればと思っています。
言い換えると、on-action などのイベントと同じように、「enable? の値が変わったら」という記述方法があるか、
というイメージになります。
register-options を利用して、下記のようなコードで実現できるのではと予想したのですが、
監視するオプションの指定方法が分かりません。
Code:
{def cb:CommandButton = {CommandButton label = "押せます"}}
{do
{cb.register-options
{proc { [CommandButton の enabeld? のオプションキー]:}void
{if enabled? == true then
set cb.label = "押せます"
else
set cb.label = "押せません"
}
}
}
{value cb}
{CheckButton
{on ValueChanged at chb:CheckButton do
set cb.enabled? = chb.value
}
}