Thread Rating:
  • 301 Vote(s) - 2.71 Average
  • 1
  • 2
  • 3
  • 4
  • 5
F2キーが効かない?
03-20-2014, 04:01 PM, (This post was last modified: 03-20-2014, 04:16 PM by umemura.)
#1
F2キーが効かない?
画面に対して「F2キー」が押されたら、ある処理を実行する、という機能を実装しているのですが、
レコードグリッドのセルにフォーカスがあるときにだけ、その処理が実行されない、という問題が起きています。

ヘルプを読んだところ、「レコードグリッド」ところに、F2キーを押して編集状態にする云々、という記述があり、
どうやら、セルにフォーカスが入った際に全選択の状態になるため、
F2キーを押すと、選択状態がクリアされ、カーソルが、セルの最後の位置に来る、という機能があるようです。

オープンコントロールを見たところ、SkinnedSRGTextFieldFeel という処理の中で、
セルの中で現在の選択状態を判断して、イベントをconsumeしているようなのですが、
セル内が空文字の場合、常にこの条件に当てはまってしまい、
常にF2キーの押下イベントが握りつぶされてしまうのようなのです。

カスタムセルのオーバーライドなら最低限の知識はあるのですが、
このルックアンドフィールの反映方法がよくわからず、
知っている方がいらっしゃったら教えてください。

Code:
{define-class public open CustomSkinnedSRGTextFieldFeel
  {inherits SkinnedSRGTextFieldFeel}

  {method public open {on-key-press ev:KeyPress}:void
    ||F2キーが押されても、セルに値がなければ無視
    {if-non-null ui = self.ui-object asa #SkinnableTextFieldUI then
        let constant rng:StringDataModelWritableRange =
            (ui.control asa TextField).selected-range
        {switch ev.value
         case KeyPressValue.f2 do
            {if 0 == rng.data-model.size then
                {return}
            }
        }
    }
    {super.on-key-press ev}
  }

}


{def rs =
    {RecordSet
        {RecordFields
            {RecordField "data1", default-value = ""},
            {RecordField "data2", default-value = "aaa"}
        },
        {RecordData}
    }
}

{let rg:RecordGrid =
    {RecordGrid
        record-source = rs
    }
}
{def vb = {VBox {TextField}, rg} }


{value vb}


{do
    ||F2 キーの押下イベント
    def handler =
        {on Action do
            {popup-message "F2 が押された"}
        }
    def key-accel = {KeyAccel key-accel-string = "F2", handler}
    def fm = {vb.get-focus-manager}
    {fm.add-key-accel key-accel}
}



{do
    || 上記でカスタマイズした セルのテキストフィールド用フィールをインストール
    || ※FIXME! この記述では正しく反映されていない
    def look-and-feel = {StyledLookAndFeel}
    {look-and-feel.register-control-feel SRGTextField, CustomSkinnedSRGTextFieldFeel}
    def style-sheet =
        {get-default-style-sheet}
    {install-style-sheet
            style-sheet,
            look-and-feel = look-and-feel
    }
}




Messages In This Thread
F2キーが効かない? - by umemura - 03-20-2014, 04:01 PM
RE: F2キーが効かない? - by dyoshida - 03-23-2014, 07:37 PM
RE: F2キーが効かない? - by umemura - 03-24-2014, 09:58 AM
RE: F2キーが効かない? - by umemura - 03-27-2014, 02:57 PM
Forum Jump:


Users browsing this thread:
2 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('1057')