StandardStringCell.create-editor では、self を使わないこと - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Blogs (https://communities.curl.com/forumdisplay.php?fid=17) +--- Forum: Tech blog (https://communities.curl.com/forumdisplay.php?fid=18) +---- Forum: Baison log (https://communities.curl.com/forumdisplay.php?fid=27) +---- Thread: StandardStringCell.create-editor では、self を使わないこと (/showthread.php?tid=1058) |
StandardStringCell.create-editor では、self を使わないこと - umemura - 03-24-2014 ★point StandardStringCell.create-editor で自分自身(StandardStringCell)のインスタンスを取得するには、 get-grid-cell プロシージャを利用すること たとえば、セルにフォーカスが入ったら、そのセルを強調表示するために、 背景色をつけたい、と思って、 下記のような記述をしても、うまくいきません。 Code: {define-class public open CustomStringCell {inherits StandardStringCell } 原因は、StandardStringCell.create-editor の中で、セルのインスタンスを取得している方法が self だから。 create-editor は、そのカラムのなかの、いずれかのセルにファーカスが入るなどして、 最初に要求されたときだけ呼ばれるメソッドなので、 このメソッドのなかでself を利用してしまうと、最初のセルにポインタが張られてしまい、 プログラマが意図する、「フォーカスが入ったセル」ではなくなってしまいます。 意図した振舞いをさせるには、下記のように、get-grid-cell を利用して、 毎回セルを再取得すると良いようです。 Code: {define-class public open CustomStringCell {inherits StandardStringCell } また、この方法は、StandardDropdownCell でも同様です。 |