Thread Rating:
  • 472 Vote(s) - 2.79 Average
  • 1
  • 2
  • 3
  • 4
  • 5
入力チェックについての質問です
04-15-2014, 11:31 AM,
#8
RE: 入力チェックについての質問です
こんにちは!

久しぶりにCurlの入力チェックについて挑戦してみた結果を報告します

★実現したい動作
・データ保存時(DB登録)各セルに入力チェックをつけたい

★実装機能
・cell-specを使用し、各セルFocus-out時に入力チェックを実装させた!

★問題点
・入力チェックに引っかかる文字を入力し「保存」ボタン押下時に
Focus-outにならないため入力チェックが動作しない

★解決策
・refresh-dataを使用しセルの情報(record-indexとfield.nameとcell-data)を変数に保存し
「保存」ボタン押下時にfield.nameに応じた入力チェックをcell-dataに適用し
エラー時にrecord-index行を強調表示する

=========
現在はこのような対応で一時解決?までいたりました!
ありがとうございます!

・・・しかし!
新たな問題点が発覚・・・
現在セルのfocus-out時にエラーの場合
エラーセルにフォーカスを戻し、強調表示をしているのですが、
エラーセルにフォーカスが戻らない現象が起きました。

=オペレーション手順=
★正しい動作
①カラム:A 1行目のセルに「@」を入力
②スクロールをせず隣のセルを選択
③ポップアップでエラーの旨を表示
④A-1セルにフォーカスが戻る

★問題動作

①カラム:A 1行目のセルに「@」を入力
②スクロールをしてカラム:A 9行目のセルを選択
③ポップアップでエラーの旨を表示
④A-1セルにフォーカスが戻らずに
 ②で選択したセルにフォーカスが移ってしまう
 強調表示されるはずのセルが違うセルになっている

上記での問題は考えてみて時間がかかるようでしたら再び質問として建てようと思っています!
Code:
{import * from CURL.LANGUAGE.REGEXP}

{define-class public Check-at-mark {inherits StandardStringCell}
  {constructor public {default}
    {construct-super}
  }
  ||置換前
  field before_text:String=""

  ||置換後(数字)
  field after_text:String = ""

  ||チェックする値(数字)
  field chk_at-mark:String = "@"

  {method public {note-grid-focus-out}:void
    {super.note-grid-focus-out}

    ||フォーカスを受けていたセルの値を保存する(置換前)
    set self.before_text = {String {super.get-data}}

    ||置換する(@マーク)
    set self.after_text =
        {regexp-subst
            self.chk_at-mark
            ,self.before_text
            ,""
            ,replace-all?=true
        }

    ||判定
    {if {self.before_text.equal? self.after_text}
     then
        {unset self.background}
     else
        {popup-message "・「@」が入力されています"}
        {after 0s do {self.become-active}}
        {set self.background = "red"}
    }
  }
}

{let test_set:RecordSet=
    {RecordSet
        {RecordFields
            {RecordField "A"}
            ,{RecordField "B"}
        }
        ,{RecordData A = "1" , B = "100"}
        ,{RecordData A = "2" , B = "200"}
        ,{RecordData A = "3" , B = "300"}
        ,{RecordData A = "4" , B = "400"}
        ,{RecordData A = "5" , B = "500"}
        ,{RecordData A = "6" , B = "600"}
        ,{RecordData A = "7" , B = "700"}
        ,{RecordData A = "8" , B = "800"}
        ,{RecordData A = "9" , B = "900"}
    }
}

{let test_grid:RecordGrid=
    {RecordGrid
         record-source = test_set
        ,width  = {make-elastic minimum-size = 200 }
        ,height = {make-elastic minimum-size = 150 }
        ,{RecordGridColumn "A" ,width=80,cell-spec = Check-at-mark}
        ,{RecordGridColumn "B" ,width=80,cell-spec = Check-at-mark}
    }
}

{let hozon:CommandButton=
    {CommandButton
        label="保存"
        ,{on Action do
             {test_set.commit}
         }
    }
}

{value
    {VBox
        test_grid
        ,hozon
    }
}



Messages In This Thread
RE: 入力チェックについての質問です - by rom - 04-15-2014, 11:31 AM
Forum Jump:


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