nsfl10n

Lotus Notes/Domino のブログ。nsf:Notes Storage Facility。l10n:Localization。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告|
  3. トラックバック(-)|
  4. コメント(-)

リッチテキストフィールドの入力チェック

Validating Rich Text Fields

 リッチテキストフィールドの入力チェックをするには、いくつかの方法があるが、何を選ぶかは要件次第。

 最初は、フィールドにどんな値が入ってもチェックできる方法。これは、テキストでも添付ファイルでも、db/view/文書リンク、半角スペースであってもチェックできる。これは、Lotusscriptを使ってquerysaveでチェックすることになる。


Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Call Source.GotoField("Body")
   On Error Resume Next
   Call Source.SelectAll
   Call Source.DeselectAll
   On Error Goto 0
   If Err <> 0 Then
      Err = 0
      Msgbox "Bodyフィールドに値を入れてください。", 16, "入力エラー"
      Continue = False
      Exit Sub
   End If
End Sub



 このコードは、フィールド(例だとbody)に飛んで、フィールドの内容を選択/選択解除しようとすることでエラーを検知します。これで、フィールドが空だったらエラー("文書コマンドが有効ではありません")となる原因になる。そして、このエラーにトラップを仕掛けて、エラーだったらユーザにメッセージを表示し、continue=falseで文書の保存を中止する。

 個人的には、次の2つの理由からこの方法があまり好きではない。第一に、UIアクションが続くこと。もし、このフォームが縦長のフォームで、ユーザーが一番上を見てて、bodyフィールドが一番下にあった場合、source.gotofieldがユーザーの画面を一番下のリッチテキストフィールドまで押し下げてしまう。このフィールド名(source.currendfield)を保存でき、終わったらそこのフィールドにユーザーを戻しても、ジャンプはまた発生するだろう。さらに、リッチテキストフィールド全体が選択/選択解除されるため、もしユーザーがいくつかの段落を入力してたら、選択/選択解除時に画面がチカチカすることになってしまう。ユーザーは疑問に思うだろう("私の書いたテキストになにが起こったんだろう?")。

 他にリッチテキストフィールドの入力チェックをする方法として、隠しフィールドでチェックするというのがある。リッチテキストフィールドは、input validationイベントを持ってないから、直に入力チェックすることは出来ない。しかし、他のフィールドに仕掛けることは可能だ。リッチテキストの下にフィールド(入力チェックは上から下へ、左から右へ行われるからだ)を配置して隠してしまえばいい。(実際、フィールドを隠すのをお奨めする) このフィールドは編集可能でないとだめだ(validationイベントを捕まえる唯一の方法だ)。そして、どんな種類のフィールドでもOKだ(テキストか数値が一般的だが)、そのほかの内容は問題にならない(デフォルト値は放っておけるし、input translationには何も影響しない)。

 入力チェックにおいて、なにをチェックしたいかによるが、最初に、テキストを入力しないといけないだろう。そして、正しいテキストであるべきだ - スペースや改行はカットされないだろう。(リッチテキストに書かれたシングルスペースは上記の処理はスルーするだろう) このinput validationは、リッチテキストにテキストがないときに有効だ。


@If(@Trim(@Abstract([TextOnly]; 100; ""; "Body")) = ""; @Failure("bodyフィールドに値を入力してください"); @Success)



 もし、@abstractに馴染みがなければ、ヘルプを見てください。bodyフィールドの最初の100文字を取り出して、スペースを取り除きます。もし文字列が空なら、リッチテキストフィールドにテキストはありません。

 しかし、もし添付ファイルはあるけどテキストがない場合はどうなるか。その場合、添付ファイルがくっついているかどうかのチェックを簡単に加えることが出来る。


@If(@Attachments != 0; @Success; @Trim(@Abstract([TextOnly]; 100; ""; "Body")) = ""; @Failure("bodyフィールドに値を入力してください"); @Success)



 注意して欲しいのが、@Attachmentによるチェックは、文書に対するチェックだと言うことだ。必ずしも問題のあるフィールドというわけではないのだ。もし複数のリッチテキストフィールドがあるなら、この入力チェックは裏目に出るかも知れない。チェックしたいフィールドとは別のリッチテキストフィールドに添付ファイルを貼り付けてるかも知れないからだ。

 これらの方法の違いはなんだろうか。まず1番目のものでは、リッチテキストフィールドにあるものはなんでもチェックできる。半角スペースであっても。そして、私が特に好きでないユーザーインタフェースへの「干渉」があります。 2番目のものでは、1つ以上の正しい文字列がある場合にだけ、チェックできるでしょう--どんなスペース、タブも、または復帰改行も許容されないでしょう。 3番目のものでは、正しい文字列があるか、または添付ファイルががドキュメントのどこかにあると、チェックできるでしょう。

 私の個人的な好みは2番目の方法を使用することです。 ユーザがテキスト以外にリンク、添付ファイルまたは何かを入れているなら、自分達はそれらがフィールドに加えた他の何を示すかためにほぼ常に2、3の言葉を付け足します。そして、これらの付け足された言葉を使えば、入力チェックを通過させることができるでしょう。
スポンサーサイト
  1. 2005/05/11(水) 02:08:02|
  2. Designer|
  3. トラックバック:0|
  4. コメント:2
<<ロータススクリプトからHTMLコードを取得するには | ホーム | 全DBを一括管理する>>

コメント

@Abstractの方法は昔から知られていますが、Notes6から@Textでもリッチテキストの変換が可能になっているようです。
  1. 2005/05/12(木) 08:11:06 |
  2. NDOMINO-S #-
  3. [ 編集]

コメントありがとうございます。
そうでしたか。
私はかなり長い間RTフィールドの入力チェックはできないと思ってました。。。
  1. 2005/05/13(金) 03:32:56 |
  2. chate #-
  3. [ 編集]

コメントの投稿

管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://nsfl10n.blog9.fc2.com/tb.php/5-2b38ee9e
05 | 2017/06 | 07
Sun Mon Tue Wed Thu Fri Sat
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

Search

Featured Entries

Recent Entries

Recent Comments

Recent Trackbacks

Archives

Category

Links

Ads

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。