トップ 一覧 検索 ヘルプ RSS ログイン

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

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{category 開発情報}}
!!!【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”を記述しています。

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

{{comment}}