Thread Rating:
  • 286 Vote(s) - 2.78 Average
  • 1
  • 2
  • 3
  • 4
  • 5
テキストフィールドの修正前の値を取得したい
12-03-2013, 06:01 PM,
#1
テキストフィールドの修正前の値を取得したい
あるテキストフィールドの値が修正されたとき、修正前の値を取得するには、どうすればよいですか。
Reply
12-03-2013, 06:06 PM,
#2
RE: テキストフィールドの修正前の値を取得したい
「値が修正されたとき」とは、具体的にどういう場合なのか、という定義も必要ですが、
「ValueFinished が発生したタイミングで、前回、同イベントが発生したときの値を参照する」という前提で、
イベントを利用したサンプルコードを記述してみました。

他にも、いろいろなやり方がありそうです。

Code:
||前回の値を通知するためのイベント
{define-class public CustomValueFinished {inherits Event}
  ||前回値保持用フィールド
  field private-set public-get pre-value:String
  {constructor public {default pre-value:String}
    set self.pre-value = pre-value
  }
}

{define-class public CustomTextField {inherits TextField}
  ||前回値保持用フィールド
  field private-get pre-value:String = ""

  {constructor public {default ...}
    {construct-super {splice ...}}

    {self.add-event-handler
        {on ValueFinished do
            ||ValueFinished イベント時に、前回の値を保持するイベントを発行する
            {self.handle-event {CustomValueFinished self.pre-value}}

            ||修正後の値を前回の値として保持する
            set self.pre-value = self.value
        }
    }
  }
}
{def tf =
    {CustomTextField
        ||値変更時に、前の値と修正後の値を表示
        {on e:CustomValueFinished at tf:TextField do
            {popup-message
                {Table columns = 2,
                    "修正前の値", e.pre-value,
                    "修正後の値",  tf.value
                }
            }
        }
    }
}
{value tf}

{CommandButton
    label = "値の変更",
    {on Action do
        {tf.set-value-with-events "aaa"}
    }
}


Curl の「イベント」は、EventTarget に対して handle-event を使って
RecordSet などに対しても投げられるので、便利ですね。



Reply

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('1014')