Thread Rating:
  • 290 Vote(s) - 2.77 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ComboBoxのラベル表示
02-16-2012, 07:04 PM,
#1
ComboBoxのラベル表示
こんにちは!

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

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


よろしくお願いいたします。
Reply
02-17-2012, 12:11 PM,
#2
RE: ComboBoxのラベル表示
少々強引ですが、こんな感じでしょうか?
リストが選択されたら値を変数に保持し、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}
Reply
02-20-2012, 02:38 PM,
#3
RE: ComboBoxのラベル表示
usamiさま

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

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


Reply
02-20-2012, 04:00 PM,
#4
RE: ComboBoxのラベル表示
unset-valueを実行すると選択した値がクリアされるため、
選択した値(1,2,3)を取得しないのであれば、変数に保持しておく必要はありません。
valueを書き換えたら表示も値(1,2,3)になるので、prompt(A,B,C)を書き換えてます。
Reply
02-22-2012, 06:23 PM,
#5
RE: ComboBoxのラベル表示
usamiさま

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

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('412')