拡張クラスをつくるときに、初期値を持ちながらスタイルシートを適応させたいのですが、
どのように実装すれば良いのか困っています。
現在、以下のような要件があります。
・引数で渡された値を有効とさせたい
・引数で値が渡されていなければ、スタイルシートを適応させたい
・上記2つとも設定されていないときには、初期値を有効とさせたい
local-optionを上書きして初期値を設定してみたのですが、
なぜか上書きした値が反映されず、スーパークラスの初期値が反映されているようです・・。
スタイルシートですべて指定しようか・・、という気持ちになりつつありますが・・。それも面倒です。。
ローカルオプションのオーバーライドはできないのでしょうか?
それとも、他に原因があるのでしょうか??
どなたか同じような問題に直面されてないですか??
よろしくお願いします。
拡張クラスのローカルオプションについて
Curlヘルプドキュメントの定義でいう所のoption-valueは上書きできないかと思います。
たとえば、TextField のenabed? がfalse に設定された場合に、自動的にvalue に「無効」と挿入したい場合など、
オプションの設定に応じて処理を記述したい場合は、どのようにすればよいのでしょうか。
オプション変更イベントなどがあるのでしょうか。
それとも、絶対に不可能?
オプションの設定に応じて処理を記述したい場合は、どのようにすればよいのでしょうか。
オプション変更イベントなどがあるのでしょうか。
それとも、絶対に不可能?
OptionListInterface を継承しているコントロールなら、option-changed をオーバーライドして同様のことができそうですね。
■オプションの監視について
http://communities.curl.com/showthread.php?tid=391
■オプションの監視について
http://communities.curl.com/showthread.php?tid=391
なんか小難しいことを考えているようですが単に↓のようにするだけではない?
Code:
{define-class MyTextField {inherits TextField}
{nonlocal-option public enabled?:bool
{if not enabled? then
set self.value = "無効"
}
}
}ん?
オーバーライドできないって・・・。
あれ?
できるな。
いや、これでいいんです。これで。
あれぇ・・・?
オーバーライドできないって・・・。
あれ?
できるな。
いや、これでいいんです。これで。
あれぇ・・・?
Code:
{define-class public MyTextField {inherits TextField}
{constructor public {default ...}
{construct-super {splice ...}}
}
{nonlocal-option public enabled?:bool
{if not enabled? then
set self.value = "無効"
else
set self.value = ""
}
}
{local-option public editable?:bool
{if not editable? then
set self.value = "編集不可"
else
set self.value = ""
}
}
}
{def tf = {MyTextField}}
{CheckButton
label = "enabled?",
value = true,
{on ValueChanged at chkb:CheckButton do
set tf.enabled? = chkb.value
}
}
{CheckButton
label = "editable?",
value = true,
{on ValueChanged at chkb:CheckButton do
set tf.editable? = chkb.value
}
}
{value tf}