Curl Global Community
ListModelに定義されているリストの一部を検索させたい - 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: ListModelに定義されているリストの一部を検索させたい (/showthread.php?tid=403)



ListModelに定義されているリストの一部を検索させたい - usami - 01-25-2012

ListModelクラスのfindメソッドでは、設定したリストを検索すると思いますが、
このリストのうち文字列の一部で検索する方法はありますか?
下記コードで登録してあるリストのうち、「02DEF」を、「2D」のキーワードで
検索させ、2番目のリストを表示させたいのですが、このコードでは検索できません。

Code:
{let list-of-states:DefaultListModel =
    {DefaultListModel
        "01ABC", "02DEF", "03GHI"
    }
}
{let dd:DropdownList =
    {DropdownList
        prompt = "Choose a state:",
        data-model = list-of-states,
        dropdown-height = 2in
    }
}
{let cmd:CommandButton =
    {CommandButton
       label = "&Click me!",
        style = "standard",
        {on Action at btn:CommandButton do
            let indx:int = {dd.find "2D"}
            {if indx < 0 then
                {dd.select-index 0}
             else
                {dd.select-index indx}
            }
        }
    }
}
{value dd}
{value cmd}



RE: ListModelに定義されているリストの一部を検索させたい - c-s - 01-25-2012

そういう場合では、findを使うよりは、自分のロープを書いた方がいいと思います。

Code:
{curl 7.0, 8.0 applet}

{def list-of-states =
    {DefaultListModel
        "01ABC", "02DEF", "03GHI"
    }
}

{def dd =
    {DropdownList
        prompt = "Choose a state:",
        data-model = list-of-states,
        dropdown-height = 2in
    }
}

{def cmd =
    {CommandButton
        label = "&Click me!",
        style = "standard",
        {on Action at btn:CommandButton do
            let index:int = -1
            {for li in dd.list-items do
                {inc index}
                {type-switch li.value
                 case s:String do
                    {if {s.find-string "2D"} >= 0 then
                        {dd.select-index index}
                        set index = -2
                        {break}
                    }
                }
            }
            {if index != -2 and dd.size >= 0 then
                {dd.select-index 0}
            }
        }
    }
}

{value dd}
{value cmd}

DefaultListModelを使ってにている事も出来るし、他にもやり方あります。




RE: ListModelに定義されているリストの一部を検索させたい - usami - 01-26-2012

ありがとうございます。
確認してみます。