当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2017年12月31日日曜日

LotusScriptによるイベントの確認

皆さん、こんにちは。

2017年もついに終わりを迎えますね。

今年は皆さんにとってどんな一年だったでしょうか?
私は後半、自信を取り巻く環境が大きく変わりました。まだ、その変化に自分自身が付いていけてない部分がありますが、年が明けたらそうも言ってられないのでなんとか気持ちを切り替えていこうかと思います。


さて、今年最後の記事は、
IBM Verse ExtensibilityにしようかXPagesにしようか、Watson Work Spaceにしようか等々色々迷いましたが、
NotesエンジニアはまだまだLotusScriptが好きだろうという事で
LotusScriptでのイベントの確認をやってみます。
何気に書いてなかったんですね。

ただ、普通にQueryOpenとかQueryCloseとかについて書いても面白くないので、
今回はフィールドのイベントであるOnBlurとOnChangeについて検証してみます。

いずれのイベントも元々はWebで利用するためのものです(下図参照)が、
OnBlurイベントのデフォルト設定
「実行」と書いてある場所を"Web"から"クライアント"に変更すると、右側の"JavaScript"の選択肢に"LotusScript"が追加され、Notesクライアントでの動作の場合、LotusScriptで記述できるようになります。

では、このOnBlurとOnChangeはどういったイベントなのかを見ていきましょう。

Designerヘルプによると、
OnBlurは
編集モードでカーソルがフィールドから抜け出たときに発生します。
注: このイベントは R6 で新しく追加されました。

とあります。
あれ?フィールドから抜け出たときのイベントなら「Exiting」があったよね?と思う方もいることでしょう。
そこでExitingについてのヘルプを見てみると、
編集モードでカーソルがフィールドから抜け出たときに発生します。
注: Release 6 以降では、OnBlur を使用することをお勧めします。

とあります。
うん、やはり同じ意味のイベントですね。
ですが、R6以降はOnBlurを使ってね。とあります。
R5以前からIBM Notes/Dominoを利用している方で、すでにR6以降にバージョンアップした方は修正するようにしましょう。

OnChangeイベントの方はどうでしょう?
編集モードでフィールドを変更したときに発生します。
注: このイベントは R6 で新しく追加されました。

このイベントは、フィールドにフォーカスがあたっている間に値が変更され、その後フィールドがフォーカスを失った場合に発生します。
とあります。
つまり、OnBlurと同時期に発生するイベントですが、フィールドの値が変更されていないとイベントは発生しないという事になります。


では、フィールドの値が変更されるとはどういったことを意味するのでしょうか?
テキストフィールド、数値フィールド、日付フィールド、チェックボックスフィールド等のOnBlurイベント、OnChangeイベントに

Sub Onblur(Source As Field)
    Msgbox "<フィールド名> <イベント名>", 0 + 64, "イベントテスト"
End Sub


といった形でLotusScriptを記述してみました。
すると、
ただ単にフィールドをクリックして、別のフィールドに移動した場合、
OnBlurのイベントが実行されて、メッセージボックスが表示されました。
フィールド間を移動しただけの時

続いて、フィールドの値を変更してから別のフィールドに移動してみたところ、
OnBlurイベントが発生してメッセージボックスが表示された後に、OnChangeイベントが発生して対応するメッセージが表示されました。
フィールドの値を変更してから別のフィールドに移動した時

フィールド間の移動は、マウスクリックでもいいですし、キーボードでTabキーを押したときでも反応します。入力デバイスを意識しなくていいのは助かりますね。

また、チェックボックスフィールドやラジオボタンフィールドで選択肢を変更しても反応するし、 テキストフィールドで文字列を入力してもOnChangeイベントが反応してくれるのも嬉しいポイントです。

こういったイベントはWebでは当たり前に行えているのですが、LotusScriptだとできないのかな?と思い込んでいた人もいるのではないかと思います。

まだまだLotusScriptは使ってない機能が多数あると思いますので、是非探してみてください。
きっと今あるアプリケーションをレベルアップできると思います。


それでは今年はこの辺で。
良いお年を・・・



Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: