Curl Global Community

Full Version: ComboBoxのラベル表示
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
こんにちは!

ComboBoxで、見た目のラベルと、実際の値と別のものを表示できると思うんですが、
実際ラベルが表示されるのはクリックしたListが表示されているときだけで、
Listを選択すると実際の値になってしまいますよね?

これって、選択してもラベルを表示させることは出来ないのでしょうか?


よろしくお願いいたします。
少々強引ですが、こんな感じでしょうか?
リストが選択されたら値を変数に保持し、unset-valueによってクリアさせて
選択された行に対するラベルを表示させています。
Code:
{def display:VBox = {VBox}}
{def model:DefaultListModel =
    {DefaultListModel
        "1", "2", "3"
    }
}
{def lb:ListBox =
    {ListBox
        "A","B","C"
    }
}
{let st:String = ""}
{Frame
    color = "black",
    {ComboBox
        control-appearance-changeable? = true,
        data-model = model,
        prompt = "select here",
        list-item-creation-proc =
            {proc {val:any}:ListItem
                {return
                    {ListValueItem
                        val,
                        label = lb[{val.to-int} - 1].value
                    }
                }
            },
        {on e:ValueFinished at cbo:ComboBox do
            set st = cbo.value
            {display.clear}
            {display.add {format "value: %s", st}}
            set cbo.prompt = lb[{cbo.value.to-int} - 1].value
            {cbo.unset-value}
            {e.consume}
        }
    }
}
{value display}
usamiさま

ありがとうございます!
う~ん、なるほど・・。
ComboBox.valueで値を取得するのはあきらめて・・ということですね。

ちなみに、値を変数に保持しているなら、ComboBoxのValueを書き換えたのでいいのでは?
と思ってしまうのですが、promptで表示させるのはなにか意味があるのですか?


unset-valueを実行すると選択した値がクリアされるため、
選択した値(1,2,3)を取得しないのであれば、変数に保持しておく必要はありません。
valueを書き換えたら表示も値(1,2,3)になるので、prompt(A,B,C)を書き換えてます。
usamiさま

なるほどー。
ありがとうございます。