【ご質問】
レコードグリッドセルにて拡張したセルをフォーカスアウトすると
イベントが複数回発生してしまいます。
解決するにはどうしたらよいでしょう。
【回答】
RecordGridはさまざまなコントロールが複雑に絡み合って構成されております。
直接セル内のTextFieldに対してFocusIn、FocusOutのイベントを
設定しても意図した通りのイベントの発生となるとは限りません。
RecordGrid内でスクロールされた場合や、クリックされた場合、
再描画する必要がある場合などにrefresh-dataメソッドが呼ばれ、
その中でRecordGridCellが使い回しされ、RecordGridのセルに当てはめられていきます。
その際にそのセルの中で使われているTextFieldに
FocusIn、FocusOutのイベントが付いている場合、複数回のイベントが発生します。
このような状況でセル間のフォーカスが入った、出て行った事を通知する
RecordGridCell.note-grid-focus-in/RecordGridCell.note-grid-focus-out
メソッドが用意されています。
上記メソッドを使用することで実現することが可能かと思われます。
詳細は以下のサンプルをご参照ください。
{curl 6.0,7.0,8.0 applet} {define-enum public Rank {let records:RecordSet = {method public {note-grid-focus-in}:void {let record-grid:RecordGrid = {on FocusIn do {View |