非活性ボタンにbind-screen-command を指定すると・・・? - 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: 非活性ボタンにbind-screen-command を指定すると・・・? (/showthread.php?tid=324) |
非活性ボタンにbind-screen-command を指定すると・・・? - umemura - 10-25-2011 ある条件によって、このコマンドボタンの活性、非活性(enabled?)を切り替えたいと思ったのですが、 sonntag で、bind-screen-command を使ってコマンドボタンに処理を追加しているため、 Attacheイベントで画面に表示された際にコマンドが追加され、enabeld? もtrue になってしまうようです。 切り替えを行うには bind-screen-command を使わずに、 エベントハンドらの中でコマンドを呼ぶ必要があるのでしょうか。 RE: 非活性ボタンにbind-screen-command を指定すると・・・? - ashimo - 10-26-2011 同じ問題にぶつかった覚えがあります。 うろ覚えで恐縮ですが、確かそのときは bind-screen-commandの後ろにon Actionとか イベントタイプを付け加えたら押下不可になってくれました。 RE: 非活性ボタンにbind-screen-command を指定すると・・・? - fukuta - 10-27-2011 Sonntag のスクリーンコマンドは Curl の Command / CommandContext アーキテクチャにもとづいています。 コマンドアーキテクチャでは enabled? はボタンのプロパティで直接指定することはせず、 bound-command に設定された CommandImpl の enabled? の値にもとづいて制御されます。 (スクリーンコマンドの実体は CommandImpl で、bind-screen-command によって内部的にボタンの bound-command にセットされます) スクリーンコマンドでこの enabled? の値を指定する場合は define-screen-command の enabled? 句を指定してください。 Code: {define-screen-command xxx of XXXScreen bind-screen-command でスクリーンコマンドを設定する際に、enabled? 句が評価されてボタンの enabled? の 初期値が決まります。 また、enabled? の値が変化する可能性のあるタイミングでは、スクリーン(Screen-ofなどを継承してつくるオブジェクト) の request-update-commands というメソッドを呼び出すようにする必要もあります。 request-update-commands によって、再度 enabled? 句が評価されてボタンの状態が更新されます。 ボタンの enabled? プロパティを直接変更してはいけない点に注意してください。 RE: 非活性ボタンにbind-screen-command を指定すると・・・? - umemura - 11-02-2011 なるほど、ボタン側でそのコマンドを「呼ぶかどうか」ではなく、そのコマンドが「有効かどうか」で切り替えるということでしょうか。 {self.request-update-commands} を忘れないように気をつけないとですね。 Code: ||| Ex1LoginScreen の "login" スクリーンコマンドの定義 Code: ||ユーザー名の入力にあわせて、ログインボタンの活性を切り替える RE: 非活性ボタンにbind-screen-command を指定すると・・・? - umemura - 01-22-2013 以前同様の質問をしておきながら、bind-screen-method を指定したボタンが、 コンストラクタの中で非活性(enabled?=false)状態にしても、 初期表示時に活性(enabled?=true)状態になってしまう現象に悩んでいました。 bind-screen-method の場合もbind-screen-comamndと同じ、というか、 メソッドにはコマンドのような「有効、無効」という考えがないため、 実質、常に活性(enabled?=true)になってしまうという認識で正しいでしょうか。 RE: 非活性ボタンにbind-screen-command を指定すると・・・? - fukuta - 01-22-2013 おっしゃる通り bind-screen-method は試験的なAPIということもありenabled?の制御はサポートしていません。 |