4D Write v16

WR ON EVENT

ホーム

 
4D Write v16
WR ON EVENT

WR ON EVENT 


 

WR ON EVENT ( area ; event ; method ) 
引数   説明
area  倍長整数 in 4D Write エリア
event  倍長整数 in イベントコード
method  文字 in 実行するメソッド

説明   

WR ON EVENTコマンドは、area内でevent で指定されたイベントが発生したときに呼び出されるメソッドとしてmethod をインストールします。イベントは4D Write で処理される前に直接メソッドに渡されます。

area が0 の場合、method は、データベースが閉じられるまで、すべての4D Writeエリアに対するデフォルトのイベントメソッドとなります。エリアに特定のイベントメソッドがインストールされている場合、そのメソッドがデフォルトメソッドに代わって呼び出されます。

event引数には傍受するイベントを表す値を渡します。WR Eventsテーマの以下の定数を渡せます:

定数 コメント
wr on key 倍長整数 0 キーが押された (矢印キーやリターン等を含む)
wr on double click 倍長整数 1 ダブルクリック
wr on single click 倍長整数 2 シングルクリック
wr on triple click 倍長整数 3 3回クリック
wr on right click 倍長整数 4 右マウスボタンのクリック
wr on activate 倍長整数 5 4D Writeエリアがアクティブまたは非アクティブになった
wr on printing 倍長整数 7 ドキュメント印刷中
wr on ruler 倍長整数 8 ルーラの変更
wr on compute references 倍長整数 9 動的参照が更新された
wr on close 倍長整数 10 4D Writeエリアまたはウィンドウが閉じられた
wr on drag 倍長整数 11 オブジェクトがドラッグされた
wr on drop 倍長整数 12 オブジェクトがドロップされた
wr on timer 倍長整数 13 タイマーサイクルの終了

すべてのイベントに対しmethodを有効にするには、eventに-1を渡します。

method は呼び出されるときに、イベント発生時のエリアのステータスを表す7つの引数を受け取ります。コンパイルコマンドを使用して、これらの引数を宣言する必要があります。次の表は、methodが受け取る引数の説明です:

引数説明
$1倍長整数4D Writeエリア
$2整数Shiftキー
$3整数Alt (Windows), Option (Mac OS)
$4整数Ctrl (Windows), Command (Mac OS)
$5整数イベントタイプ
$6整数イベントタイプにより異なる
$0倍長整数メソッドが値を返す場合

$1にはイベントが発生したエリアのIDが渡されます。$2, $3, そして$4にはイベント発生時にモディファイアキーが押されていたかどうかを示す値が渡されます。値が0の場合、キーは押されていません。値が1の場合、キーは押されています。$5にはイベントタイプが渡されます。$6はイベントのタイプにより異なります。

メソッド変数とevent引数 ($6)

  • event=0の場合、$6にはイベントを呼び出したキーのコードが渡されます。
  • event=1または2の場合、$6は参照がシングルまたはダブルクリックされたことを示します。$6=0のとき、参照は選択されていません。$6=1のとき、参照は選択されています。
    Note:
    以下のいずれかのアクションが実行された場合、methodはクリックを管理する前に呼び出されることがあります:
    • 参照 (ハイパーテキストリンク、4DまたはHTML式) をシングルまたはダブルクリックした。
    • 右クリック (Windows) または Control-クリック (Mac OS)。Mac OSでは、クリック時にControlキーを押すとポップアップメニューが表示されます。
      Windowsでは右クリックを行うドロップダウンメニューが表示されます。両ケースともデータベースフィールドを表示します。互換性のためにイベント4 (wr on right click) の利用をお勧めします。
  • event=3の場合、$6は段落の選択に関連します。ダブルクリックで呼び出されるイベントメソッドがインストールされておらず、これが$0:=1で傍受されていない場合、トリプルクリックが参照上で行われることがあります。この場合、$6に意味はありません。
  • event=4の場合、$6は (クリックされた場所に基づく) 表示されようとしているコンテキストメニューのタイプを示します:
    • $6=1の場合、タイプ1のコンテキストメニュー (ヘッダー/フッター内のクリック) が表示されます。
    • $6=2の場合、タイプ2のコンテキストメニュー (ボディエリアのテキスト内のクリック) が表示されます。
    • $6=3の場合、タイプ3のコンテキストメニュー (ボディエリアのピクチャのクリック) が表示されます。
  • event=5の場合、$6はエリアがアクティブか非アクティブかを示します。$6=0の場合、4D Writeエリアは非アクティブです。$6=1の場合、4D Writeエリアはアクティブです。
  • event=7でプリントジョブが差し込み印刷の場合、$6は使用されているテーブル番号を示します。プリントジョブが差し込み印刷でない場合、$6は0となります。
  • event=8の場合 (ルーラー上でアクションが行われた)、$6は意味のある値を返しません。ルーラー上のアクションを許可したくない場合、$0に1を設定します。
  • event=9の場合、$6はドキュメント内でどこのマージンがリセットされたかを示します。$6=0の場合、マージンはボディ内でリセットされました。$6=1の場合、マージンはヘッダでリセットされました。$6=2の場合、マージンはフッタでリセットされました。
  • event=13の場合、ユーザーアクションに関わらず、methodが自動でXtick毎に呼び出されます (1 tick = 1/60秒)。タイマーは特に編集中のドキュメントを自動でバックアップするセキュリティメカニズムを実装するために使用されます。デフォルトでタイマーは3600 tick (60秒) 毎にイベントを生成します。この周期はWR SET AREA PROPERTYコマンドを使用して変更できます。メソッドは繰り返し実行されるため、アプリケーションを遅くしないよう、methodが時間のかかる処理を行わないようにしなければなりません。
イベントをフィルタするにはmethodを関数として使用し、0または1を返します。これにより、4D Writeで特定の文字を無視するようにすることができます。

$0に1を設定すると、メソッドは特定のイベントをトラップします。$0を0に設定するとイベントはトラップされません。例えば、ドキュメント中に"@"を入力させたくない場合、ドキュメント中に現れるすべての文字をフィルタします。$6変数が“@”の文字コードと同じであれば、$0に1を設定します。

Note: すべての文字をフィルタすると、キーが押されるたびにメソッドが実行されるため、動作は遅くなります。

例題  

以下の例題では、イベントのタイプに基づきアクションを実行します:

フォームメソッド:
 If(Form event=On Load)
    WR ON EVENT(Area;wr on key;"ProcName")
  `すべてのキーストロークに対し呼び出す
    WR ON EVENT(Area;wr on activate;"ProcName")
  `エリアのステータスをチェック
    DISABLE MENU ITEM(2;1)
  `フォントを変更メニュー項目を無効に
    WR SET AREA PROPERTY(Area;wr timer frequency;54000)
  `15 分毎にタイマーイベント
    WR ON EVENT(Area;wr on timer;"ProcName")
  `自動保存を設定
 End if


ProcName メソッド:
 Case of
    :($5=wr on key)
  `キーストロークを傍受
       If($6=199) | ($6=200)
  `対応するASCIIコード
          BEEP
          $0:=1
       Else
  `4D Writeにイベントを処理させる
          $0:=0
       End if
    :($5=wr on activate)
  `エリアのステータスの変更を傍受
       If($6=0)
  `エリアが非アクティブなら
          DISABLE MENU ITEM(2;1)
       Else
          ENABLE MENU ITEM(2;1)
       End if
    :($5=wr on timer)
  `15分毎に
       $DocName:="C:\\Temp\\Docs\\TheArea.4W7"
       WR SAVE DOCUMENT(TheArea;$DocName;"4WR7")
 End case



参照 

WR Get on event method
WR ON ERROR

 
プロパティ 

プロダクト: 4D Write
テーマ: WRユーティリティ
番号: 89174

 
履歴 

変更: 4D Write 2004.1

 
ARTICLE USAGE

4D Write ( 4D Write v16)