Curl Global Community
拡張クラスのローカルオプションについて - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: 拡張クラスのローカルオプションについて (/showthread.php?tid=183)



拡張クラスのローカルオプションについて - okm - 08-03-2011

拡張クラスをつくるときに、初期値を持ちながらスタイルシートを適応させたいのですが、
どのように実装すれば良いのか困っています。

現在、以下のような要件があります。
・引数で渡された値を有効とさせたい
・引数で値が渡されていなければ、スタイルシートを適応させたい
・上記2つとも設定されていないときには、初期値を有効とさせたい

local-optionを上書きして初期値を設定してみたのですが、
なぜか上書きした値が反映されず、スーパークラスの初期値が反映されているようです・・。
スタイルシートですべて指定しようか・・、という気持ちになりつつありますが・・。それも面倒です。。

ローカルオプションのオーバーライドはできないのでしょうか?
それとも、他に原因があるのでしょうか??



どなたか同じような問題に直面されてないですか??

よろしくお願いします。


RE: 拡張クラスのローカルオプションについて - yosuga - 08-05-2011

Curlヘルプドキュメントの定義でいう所のoption-valueは上書きできないかと思います。


RE: 拡張クラスのローカルオプションについて - umemura - 11-29-2012

たとえば、TextField のenabed? がfalse に設定された場合に、自動的にvalue に「無効」と挿入したい場合など、
オプションの設定に応じて処理を記述したい場合は、どのようにすればよいのでしょうか。

オプション変更イベントなどがあるのでしょうか。

それとも、絶対に不可能?



RE: 拡張クラスのローカルオプションについて - umemura - 12-04-2012

OptionListInterface を継承しているコントロールなら、option-changed をオーバーライドして同様のことができそうですね。


■オプションの監視について
http://communities.curl.com/showthread.php?tid=391



RE: 拡張クラスのローカルオプションについて - fukuta - 12-06-2012

なんか小難しいことを考えているようですが単に↓のようにするだけではない?
Code:
{define-class MyTextField {inherits TextField}
  
  {nonlocal-option public enabled?:bool
    {if not enabled? then
        set self.value = "無効"
    }
  }
  
}




RE: 拡張クラスのローカルオプションについて - umemura - 12-11-2012

ん?
オーバーライドできないって・・・。

あれ?
できるな。

いや、これでいいんです。これで。

あれぇ・・・?

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}