Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

【NS Basic/Palm】EventCode処理のコツ

[開発情報]

【NS Basic/Palm】EventCode処理のコツ

  • NS BasicのEventCode処理のお約束、“SetEventHandled”命令の使い方についての解説です。

概要

NS Basic/Palmでは、EventCodeにアプリケーションボタン等のイベントを処理する事が出来ますが、普通に処理を書いただけではボタンイベントを拾う前にボタンに登録されているアプリケーションが起動してしまいます。
そこで発生したイベントを、NS Basicのプログラムコード以外に渡さない処理が必要になります。

この処理手順は簡単で、“SetEventHandled"というコードを各イベント処理の先頭に記述するだけです。
ただしこの命令は非常に危険で、通常のプログラムコード内で記述すると、ホームボタンでアプリを終了する事も、電源ボタンをOFFする事も出来なくなります。
各イベント処理の内部のみで使うようにして下さい。

コードサンプル

以下のコードをFormのEventCodeに貼り付けて実行してみるといいです。
アプリケーションボタン4のみ、わざと“SetEventHandled”を付けていませんね。
他のボタンを押したときは、プログラムの処理は続行しますが、アプリケーションボタン4を押したときは、ボタンに設定されているアプリ(例えばメモ帳)が、起動してしまうはずです。

Dim evt as Integer
Dim key as String

evt=GetEventtype()
key=getKey()
If evt=nsbKeyOrButton Then '-- Button Event
Select Case asc(key)
Case 1	'-- ボタン#1
SetEventHandled
MsgBox "アプリケーションボタン1"

Case 2	'-- ボタン#2
SetEventHandled
MsgBox "アプリケーションボタン2"

Case 3	'-- ボタン#3
SetEventHandled
MsgBox "アプリケーションボタン3"

Case 4	'-- ボタン#4(ここだけSetEventHandledが無い)
MsgBox "アプリケーションボタン4"

End Select
EndIf

注意点

その他にも、クリエのジョグダイアルを1回まわしただけでイベントが2回発生するとか、イベント処理は不具合の原因になりがちです。
これらの不具合の大半は、“SetEventHandled”を1行挿入するだけで解決できると考えていいでしょう。
私はおまじないの意味も含めて、全てのイベント処理の先頭に“SetEventHandled”を記述しています。

コメント

このページの情報に関する誤りや追加情報がありましたら、コメントをお願いします。

お名前: コメント:


表示された文字列