テキストフィールドの右クリックメニューのカスタマイズ - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: テキストフィールドの右クリックメニューのカスタマイズ (/showthread.php?tid=1197) |
テキストフィールドの右クリックメニューのカスタマイズ - umemura - 01-20-2015 テキストフィールド(TextField)を非活性(enabled?=false)の状態で、 右クリックメニューから、文字列をコピーできるようにしたいです。 通常では、テキストフィールドが非活性の状態では、 すべての右クリックのメニューが押せません。 RecordGrid であれば、context-menu-at というメソッドがありましたが、 テキストフィールドではどのようにカスタマイズするのでしょうか。 RE: テキストフィールドの右クリックメニューのカスタマイズ - umemura - 01-20-2015 on-context-menu-event メソッドのオーバーフライドでできそうですね。 できれば、context-menu-for-text-field のMenuPane を直接操作したいのですが、 どのような仕組みになっているのかわからなかったのであきらめました。 Code: {import * from CURL.DESKTOP.CLIPBOARD} RE: テキストフィールドの右クリックメニューのカスタマイズ - dyoshida - 01-20-2015 非活性に見せるためにコントロールを無効化(enabled?=false)すると、非活性どころか 完全に無効になる感があるので編集不可(editable?=false)にするのではどうでしょうか。 editable?=falseに設定するとフォント色などを自動的に非活性?に見えるような色に変更する カスタムTextFieldなら比較的簡単そうな感がありますが。 RE: テキストフィールドの右クリックメニューのカスタマイズ - umemura - 01-21-2015 コメントありがとうございます。 非活性のコントロールには、タブキー遷移をさせたくないという要件もあります。 editable?=false かつ、takes-focus?=false でもいいのかもしれませんが、 文字列選択ができません。 (selection-context-active? ゲッターを無理やりtrueに固定すると、 文字列選択だけはできますが、右クリックメニューは非活性のまま) 特に、Dialog 内の複数コントロールを、一括で非活性にする場合などの互換性などを考慮して、 あえて enabled?=false を採用しています。 あえてね。△ チェックボタンや、ラジオボタンなど、コントロール系のすべてにeditable?があればよいのですが・・・。 editable?=falseの設定でも、右クリックメニューが非活性になってしまうのは変わりないようですし、 ちなみに、enabled?=false だと、デフォルトではご指摘のように文字が薄くなってしまうので、 disabled-color="black" としています。 RE: テキストフィールドの右クリックメニューのカスタマイズ - dyoshida - 01-21-2015 umemura さんなのでenabled?=false で無効化しているのは非活性にする以外になにか縛りがあるのだろうとは思っておりましたが 編集不可や非活性にするために単純にenabled?=false にしたものの、他の機能まで無効になって行き詰るという話をよく耳にする ので、他に方法があるならまずそちらを!ということで書いてみました。 たしかに、コントロール系のすべてにeditable?のようなGUIから値を変更させないようにするオプションは欲しいですね。 ちなみに、editable?=falseにすると右クリックメニューが非活性になるわけではなく、ペーストができなくなるのでメニュー項目で 唯一活性化してる「ペースト」が非活性となっているだけで、文字列を選択すれば「コピー」の項目が活性化するのでは。 (takes-focus?=falseも指定すると、マウスクリックしてもフォーカスを得られない→文字列が選択できない →コピーできないので「コピー」の項目も活性化しないとなってしまいますが) |