Thread Rating:
  • 393 Vote(s) - 2.84 Average
  • 1
  • 2
  • 3
  • 4
  • 5
フォーカスを受け付けないボタン押下時に、別テキストフィールドの入力確定を行う
05-21-2013, 04:15 PM,
#7
RE: フォーカスを受け付けないボタン押下時に、別テキストフィールドの入力確定を行う
はじめまして。
わたしは、umemuraさんとほぼ同じですが、clean-screen-focus の部分を
こんな感じで実装しています。
なんとなく。ですが、ValueFinishedとFocusOutを明示的に呼び出すよりも、
manager-release-key-focus を使って、その先の処理はCurlAPIに
任せた方が、後のバージョンアップで問題になりにくそうな気持ちです。
その後、manager-request-key-focus をしているのは、
元の項目に、フォーカスを戻すためで、
TextField入力中に、ショートカットでボタンをActionさせて、
また同じTextFieldで入力が続けられるようにしています。

前提になっているバックグラウンドは、
ショートカットキーでActionが起動されるときに先にFocusOutを発生させたい!
というための実装をしていて、
dyoshidaさんのいうところの
|| イベントキューにコマンドボタンの"Action"イベントを積む
{copy-button.enqueue-event {Action}}

の代わりに呼び出されるメソッドです。

Code:
def cb = [ActionされるCommandButtonです]
    {if-non-null focus-manager = {cb.get-focus-manager} then
        {if-non-null target = focus-manager.keyboard-focus-target then
            || FocusOutでイベント処理(入力チェックなど)を行っている場合があるため、
            || focusを一瞬奪い取り、コントロールでFocusOutイベントを発生させる
            {focus-manager.manager-release-key-focus target = target}
            {focus-manager.manager-request-key-focus target}
        }
        
        || FocusOutイベントの処理を待って処理を実行する
        {after 0s do
            || 念のためFocusOutイベントの処理中にafter0s を使っていても良いように、
            || それも待って処理を実行する
            {after 0s do
                || FocusOutイベント処理中に、popupが表示された場合(エラーメッセージなど)は
                || FunctionKeyの処理を行わない。
                {if focus-manager.have-keyboard-focus? then
                    {if cb.enabled? then
                        {cb.take-action}
                    }
                }
            }
        }
    }

After 0s の使い方と回数は、これでいいのか?という感じもしますが、
うちではこれで動いてます^^;



Messages In This Thread
RE: フォーカスを受け付けないボタン押下時に、別テキストフィールドの入力確定を行う - by Kaneko - 05-21-2013, 04:15 PM
Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('897')