Thread Rating:
  • 349 Vote(s) - 2.93 Average
  • 1
  • 2
  • 3
  • 4
  • 5
DropdownListのイベントについて
11-11-2013, 10:39 AM,
#4
RE: DropdownListのイベントについて
こんな感じでいかがでしょうか。

Code:
{def dl = {DropdownList}}
{def radio-frame-change-data-model =
    {RadioFrame
        {HBox
            {RadioButton
                label = "0から10",radio-value = "0-10"
            },
            {RadioButton
                label = "20から30",radio-value = "20-30"
            }
        }
        ,

        ||ラジオボタンの値変更時に、DropdownList.data-modelを変更
        {on ValueChanged at rf:RadioFrame do
            ||ラジオボタンの値が変更されたタイミングで、
            ||リストの内容を変更する
            def dm = dl.data-model
            {dm.clear}
            {switch rf.value
             case "0-10" do
                {for i:int = 0 to 10 do
                    {dm.append i}
                }
             case "20-30" do
                {for i:int = 20 to 30 do
                    {dm.append i}
                }
            }
        }
    }
}

{VBox  radio-frame-change-data-model, dl }
{do
    ||ラジオボタンの値を変更して
    ||ドロップダウンリストのリストを変更する
    ||※ set dl.value = ** ではイベントが発生しないことに注意
    {radio-frame-change-data-model.set-value-with-events "0-10"}
}


ちなみに、リスト表示時にリストをリフレッシュするには、UIクラスを継承したクラスを作成する必要がありそうです。

Code:
||リスト表示時にリストの内容をリフレッシュするUI
{define-class public CustomDropdownListUI {inherits SkinnableDropdownListUI}
  field radio-frame:#RadioFrame

  {constructor public {default
                          radio-frame:#RadioFrame = null,
                          ...}
    {construct-super {splice ...}}
    set self.radio-frame = radio-frame
  }
  ||リストの表示時に、リストの内容を変更する
  {method public {show-dropdown}:void
    {self.change-lsit-by-radio-value}
    {super.show-dropdown}
  }
  ||リストの内容を変更する
  {method {change-lsit-by-radio-value}:void
    {if-non-null self.radio-frame then
        def dm = (self.control asa DropdownList).data-model
        {dm.clear}
        {switch  self.radio-frame.value
         case "0-10" do
            {for i:int = 0 to 10 do
                {dm.append i}
            }
         case "20-30" do
            {for i:int = 20 to 30 do
                {dm.append i}
            }
        }
    }
  }
}

{def cdl = {DropdownList ui-object = {CustomDropdownListUI radio-frame = radio-frame-change-data-model}}}

{VBox  radio-frame-change-data-model,  cdl}


Messages In This Thread
RE: DropdownListのイベントについて - by umemura - 11-11-2013, 10:39 AM
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('1004')