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=1014)



テキストフィールドの修正前の値を取得したい - umemura - 12-03-2013

あるテキストフィールドの値が修正されたとき、修正前の値を取得するには、どうすればよいですか。


RE: テキストフィールドの修正前の値を取得したい - umemura - 12-03-2013

「値が修正されたとき」とは、具体的にどういう場合なのか、という定義も必要ですが、
「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 などに対しても投げられるので、便利ですね。