Curl Global Community
セルをマウスクリックした時の値の選択状態制御 - 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=1274)



セルをマウスクリックした時の値の選択状態制御 - kay - 11-09-2015

グリッドのセルをクリックした時に、値が全選択された状態にするにはどのようにしたらよいでしょうか?

現在は、セルをクリックするとクリックした桁にキャレットが表示されるようになっています。
Tabキーでフォーカス移動してきた場合は値が全選択された状態となっており、
こちらの動作に統一するための修正となります。

カスタム セル クラスの create-editor で PointerPress、FocusIn のどちらか、
または両方のイベント ハンドラーを追加してみましたが、
一瞬全選択された後選択が解除されてキャレットが表示される動作となってしまいました。

|| フォーカス時常に値を選択する
{editor.add-event-handler
{on eTongueointerEnvelopeEvent do
{type-switch e.contents
case ppTongueointerPress do
{editor.select-all}
{e.consume}
}
}
}

{editor.add-event-handler
{on e:FocusIn do
{editor.select-all}
{e.consume}
}
}

実現方法についてご教示下さい。


RE: セルをマウスクリックした時の値の選択状態制御 - dankom - 11-09-2015

カスタムセルクラス自身にPointerReleaseイベントに対してイベントを
張り付けてはどうでしょうか。

Code:
{define-class public open AmountCell {inherits StandardStringCell}
  
  {constructor public {default}
    {construct-super}
    
    {self.add-event-handler
        {on e:PointerEnvelopeEvent do
            {type-switch e.contents
             case pp:PointerRelease do
                {if self.current-editor != null then
                    {self.current-editor.select-all}
                    {e.consume}
                }
            }
        }
    }
  }
}



RE: セルをマウスクリックした時の値の選択状態制御 - kay - 11-09-2015

ご回答ありがとうございます。
PointerRelease なんですね・・・。
おかげさまで、期待通りの動作を実現できました。


最終的に、少し手を加えて次のようになりました。
Code:
|| マウスクリック時に全選択状態にする    {self.add-event-handler        {on e:PointerEnvelopeEvent do            {type-switch e.contents             case pp:PointerRelease do                {if self.current-editor != null then                    || 選択状態でクリックした時は選択解除する                    {if self.current-editor.selection.empty? then                        {after 0s do                            {self.current-editor.select-all}                        }                    }                }            }        }    }


ありがとうございました!