4D v15

On Scroll フォームイベント

ホーム

 
4D v15
On Scroll フォームイベント

On Scroll フォームイベント  


 

以前の4Dのバージョンでは、ピクチャー変数またはフィールドのスクロールはOn Picture Scroll フォームイベント(値59)を通して管理することができました。

4D v15では、この種のイベントの管理がリストボックスオブジェクトまで拡張されました(以下参照)。その結果として、On Picture Scroll フォームイベントはOn Scroll と改名され、リストボックスおよびプロパティリストに対しても使用できるようになりました。ピクチャーに対するこのイベントの動作は変わりません。

互換性に関する注意:
以前のバージョンの4DでのOn Picture Scroll フォームイベントの実装と、新しいのOn Scroll 実装について二つの小さな変更点があります:

  • On Picture Scroll はオブジェクトメソッドとフォームメソッドにおいて生成されました(フォームプロパティレベルでのチェック、あるいはチェックを外すことはできませんでした)。統一性のために、4D v15以降、On Scroll イベントはオブジェクトメソッドにおいてのみ生成されます。フォームメソッドでピクチャースクロールイベントを管理しているアプリケーションを変換した場合、そのコードを適切なオブジェクトメソッドへと移す必要があります。
  • イベントスタックにおいては、On Picture Scroll を他のユーザーイベント(例えばOn Click等)の前に呼び出すことは可能です。On Scroll は常に他のユーザーイベントの後に生成されます。

4D v15On Scroll イベントは二つのスクロール可能なオブジェクトに対して使用可能です:

  • "トランケート(中央合わせなし)"フォーマットのピクチャーフィールドまたは変数(既に以前の4DのバージョンからOn Picture Scroll という名前で使用可能)。
  • リストボックス(4D v15から)

デフォルトでは、オブジェクトに対してのイベントはプロパティリスト内ではチェックされていません。

On Scroll フォームイベントはユーザーがフォームオブジェクトを、それが含まれるエリア内にてスクロールした瞬間に生成されます。イベントはスクロールがユーザーのアクション(スクロールバー、またはマウスホイールやキーボードの使用)の結果である場合においてのみ生成されます。オブジェクトがOBJECT SET SCROLL POSITION コマンドの実行の結果スクロールされた場合には生成されません。

このイベントはスクロールにアクションに関連する他の全てのイベント(On ClickedOn After Keystroke、等)のあとにトリガーされます。

このイベントはオブジェクトメソッドないにおいてのみ生成されます(フォームメソッド内では生成されません)。

例題  

リストボックスで選択されたセルの周りに赤い長方形を描画し、リストボックスがユーザーによって垂直方向にスクロールされた場合には、その長方形を一緒に移動させたい場合を考えます。その場合、リストボックスのオブジェクトメソッドに対して以下のように書きます:

 Case of
 
    :(Form event=On Clicked)
       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw)
       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2)
       OBJECT SET VISIBLE(*;"RedRect";True)&NBSP//赤い長方形を初期化
       OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2)
 
    :(Form event=On Scroll)
       LISTBOX GET CELL POSITION(*;"LB1";$col;$raw)
       LISTBOX GET CELL COORDINATES(*;"LB1";$col;$raw;$x1;$y1;$x2;$y2)
       OBJECT GET COORDINATES(*;"LB1";$xlb1;$ylb1;$xlb2;$ylb2)
       $toAdd:=LISTBOX Get headers height(*;"LB1") //オーバーラップしないためにヘッダーの高さを取得
       If($ylb1+$toAdd<$y1) & ($ylb2>$y2//リストボックス内にいるとき
  //単純かのため、ここではヘッダーのみを扱います
  //実際にはスクロールバーに加え、
  //水平方向のクリッピングも管理しなければなりません。
          OBJECT SET VISIBLE(*;"RedRect";True)
          OBJECT SET COORDINATES(*;"RedRect";$x1;$y1;$x2;$y2)
       Else
          OBJECT SET VISIBLE(*;"RedRect";False)
       End if
 
 End case

結果として、赤い長方形はリストボックスのスクロールに沿って移動します:

 
プロパティ 

プロダクト: 4D
テーマ: ランゲージ

 
履歴 

 
タグ 

.

 
ARTICLE USAGE

4D v15 - アップグレードリファレンス(Rリリース版) ( 4D v15)

Parent of : On Scroll フォームイベント ( 4D v15)