Thread Rating:
  • 334 Vote(s) - 2.87 Average
  • 1
  • 2
  • 3
  • 4
  • 5
非活性ボタンにbind-screen-command を指定すると・・・?
10-25-2011, 03:31 PM,
#1
非活性ボタンにbind-screen-command を指定すると・・・?
ある条件によって、このコマンドボタンの活性、非活性(enabled?)を切り替えたいと思ったのですが、
sonntag で、bind-screen-command を使ってコマンドボタンに処理を追加しているため、
Attacheイベントで画面に表示された際にコマンドが追加され、enabeld? もtrue になってしまうようです。

切り替えを行うには bind-screen-command を使わずに、
エベントハンドらの中でコマンドを呼ぶ必要があるのでしょうか。
Reply
10-26-2011, 05:18 PM,
#2
RE: 非活性ボタンにbind-screen-command を指定すると・・・?
同じ問題にぶつかった覚えがあります。
うろ覚えで恐縮ですが、確かそのときは
bind-screen-commandの後ろにon Actionとか
イベントタイプを付け加えたら押下不可になってくれました。
Reply
10-27-2011, 05:37 PM,
#3
RE: 非活性ボタンにbind-screen-command を指定すると・・・?
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
    {enabled?
        || ここに true / false の判定をかく
        || この句内の最後の式が bool 値に評価されて enabled? の値として使用される
    }
do
    || ...
}

bind-screen-command でスクリーンコマンドを設定する際に、enabled? 句が評価されてボタンの enabled? の
初期値が決まります。
また、enabled? の値が変化する可能性のあるタイミングでは、スクリーン(Screen-ofなどを継承してつくるオブジェクト)
の request-update-commands というメソッドを呼び出すようにする必要もあります。
request-update-commands によって、再度 enabled? 句が評価されてボタンの状態が更新されます。
ボタンの enabled? プロパティを直接変更してはいけない点に注意してください。
Reply
11-02-2011, 02:51 PM,
#4
RE: 非活性ボタンにbind-screen-command を指定すると・・・?
なるほど、ボタン側でそのコマンドを「呼ぶかどうか」ではなく、そのコマンドが「有効かどうか」で切り替えるということでしょうか。

{self.request-update-commands} を忘れないように気をつけないとですね。


Code:
||| Ex1LoginScreen の "login" スクリーンコマンドの定義
{define-screen-command
    login of screen:Ex1LoginScreen {enabled? screen.login-enabled?}
do


Code:
||ユーザー名の入力にあわせて、ログインボタンの活性を切り替える
    {self.userid-tf.add-event-handler
        {on ValueChanged at tf:TextField do
            {if tf.value.size > 0 then
                set self.login-enabled? = true
             else
                set self.login-enabled? = false
            }
            {self.request-update-commands}
        }
    }
Reply
01-22-2013, 11:51 AM,
#5
RE: 非活性ボタンにbind-screen-command を指定すると・・・?
以前同様の質問をしておきながら、bind-screen-method を指定したボタンが、
コンストラクタの中で非活性(enabled?=false)状態にしても、
初期表示時に活性(enabled?=true)状態になってしまう現象に悩んでいました。

bind-screen-method の場合もbind-screen-comamndと同じ、というか、
メソッドにはコマンドのような「有効、無効」という考えがないため、
実質、常に活性(enabled?=true)になってしまうという認識で正しいでしょうか。
Reply
01-22-2013, 06:49 PM,
#6
RE: 非活性ボタンにbind-screen-command を指定すると・・・?
おっしゃる通り bind-screen-method は試験的なAPIということもありenabled?の制御はサポートしていません。
Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  Curl RTE Command line smtit 1 2,916 04-19-2016, 09:35 AM
Last Post: dice256
  Using cURL command, how do we fetch stock data which comes back *WITHOUT comm Scotland Warrior 1 3,472 01-16-2015, 10:09 AM
Last Post: dyoshida
  curl command to set file property nazia 1 4,699 04-22-2013, 03:47 PM
Last Post: heavybugtracker
  powershell is not parsing the curl command line promperly ericwood 1 5,004 04-17-2013, 12:00 PM
Last Post: heavybugtracker
  RecordForm do-command "move-to" RobertShiplett 1 3,693 05-14-2012, 08:47 PM
Last Post: RobertShiplett
  Command のnameについて snishimura 1 3,164 08-01-2011, 10:21 PM
Last Post: umemura
Forum Jump:


Users browsing this thread:
1 Guest(s)