Thread Rating:
  • 340 Vote(s) - 2.86 Average
  • 1
  • 2
  • 3
  • 4
  • 5
DateField の ValueFinished の抑制
01-24-2013, 07:21 PM,
#1
DateField の ValueFinished の抑制
DateField では、1文字ごとに入力内容をパースして、
YYYY/MM/DDなど、フォーマットとして正しい値であればそのタイミングでValueFinishedが発生すると思いますが、
この ValueFinished を抑制することはできますか?

通常の TextField のように、フォーカスアウトやEnterキーの押下などでValueFinished を発生させたいのですが、可能でしょうか。
01-24-2013, 08:10 PM,
#2
RE: DateField の ValueFinished の抑制
独自のイベントを利用することで無理やりできそうです。

Code:
{define-class public DateFieldValueFinished {inherits GuiEvent}
  {constructor public {default}
    {construct-super}
  }
}
{define-class public TestDateField {inherits DateField}
  {constructor public {default ...}
    {construct-super {splice ...}}
  }
  ||ValueFienid の発生をコントロールするために DateFieldValueFinished 発生時かどうかを判断する変数
  field private do-finished?:bool = false
  ||値が変更されたかどうかを判断するための値保持変数
  ||ValueFienid の発生をコントロールすることが目的
  field private prev-val:#DateTime = null

  ||通常のTextField と同様のタイミングでValueFinished が発生するようにコントロールする
  {method public {handle-event e:Event}:void
    {type-switch e
     case vf:ValueFinished do
        || DateFieldValueFinished 発生時以外のValueFinised は握りつぶす
        {if not self.do-finished? then
            {vf.consume}
            {return}
        }
     case kp:KeyPress   do
        ||Ennterキー押下時にDateFieldValueFinished を発生させる
        {if kp.value == KeyPressValue.enter then
            {self.handle-event {DateFieldValueFinished}}
        }
     case fi:FocusIn do
        ||フォーカスイン時に前回の値を保持する
        set self.prev-val = self.value
     case fo:FocusOut do
        ||フォーカスアウト時に前回の値と比較し、変更されていれば DateFieldValueFinished を発生させる
        {if self.prev-val != self.value then
            {self.handle-event {DateFieldValueFinished}}
        }
     case dfvfe:DateFieldValueFinished  do
        || DateFieldValueFinished のときのみ、ValueFinished が発生するように do-finished?フラグを立てる
        {with self.do-finished? = true do
            {self.handle-event {ValueFinished}}
        }
    }
    {super.handle-event e}
  }
}


Possibly Related Threads...
Thread Author Replies Views Last Post
  Setting a value to DateField by keyboard alchimiste 4 5,988 09-28-2011, 06:06 PM
Last Post: alchimiste
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('831')