04-10-2014, 09:49 AM,
|
|||||
|
|||||
ComboBoxのListを「右寄せ」にしたい
ComboBox使って
値リストを「右寄せ」に表示したいのですが ComboBoxにはhalignプロパティの提供がありません。 実現可能でしょうか。 以下、試した事項です。(2件) ① ui-objectにアクセスして、SkinnableComboBoxUIのhalignプロパティに"right"を設定する。 <結果> 「選択肢」「選択した値」ともに右寄せされず。 <ソース> def ui = test-cbb.ui-object asa SkinnableComboBoxUI ui.halign = "right" ② labelプロパティにVBoxを設定し、VBoxのhalignプロパティに"right"を設定する。 <結果> 「選択肢」は右寄せされた。 「選択した値」は右寄せされず。 <ソース> {let modelefaultListModel = {DefaultListModel "red", "green", "blue", "-", "teal", "purple", "orange" } } {def cmbx-length=5cm} {def cmbx= {ComboBox width = cmbx-length, control-appearance-changeable? = true, data-model = model, list-item-creation-proc = {proc {val:any}:ListItem {if val == "-" then {return {ListSeparator} } else {return {ListValueItem val, label = {VBox halign="right", width = cmbx-length - 0.5cm, color = val, {value val}} } } } } } } {Frame color = "black", cmbx } |
|||||
04-10-2014, 11:15 AM,
|
|||||
|
|||||
RE: ComboBoxのListを「右寄せ」にしたい
少し深いですが、グラフィック階層をたどっていくとSkinnableComboBoxTextFieldがあります。
そのhalignを"right"に設定するといいのではないでしょうか。 Code: {curl 8.0 applet} |
|||||
04-10-2014, 11:53 AM,
|
|||||
|
|||||
RE: ComboBoxのListを「右寄せ」にしたい
blackwoodさん
勉強になりました。 ありがとうございます。 できましたので 下記のようにまとめてみました。 {let modelefaultListModel = {DefaultListModel "red", "green", "blue" } } {def cbo-length = 100px} {def cbo = {ComboBox width = cbo-length, control-appearance-changeable? = true, data-model = model, list-item-creation-proc = {proc {val:any}:ListItem {return {ListValueItem val, || 選択肢の右寄せ設定 label = {VBox halign="right", width = cbo-length - 26px, {value val} } } } } } } || 選択した値の右寄せ設定 {let ui:SkinnableComboBoxUI = cbo.ui-object asa SkinnableComboBoxUI} {let g1:{Iterator-of Graphic} = ui.graphical-children} {let g2:any = {g1.read-one-as-any}} || g2がFrame {let g3:{Iterator-of Graphic} = g2.graphical-children} {let g4:any = {g3.read-one-as-any}} || g4がGrid {let g5:{Iterator-of Graphic} = g4.graphical-children} {let g6:any = {g5.read-one-as-any}} || g6がSkinnableComboBoxTextField {set g6.halign = "right"} {Frame color = "black", cbo } |
|||||
04-10-2014, 12:34 PM,
(This post was last modified: 04-10-2014, 12:37 PM by umemura.)
|
|||||
|
|||||
RE: ComboBoxのListを「右寄せ」にしたい
blackwood さんのご指摘通り、SkinnableComboBoxTextField が表示されているようですね。
下記のオープンコントロールのファイルを参照したところ、 SkinnableComboBoxUI.text-field で定義されていました。 ■SkinnableComboBox C:\Program Files\Curl Corporation\Surge\9\ide\gui\controls\ui-skinnable skinnable-list-control-uis.scurl(1500行目あたり以降) ただ SkinnableComboBoxUI.text-field は、private 定義なので、 このフィールドに対してアクセスできる focus-object から取得すればよさそうです。 Code: {def cbx = {ComboBox "aaa", "bbb"}} このオープンコントロールには、いろいろなソースが公開されているので、 カスタマイズする際には参考になりますね。 |
|||||
04-10-2014, 03:16 PM,
|
|||||
|
|||||
RE: ComboBoxのListを「右寄せ」にしたい
umemuraさん
これはすごい!ご指導ありがとうございます。 勉強&メモーです。 |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
3 Guest(s)
3 Guest(s)