Thread Rating:
  • 185 Vote(s) - 2.82 Average
  • 1
  • 2
  • 3
  • 4
  • 5
DropdownList のリスト表示のショートカット
02-21-2014, 06:06 PM,
#1
DropdownList のリスト表示のショートカット
DropdownList をクリックすると、リストが表示されますが、
これをキーボード操作で呼び出すためのショートカットは、Curlでは何に設定されているのでしょうか。

ご存知の方がいらっしゃったら教えてください。
Reply
02-24-2014, 05:34 PM,
#2
RE: DropdownList のリスト表示のショートカット

Curlでは特に定義されていないような・・・?
エクセルの場合は、Alt+↓ なので、これに合わせるようにしてみました。

ただ、グリッド内のドロップダウン(DropdownCell)の場合は、
いろいろ気をつけないといけないようです。

コードの中にコメントでも書きましたが、セルの取得方法と、
DropdownListUI.show-dropdown の呼び出しタイミングについて、
もっと良い方法があれば教えてください。

Code:
{define-class public open CustomDropdownCell  {inherits StandardDropdownCell }
  {method protected open {create-editor}:DropdownList
    def dl = {super.create-editor}
    ||下矢印キー押下で、リストを表示
    {dl.add-event-handler
        {on k:KeyPress do
            {if k.value == KeyPressValue.down and k.alt? == true
             then
                {type-switch dl.ui-object
                 case dl-ui:SkinnableDropdownListUI do
                    ||セルフォーカスが移動しないように一応コンシュ-ム
                    {k.consume}
                    ||ドロップダウンリストが格納されているセルを取得
                    ||※ わざわざparent.parent で取得している理由は、self にしてしまうと、
                    ||   最初にドロップダウンリストを作成したセル=最初にフォーカスが入ったセルに
                    ||   ポインタが張られてしまうので、
                    ||   毎回コントロールからセルを逆取得している
                    {type-switch dl.parent.parent
                     case cell:StandardDropdownCell do
                        set cell.edit-active? = true
                    }
                    ||after を利用しないと、リストのペインが中途半端な位置に表示されてしまう
                    ||(edit-active?で高さを変更している処理の途中で実行されるため?)
                    {after 0s do
                        {dl-ui.show-dropdown}
                    }
                }
            }
        }
    }
    {return dl}
  }
}

{let people:RecordSet =
    {RecordSet
        {RecordFields
            {RecordField "First", domain = String},
            {RecordField "Last", domain =
                {StandardStringDomain
                    default-value = "",
                    allowable-values =
                        {{Array-of String}
                            "","Mino","Okada","Mori"
                        }
                }
            },
            {RecordField "Age", domain = int}
        },
        {RecordData First = "Monta", Last = "", Age = 18},
        {RecordData First = "Hitoshi", Last = "", Age = 20},
        {RecordData First = "Akira", Last = "", Age = 40}
    }
}
{value
    {RecordGrid
        record-source = people,
        {RecordGridColumn "Last", cell-spec = CustomDropdownCell},
        height = 3cm
    }
}
Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  DropdownList へのListValueItem の設定方法は? umemura 1 2,836 02-02-2014, 07:13 PM
Last Post: dyoshida
  選択後の DropdownList のラベルをカスタマイズしたい umemura 0 2,871 04-02-2013, 05:42 PM
Last Post: umemura
  DropdownList でラベルが選択できない umemura 1 3,415 02-04-2013, 03:49 PM
Last Post: usami
  How to measure ListValueItem.label width in Dropdownlist kingcesc 1 2,941 11-15-2012, 12:07 PM
Last Post: kingcesc
  DropdownList のリストを表示 umemura 4 4,595 11-21-2011, 10:12 AM
Last Post: c-s
  DropdownList のボタンが欲しい umemura 2 3,907 11-21-2011, 10:08 AM
Last Post: c-s
  Dropdownlist: height changes when selected? swan 2 4,335 07-27-2011, 01:32 PM
Last Post: swan
Forum Jump:


Users browsing this thread:
1 Guest(s)