4D v16.3

Form event

ホーム

 
4D v16.3
Form event

Form event 


 

Form event -> 戻り値 
引数   説明
戻り値  倍長整数 in フォームイベント番号

説明   

Form eventコマンドは、現在生成中のフォームイベントタイプを示す数値を返します。通常フォームやオブジェクトメソッド内でForm eventを使用します。

4DにはForm Eventsテーマで定義された定数が用意されており、Form eventから返される値と比較することができます。

イベントには、一般的なイベント(任意のタイプのオブジェクトに対して生成される)と、特定タイプのオブジェクトのみに発生するイベントがあります。

定数 コメント
On Load 倍長整数 1 フォームが表示または印刷されようとしている
On Mouse Up 倍長整数 2 (ピクチャーのみ) ユーザーがピクチャーオブジェクト内にて左マウスボタンを離した
On Validate 倍長整数 3 レコードのデータ入力が受け入れられた
On Clicked 倍長整数 4 オブジェクト上でクリックされた
On Header 倍長整数 5 フォームのヘッダエリアが印刷あるいは表示されようとしている
On Printing Break 倍長整数 6 フォームのブレークエリアのひとつが印刷されようとしている
On Printing Footer 倍長整数 7 フォームのフッタエリアが印刷されようとしている
On Display Detail 倍長整数 8 レコードがリスト中に、あるいは行がリストボックス中に表示されようとしている
On Outside Call 倍長整数 10 フォームがCALL PROCESSによる呼び出しを受けた
On Activate 倍長整数 11 フォームウィンドウが最前面のウィンドウになった
On Deactivate 倍長整数 12 フォームウィンドウが最前面のウィンドウでなくなった
On Double Clicked 倍長整数 13 オブジェクト上でダブルクリックされた
On Losing Focus 倍長整数 14 フォームオブジェクトがフォーカスを失った
On Getting Focus 倍長整数 15 フォームオブジェクトがフォーカスを得た
On Drop 倍長整数 16 データがオブジェクトにドロップされた
On Before Keystroke 倍長整数 17 フォーカスのあるオブジェクトに文字が入力されようとしている。Get edited textはこの文字を含まないオブジェクトのテキストを返す
On Menu Selected 倍長整数 18 メニュー項目が選択された
On Plug in Area 倍長整数 19 外部オブジェクトのオブジェクトメソッドの実行がリクエストされた
On Data Change 倍長整数 20 オブジェクトのデータが変更された
On Drag Over 倍長整数 21 データがオブジェクト上にドロップされる可能性がある
On Close Box 倍長整数 22 ウィンドウのクローズボックスがクリックされた
On Printing Detail 倍長整数 23 フォームの詳細エリアが印刷されようとしている
On Unload 倍長整数 24 フォームを閉じる、あるいは解放しようとしている
On Open Detail 倍長整数 25 出力フォームまたはリストボックスに関連付けられた詳細フォームが開かれようとしている
On Close Detail 倍長整数 26 入力フォームから離れ、出力フォームに移動しようとしている
On Timer 倍長整数 27 SET TIMERコマンドで設定した時間が経過した
On After Keystroke 倍長整数 28 フォーカスのあるオブジェクトに文字が入力されようとしている。Get edited textはこの文字を含むオブジェクトのテキストを返す
On Resize 倍長整数 29 フォームウィンドウがリサイズされた
On After Sort 倍長整数 30 (リストボックスのみ) リストボックスの列中で標準のソートが行われた
On Selection Change 倍長整数 31
  • リストボックス: 現在の行や列の選択が変更された
  • リスト中のレコード: リストフォームまたはサブフォームにおいて、カレントレコードあるいはカレントセレクションの行選択が変更された
  • 階層リスト: リスト中の選択がクリックやキーストロークなどで変更された
  • 入力可フィールドや変数: クリックやキー押下により、選択されたテキストやカーソルの位置がエリア内で変更された
On Column Moved 倍長整数 32 (リストボックスのみ) リストボックスの列がユーザのドラッグ&ドロップで移動された
On Column Resize 倍長整数 33 (リストボックスのみ) リストボックスの列幅がユーザーのマウス操作によって変更された
On Row Moved 倍長整数 34 (リストボックスのみ) リストボックスの行がユーザのドラッグ&ドロップで移動された
On Mouse Enter 倍長整数 35 マウスカーソルがオブジェクトの描画エリア内に入った
On Mouse Leave 倍長整数 36 マウスカーソルがオブジェクトの描画エリアから出た
On Mouse Move 倍長整数 37 マウスカーソルがオブジェクトの描画エリア上で (最低1ピクセル) 動いたか、変更キー(Shift, Alt, Shift Lock)が押された
イベントがオブジェクトに対してのみチェックされていた場合は、マウスカーソルがオブジェクトのグラフィックエリアの中にあった場合にのみイベントが生成されます。
On Alternative Click 倍長整数 38
  • 3Dボタン: 3D ボタンの"三角"エリアがクリックされた
  • リストボックス: オブジェクト配列のカラム内においてエリプシスボタン("alternateButton" 属性)がクリックされた
    : エリプシスボタンはv15以降のバージョンでのみご利用いただけます。
On Long Click 倍長整数 39 (3Dボタンのみ) 3D ボタンがクリックされ、特定の時間以上マウスボタンが押され続けている
On Load Record 倍長整数 40 リスト更新中、更新中にレコードがロードされた (ユーザがレコード行をクリックし、フィールドが編集モードになった)
On Before Data Entry 倍長整数 41 (リストボックスのみ) リストボックスセルが編集モードに変更されようとしている
On Header Click 倍長整数 42 (リストボックスのみ) リストボックスの列ヘッダでクリックが行われた
On Expand 倍長整数 43 (階層リストまたは階層リストボックスのみ) クリックやキーストロークで階層リストの要素が展開された
On Collapse 倍長整数 44 (階層リストまたは階層リストボックスのみ) クリックやキーストロークで階層リストの要素が折りたたまれた
On After Edit 倍長整数 45 フォーカスのあるオブジェクトの内容が更新された
On Begin Drag Over 倍長整数 46 オブジェクトがドラッグされている
On Begin URL Loading 倍長整数 47 (Webエリアのみ) 新しいURLがWeb エリアにロードされた
On URL Resource Loading 倍長整数 48 (Webエリアのみ) 新しいリソースがWeb エリアにロードされた
On End URL Loading 倍長整数 49 (Webエリアのみ) URLのすべてのリソースがロードされた
On URL Loading Error 倍長整数 50 (Webエリアのみ) URLをロード中にエラーが発生した
On URL Filtering 倍長整数 51 (Webエリアのみ) Web エリアがURLをブロックした
On Open External Link 倍長整数 52 (Webエリアのみ) 外部URLがブラウザで開かれた
On Window Opening Denied 倍長整数 53 (Webエリアのみ) ポップアップウィンドウがブロックされた
On bound variable change 倍長整数 54 サブフォームにバインドされた変数が更新された
_o_On Mac toolbar button 倍長整数 55 *** 廃止予定の定数 ***
On Page Change 倍長整数 56 フォーム中のカレントページが変更された
On Footer Click 倍長整数 57 (リストボックスのみ) リストボックスあるいはリストボックス列でフッターがクリックされた
On Delete Action 倍長整数 58 (階層リストとリストボックスのみ) ユーザーが項目の削除を試みた
On Scroll 倍長整数 59 マウスやキーボードを使用して、ユーザーがピクチャーフィールドや変数の内容をスクロールした。

注: 出力フォーム用のイベントをプロジェクトフォームで実装することはできません。関連するイベントは以下の通りです: On Display Detail, On Open Detail, On Close Detail, On Load Record, On Header, On Printing Detail, On Printing Break, On Printing Footer

フォームイベントが発生すると、4Dは以下のアクションを行います:

  • まず4Dはフォーム中のオブジェクトをブラウズし、発生したオブジェクトイベントがプロパティで選択されているすべてのオブジェクトのオブジェクトメソッドを呼び出します。
  • 次に、発生したイベントに対応するフォームイベントがプロパティで選択されていれば、フォームメソッドを呼び出します。

オ ブジェクトメソッドが特定の順序で呼び出されることを期待することはできません。おおざっぱに言って、オブジェクトメソッドは常にフォームメソッドよりも 前に呼び出されます。オブジェクトがサブフォームの場合、サブフォームリストフォームのオブジェクトメソッドが呼び出され、次にリストフォームのフォーム メソッドが呼び出されます。そして4Dは引き続き、親フォームのオブジェクトメソッドを呼び出します。言い換えれば、オブジェクトがサブフォームの時、 4Dはサブフォームオブジェクト内で、オブジェクトとフォームメソッドの関係と同じルールを適用します。

On LoadOn Unload イベントを除き、発生したイベントがフォームイベントプロパティで選択されていなかったとしても、オブジェクトプロパティで選択されていればそのオブジェ クトメソッドの呼び出しが妨げられることはありません。言い換えれば、フォームレベルでイベントを有効あるいは無効にしても、オブジェクトイベントプロパ ティには影響ありません。

特定のイベントに関連するオブジェクトの数は、イベントの性質により異なります:

  • On Load イベント - On Loadオブジェクトイベントプロパティが選択されている、フォームのすべてのページのすべてのオブジェクトのオブジェクトメソッドが呼び出されます。そしてOn Loadフォームイベントプロパティが選択されていれば、フォームメソッドが呼び出されます。
  • On ActivateOn Resize イベント - これらのイベントは個々のオブジェクトには適用されず、フォームに適用されるため、オブジェクトメソッドは呼び出されません。ゆえにOn Activate フォームイベントプロパティが選択されてれば、そのフォームメソッドのみが呼び出されます。
  • On Timer イベント - このイベントは事前にSET TIMERコマンドが使用された場合にのみ生成されます。On Timer フォームイベントプロパティが選択されていると、フォームメソッドのみがイベントを受け取ります。オブジェクトメソッドは呼び出されません。
  • On Drag Over イベント - "ドロップ可"プロパティが選択されていれば、イベント中で関連するドロップ可能なオブジェクトのみオブジェクトメソッドが呼び出されます。フォームメソッドは呼び出されません。
    逆にOn Begin Drag Overイベントについては、ドラッグされているオブジェクトのオブジェクトメソッドやフォームメソッドが呼び出されます ("ドラッグ可"プロパティが選択されていれば)。

警告: 他のすべてのイベントと異なり、On Begin Drag Over やイベント中、呼び出されるメソッドは、ドラッグ&ドロップソースオブジェクトのプロセスのコンテキストで実行されます。ドラッグ&ドロップ先のオブジェクトではありません。詳細はドラッグ&ドロップを参照してください。

  • フォームのOn Mouse Enter, On Mouse Move および On Mouse Leave イベントが選択されていると、これらのイベントはフォームオブジェクトごとに生成されます。これらがオブジェクトで有効にされている場合、イベントはこの オブジェクトに対してのみ生成されます。多層構造のオブジェクトの場合、上位レベルから下位レベルに向けてそのイベントを処理できるオブジェクトを探し、 最初に見つかったオブジェクトによりイベントが生成されます。OBJECT SET VISIBLE コマンドを使用して非表示にされたオブジェクトでは、これらのイベントは生成されません。オブジェクト入力中、他のオブジェクトはマウスの位置によりこの タイプのイベントを受け取るかもしれません。
    On Mouse Move イベントはマウスカーソルが動いたときだけではなく、ユーザーが変更キー(Shift, Shift Lock, Ctrl または Option)を押したときにも発生することに注意して下さい(これにより、ドラッグ&ドロップによるコピーや移動も管理できるようになります)。
  • リスト中のレコード: DISPLAY SELECTION / MODIFY SELECTIONで表示されるリストフォームやサブフォームでメソッドやフォームイベントが呼び出される順序は以下のとおりです:
    ヘッダーエリアのそれぞれのオブジェクトごとに:
    • オブジェクトメソッドのOn Header イベント
    • フォームメソッドのOn Header イベント
    レコードごとに:
    • 詳細エリアのオブジェクトごとに:
      • オブジェクトメソッドのOn Display Detail イベント
    • フォームメソッドのOn Display Detail イベント
  • On Display DetailOn Headerイ ベントでダイアログボックスを表示する4Dコマンドを呼び出すことはできません。これはシンタックスエラーを起こします。以下のコマンドが関連します: ALERT, DIALOG, CONFIRM, Request, ADD RECORD, MODIFY RECORD, DISPLAY SELECTION そして MODIFY SELECTION
  • On Page Change: このイベントはフォームレベルでのみ利用でき (フォームメソッド内でのみ使用します)、フォームのカレントページが変更されるたびに生成されます (FORM GOTO PAGE コマンドの呼び出しや標準ナビゲーションアクションに伴い)。ページが完全にロードされた後に呼び出されることに留意してください。 例えば (Webエリアを含む) すべてのオブジェクトが初期化された後です。このイベントはすべてのオブジェクトが初期化済みの状態で実行する必要のあるコードがあるときに有用です。ま たフォームがロードされたときにすべてのコードを実行するのではなく、特定のページが開かれたときにのみコードを実行するようにして、アプリケーションを 最適化できます。ユーザーがそのページを開かなければ、コードは実行されません。

以下の表はそれぞれのイベントごとにどのようにオブジェクトメソッドとフォームメソッドが呼ばれるかを概説します:

イベントオブジェクトメソッドフォームメソッドオブジェクト
On LoadOOすべてのオブジェクト
On UnloadOOすべてのオブジェクト
On ValidateOOすべてのオブジェクト
On ClickedO (クリック可能または入力可能なら) (*)O関係するオブジェクトのみ
On Double ClickedO (クリック可能または入力可能なら) (*)O関係するオブジェクトのみ
On Before KeystrokeO (入力可能なら) (*)O関係するオブジェクトのみ
On After KeystrokeO (入力可能なら) (*)O関係するオブジェクトのみ
On After EditO (入力可能なら) (*)O関係するオブジェクトのみ
On Getting FocusO (フォーカス可なら) (*)O関係するオブジェクトのみ
On Losing FocusO (フォーカス可なら) (*)O関係するオブジェクトのみ
On ActivateXONone
On DeactivateXONone
On Outside CallXONone
On Page ChangeXONone
On Begin Drag OverO (ドラッグ可なら) (**)O関係するオブジェクトのみ
On DropO (ドロップ可なら) (**)O関係するオブジェクトのみ
On Drag OverO (ドロップ可なら) (**)Never関係するオブジェクトのみ
On Mouse EnterOOすべてのオブジェクト
On Mouse MoveOOすべてのオブジェクト
On Mouse LeaveOOすべてのオブジェクト
On Mouse UpOX関係するオブジェクトのみ
On Menu SelectedXONone
On Bound variable changeXONone
On Data ChangeO (更新可なら)) (*)O関係するオブジェクトのみ
On Plug in AreaOO関係するオブジェクトのみ
On HeaderOOすべてのオブジェクト
On Printing DetailOOすべてのオブジェクト
On Printing BreakOOすべてのオブジェクト
On Printing FooterOOすべてのオブジェクト
On Close BoxXONone
On Display DetailOOすべてのオブジェクト
On Open DetailX (ただしリストボックス以外)Yesリストボックスのみ
On Close DetailX (ただしリストボックス以外)Yesリストボックスのみ
On Open DetailXONone
On Close DetailXONone
On ResizeXONone
On Selection ChangeO (***)O関係するオブジェクトのみ
On Load RecordXONone
On TimerXONone
On ScrollOX関係するオブジェクトのみ
On Before Data EntryO (リストボックス)X関係するオブジェクトのみ
On Column MovedO (リストボックス)X関係するオブジェクトのみ
On Row MovedO (リストボックス)X関係するオブジェクトのみ
On Column ResizeO (リストボックス)X関係するオブジェクトのみ
On Header ClickO (リストボックス)X関係するオブジェクトのみ
On Footer ClickO (リストボックス)X関係するオブジェクトのみ
On After SortO (リストボックス)X関係するオブジェクトのみ
On Long ClickO (3D ボタン)O関係するオブジェクトのみ
On Alternative ClickO (3D ボタンとリストボックス)X関係するオブジェクトのみ
On ExpandO (階層リストとリストボックス)X関係するオブジェクトのみ
On CollapseO (階層リストとリストボックス)X関係するオブジェクトのみ
On Delete ActionO (階層リストとリストボックス)X関係するオブジェクトのみ
On URL Resource LoadingO (Web エリア)X関係するオブジェクトのみ
On Begin URL LoadingO (Web エリア)X関係するオブジェクトのみ
On URL Loading ErrorO (Web エリア)X関係するオブジェクトのみ
On URL FilteringO (Web エリア)X関係するオブジェクトのみ
On End URL LoadingO (Web エリア)X関係するオブジェクトのみ
On Open External LinkO (Web エリア)X関係するオブジェクトのみ
On Window Opening DeniedO (Web エリア)X関係するオブジェクトのみ


(*) 詳細は後述の "イベント、オブジェクト、プロパティ" を参照
(**) 詳細は"ドラッグ&ドロップ"を参照
(***) リストボックス、階層リスト、サブフォーム型のオブジェクトのみがこのイベントをサポートします

重要: イベントに対応するプロパティが選択されている場合にのみ、フォームやオブジェクトのメソッドが呼び出されることに留意してください。デザインモードの フォームエディタのプロパティリストでイベントを無効にすると、メソッドが呼び出される回数を減らすことができ、フォームの実行速度を最適化できます。

警告: オブジェクトのOn LoadOn Unload イベントが生成されるには、オブジェクトとオブジェクトが属するフォームの両方で有効にされていなければなりません。オブジェクトのみでイベントが有効に なっている場合、イベントは生成されません。これら2つのイベントはフォームレベルでも有効にされていなければなりません。

イベントの性質やプロパティに基づき、オブジェクトに対してイベントが生成されるとオブジェクトメソッドが呼び出されます。ここでは、さまざまなタイプのオブジェクトを扱うにあたり、一般的に使用されるイベントについて詳細に説明します。

フォームエディタのプロパティリストには、選択されたオブジェクトあるいはフォームで利用可能なイベントのみが表示されることに留意してください。

クリック可能なオブジェクトは主にマウスで操作します。以下のオブジェクトが含まれます:

  • ブールの入力可能フィールド/変数
  • ボタン, デフォルトボタン, ラジオボタン, チェックボックス, ボタングリッド
  • 3D ボタン, 3D ラジオボタン, 3D チェックボックス
  • ポップアップpメニュー, 階層ポップアップメニュー, ピクチャメニュー
  • ドロップダウンリスト, メニュー/ドロップダウンリスト
  • スクロールエリア, 階層リスト, リストボックス, リストボックスカラム
  • 非表示ボタン, ハイライトボタン, ラジオピクチャ
  • サーモメータ, ルーラ, ダイアル (スライダオブジェクト)
  • タブコントロール
  • スプリッタ

On ClickedOn Double Clicked オブジェクトイベントプロパティを選択したのち、Form event コマンドを使用してオブジェクト上でのクリックを検知し処理することができます。Form event コマンドはユーザアクションに応じ、On Clicked または On Double Clickedを返します。

注: 4D v14以降、テキスト(テキスト、日付、時間、数字型)が含まれる入力可能なフィールドおよび変数は On ClickedOn Double Clicked イベントを生成するようになりました。

両イベントがオブジェクトに対し選択されている場合、ダブルクリックが行われるとまずOn Clicked が、そしてOn Double Clicked イベントが生成されます。

これらすべてのオブジェクトにおいて、On Clickedイベントはマウスボタンが離されたときに生成されます。しかしいくつか例外があります:

  • 非表示ボタン - マウスがクリックされると、ボタンが離されるのを待たずにOn Clickedイベントが生成されます。
  • スライダオブジェクト (サーモメータ, ルーラ, ダイアル) - 表示フォーマットでコントロールをスライド中にオブジェクトメソッドが呼び出されるように設定されていると、On Clickedイベントはクリックが行われるとすぐに生成されます。

On Clicked イベントのコンテキストにおいてはClickcount コマンドを使うことによってユーザーが行ったクリック数をテストすることができます。

注: いくつかのオブジェクトはキーボードからも操作可能です。例えばチェックボックスがフォーカスを得ると、スペースバーでオン/オフを切り替えることができます。この場合でもOn Clickedイベントは生成されます。

警告: コンボボックスはクリック可能なオブジェクトとしては扱われません。コンボボックスは入力可能なテキストエリアとして扱われ、割り当てられたドロップダウンリストにはデフォルト値が提供されます。コンボボックスの処理はOn Before Keystroke, On After Keystroke そして On Data Change イベントを使用して行います。

: 4D v13 以降、ポップアップメニュー/ドロップダウンリストと、階層ポップアップメニューもOn Data Change を生成できるようになりました。これにより、カレントの値と異なる値が選択されたときにオブジェクトの起動を察知できるようになりました。

キーボードから入力可能なオブジェクトとは、キーボードを使用してデータを入力できるオブジェクトです。これらのオブジェクトではOn After Edit, On Before KeystrokeそしてOn After Keystrokeイベントを検知し、Get edited textコマンドを使用して、低レベルでデータ入力をフィルタできます。

キーボード入力可能なオブジェクトやデータタイプには以下が含まれます:

  • 文字、テキスト、日付、時間、数値、そしてピクチャ(On After Edit のみ) など、すべての入力可能なフィールドオブジェクト
  • 文字、テキスト、日付、時間、数値、そしてピクチャ(On After Edit のみ) など、すべての入力可能な変数
  • コンボボックス
  • リストボックス

注: 4D v14以降、テキスト(テキスト、日付、時間、数字型)が含まれる入力可能なフィールドおよび変数は On ClickedOn Double Clicked イベントを生成するようになりました。

注: 階層リストは入力可能なオブジェクトですが、このオブジェクトではOn After Edit, On Before KeystrokeそしてOn After Keystrokeは管理されません (後述の “階層リスト” の段落を参照)。

  • On Before KeystrokeOn After Keystroke

    注: On After Keystroke イベントは、一般的に On After Edit イベントで置き換えることができます(詳細後述)。

    On Before Keystroke
    On After Keystroke イベントプロパティを選択したら、Form eventコマンドを使用して返されるOn Before KeystrokeOn After Keystrokeイベントを検知し、オブジェクトへのキーストロークを処理できます (詳細はGet edited textコマンドの説明を参照してください。これらのイベントはPOST KEYのようなユーザアクションをシミュレートするコマンドによっても生成されます。

    キーボードを使用せず、ペーストやドラッグ&ドロップなどで行われた変更は考慮されないことに留意してください。これらのイベントを処理するためにはOn After Editを使用します。

    Note:
    On Before KeystrokeOn After Keystroke イベントは入力メソッド (IME) 使用時は生成されません。入力メソッドはプログラムあるいはシステムコンポーネントで、日本語や中国語など特定の文字や記号を入力するために使用されます。
  • On After Edit

    このイベントは、変更が行われた方法には関係なく、入力可能オブジェクトの内容に変更が行われるたびに生成されます。例えば:

    - ペーストやカット、削除、キャンセルなどの標準の編集アクション
    - 値のドロップ (ペーストと同様のアクション)
    - ユーザが行ったキーボードからの入力。この場合On After EditイベントはOn Before KeystrokeOn After Keystrokeイベントの後に生成されます。
    - ユーザアクションをシミュレートするランゲージコマンドを使用した変更 (例 POST KEY)。

    以下のアクションはこのイベントを生成させないことに注意してください:
    - コピーやすべてのを選択のような、内容を変更しない編集アクション;
    - 値のドラッグ (コピーに該当するアクション);
    - プログラムにより行われた内容の変更、ただしユーザアクションをシミュレートするコマンドを除く。

    このイベントはユーザアクションをコントロールするために使用できます。例えば長すぎるテキストのペーストや特定の文字のブロック、パスワードフィールドに対するカットを防ぐなどです。
  • On Selection Change:
    (入力可であるかそうでないかに関わらず)テキストフィールドや変数に適用されると、このイベントはカーソルの位置が変わるたびに生成されます。例えばユーザーがマウスやキーボードの矢印キーをを使用してテキストを選択したときや、ユーザーがテキストを入力したときです。ここでGET HIGHLIGHTのようなコマンドを呼び出すことができます。

更新可能オブジェクトは、マウスやキーボードを使用して値を変更することのできるデータソースを持ちます。これらはOn Clickedイベントで処理されるユーザインタフェースコントロールとしては扱われません。以下が含まれます:

  • すべての入力可フィールドオブジェクト (Blobを除く)
  • すべての入力可変数 (Blob、ポインタ、配列を除く)
  • コンボボックス
  • 外部オブジェクト (完全なデータ入力が許可されるプラグイン)
  • 階層リスト
  • リストボックスとリストボックスカラム

これらのオブジェクトはOn Data Changeイベントを受け取ります。On Data Changeオブジェクトイベントプロパティが選択されると、Form event コマンドから返されるOn Data Changeによりイベントを検知し、データソース値の変更を処理できます。イベントは、オブジェクトに結び付けられた変数が4Dにより内部的に更新され次第、生成されます (例えば、一般的に入力エリアオブジェクトがフォーカスを失った時)。

タブ可オブジェクトは、タブキーやクリックによりフォーカスを得るオブジェクトです。フォーカスを持つオブジェクトは、メニューやボタンへのモディファイアではない (キーボードでタイプされた) 文字を受け取ります。

以下を除き、すべてのオブジェクトはタブ可です:

  • 入力不可フィールドや変数
  • ボタングリッド
  • 3D ボタン, 3D ラジオボタン, 3D チェックボックス
  • ポップアップメニュー, 階層ポップアップメニュー
  • メニュー/ドロップダウンリスト
  • ピクチャメニュー
  • スクロールエリア
  • 非表示ボタン, ハイライトボタン, ラジオピクチャボタン
  • グラフ
  • 外部オブジェクト (完全なデータ入力が許可されるプラグイン)
  • タブコントロール
  • スプリッタ.

On Getting FocusOn losing Focus オブジェクトイベントプロパティを選択したら、Form event コマンドから返されるOn Getting FocusOn Losing Focusを検知して、フォーカスの変更を処理できます。

3D を使用すると詳細にグラフィックインタフェースを設定できます (f3D ボタンに関する説明はDesign Referenceマニュアルを参照してください)。汎用のイベントに加え、これらのボタンを管理するために2つの追加のイベントを使用できます:

  • On Long Click: このイベントは3D ボタンがクリックされ、一定時間以上マウスボタンが押され続けていると生成されます。理論上、このイベントが生成されるためのクリック保持時間は、システムの環境設定に設定されたダブルクリックの間隔最大時間に等しくなります。
    このイベントはすべての3D ボタンスタイル、3D ラジオボタン、3D チェックボックスで生成されます。例外は、旧世代の3D ボタンであるバックグランドオフセットタイプと、ポップアップメニューが関連付けられた3D ボタンの矢印エリアです (後述)。
    このイベントは一般的にロングクリック時にポップアップメニューを表示するために使用します。ユーザがロングクリックが有効になる時間前にマウスボタンを離すと、On Clickedが生成されます。
  • On Alternative Click: いくつかの3D ボタンスタイルには、ポップアップメニューをリンクし、矢印を表示させることができます。この矢印をクリックすると、ボタンの主たるアクションの代わりのアクションを提供するポップアップを表示します。
    4DではOn Alternative Click イベントを使用してこの動作を管理できます。このイベントはユーザが矢印をクリックすると、マウスボタンが押されてすぐに生成されます:
    - ポップアップメニューが分離されている場合、このイベントはボタン中で矢印のあるエリアがクリックされた場合のみ生成されます。
    - ポップアップメニューがリンクされている場合、このイベントはボタン上どこをクリックしても生成されます。このタイプのボタンではOn Long Clickイベントが生成されないことに注意してください。

以下の3D ボタン、3D ラジオボタン、および3D チェックボックスは“ポップアップメニューあり”プロパティをサポートします: なし, ツールバーボタン, べベル, 角の丸いべベルおよびOffice XPタイプ

リストボックス特有の様々な機能を管理するために様々なフォームイベントを使用できます:

  • On Before Data Entry: このイベントは、リストボックス中のセルが編集される直前に生成されます (入力カーソルが表示される前)。このイベントを使用して、例えば表示中と編集中で異なるテキストを表示させることができます。
  • On Selection Change: このイベントは、リストボックスの列や行の現在の選択が変更されるたびに生成されます。このイベントはレコードリストや階層リストでも生成されます。
  • On Column Moved: このイベントは、ユーザのドラッグ&ドロップでリストボックスの列が移動されたときに生成されます。ただし元の場所にドロップされた場合には生成されません。LISTBOX MOVED COLUMN NUMBERコマンドは列の新しい位置を返します。
  • On Row Moved: このイベントは、ユーザのドラッグ&ドロップでリストボックスの行が移動されたときに生成されます。ただし元の場所にドロップされた場合には生成されません。
  • On Column Resize: このイベントは、ユーザーによってリストボックス中の列幅が変更されたときに生成されます。4D v16以降、このイベントは"ライブ"にトリガーされます。つまり、対象となるリストボックスあるいはカラムがリサイズされている間はずっと継続して送信されつづけます。リサイズはユーザーによって手動で行われるか、あるいはリストボックスとそのカラムがフォームウィンドウ自身のリサイズの結果リサイズされる場合も含みます(手動によるフォームのリサイズあるいはRESIZE FORM WINDOWコマンドを使用したリサイズ)。
    注: On Column Resize イベントは"余白"カラムがリサイズされた場合にはトリガーされません(余白カラムについてのより詳細な情報については、リサイズオプションテーマ)を参照して下さい)。
  • On ExpandOn Collapse: これらのイベントは階層リストボックスの行が展開されたり折りたたまれたときに生成されます。
  • On Header Click: このイベントは、リストボックス中の列ヘッダでクリックが行われると生成されます。この場合Self コマンドを使用すればクリックされた列ヘッダを知ることができます。右クリック (Windouws) やCtrl+クリック (Mac OS) を列や列ヘッダ上で行うと、On Clickedイベントが生成されます。Clickcount コマンドを使うことによって、ユーザーが行ったクリックの回数をテストすることができます。
    リストボックスで並び替え可プロパティが選択されている場合、$0に0または-1を渡して標準の並び替えを行うかどうか指定できます:
    - $0 = 0の場合、標準の並び替えが行われます。
    - $0 = -1の場合、標準の並び替えは行われず、ヘッダには並び替え矢印は表示されません。開発者は4Dの配列コマンドを使用して、カスタマイズされた条件に基づく並び替えを実行できます。
    並び替え可
    プロパティが選択されていない場合、$0は使用されません。
  • On Footer Click: このイベントはリストボックスやリストボックス列で利用でき、リストボックスやリストボックス列のフッターエリアがクリックされたときに生成されます。こ の場合 OBJECT Get pointer コマンドはクリックされたフッター変数へのポインターを返します。イベントは左および右クリックどちらでも生成されます。Clickcountコマンドを使うことによって、ユーザーが行ったクリックの回数をテストすることができます。
  • On After Sort: このイベントは標準の並び替えが行われた直後に生成されます(ただしOn Header Clickイベントで$0に-1が返された場合には生成されません)。このメカニズムは、ユーザによって行われた最後の並び替えの方向を格納するために使用できます。このイベント内でSelfコマンドは、並び替えられたカラムヘッダー変数へのポインタを返します。
  • On Delete Action: このイベントはユーザーが削除キー (DeleteやBackspaceキー) を押して、またはクリア標準アクションが割り当てられたメニュー項目 (編集メニューのクリア等) を選択して、選択された行の削除を指示したときに生成されます。このイベントはリストボックスオブジェクトレベルでのみ利用できます。4Dはイベントの生 成を行うだけであることに留意してください。4Dは項目を消去しません。実際の削除処理や事前警告の表示などは開発者の責任です。
  • On Scroll (v15からの新機能): このイベントはユーザーがリストボックス内の列またはカラムをスクロールしたときに生成されます。このイベントはユーザーのアクションの結果としてスク ロールが発生した場合にのみ生成されます: スクロールバー/カーソルの使用、マウスホイールまたはキーボードの使用、等です。OBJECT SET SCROLL POSITIONコマンドの使用の結果スクロールした場合には生成されません。
    このイベントはスクロールアクションに関連した他の全てのユーザーイベント(On ClickedOn After Keystroke、等)の後にトリガーされます。このイベントはオブジェクトメソッドの中でのみ生成されます(フォームメソッドでは生成されません)。詳細は例題15を参照して下さい。
  • On Alternative Click (v15からの新機能): このイベントはオブジェクト配列型のリストボックスのカラムにおいて、ユーザーがウィジェットのエリプシスボタン("alternateButton" 属性)をクリックしたときに生成されます。詳細な情報については、カラム内でのオブジェクト配列の使用(4D View Pro) のセクションを参照して下さい。

「セレクション」型のリストボックスのコンテキストにおいて、二つの一般的なイベントが使用できるようになりました:

  • On Open Detail: このイベントはレコードが「セレクション」型リストボックスに関連付けられた(まだ開かれていない)詳細フォームに表示されるときに生成されます。
  • On Close Detail: このイベントは「セレクション」型リストボックスに関連付けられた詳細フォームに表示されたレコードが閉じられるときに生成されます(レコードが変更されたかどうかは関係しません)。

汎用のイベントに加え、階層リスト上で行われるアクションを処理するために複数のイベントを使用できます:

  • On Selection Change: このイベントは、マウスクリックやキーストロークで階層リスト中の選択が変更されるたびに生成されます。
    このイベントはリストボックスやレコードリストでも生成されます。
  • On Expand: このイベントは、マウスクリックやキーストロークで階層リストの要素が拡げられるたびに呼び出されます。
  • On Collapse: このイベントは、マウスクリックやキーストロークで階層リストの要素が折りたたまれるたびに呼び出されます。
  • On Delete Action: このイベントはユーザーが削除キー (DeleteやBackspaceキー) を押して、またはユーザーがクリア標準アクションが割り当てられたメニュー項目 (編集メニューのクリア等) を選択して、選択された行の削除を指示したときに生成されます。このイベントはリストボックスオブジェクトレベルでのみ利用できます。4Dはイベントの生成を行うだけであることに留意してください。4Dは項目を消去しません。実際の削除処理や事前警告の表示などは開発者の責任です。

これらのイベントは相互に排他的ではなく、階層リスト中で連続して生成されることがあります:
- キーストロークに伴い (順に):

イベントコンテキスト
On Data Change要素が編集された
On Expand/On Collapse-> または <-矢印キーを使用してサブリストを開いた/閉じた
On Selection Change新しい要素を選択した
On Clickedキーボードを使用してリストをアクティブにした

- マウスクリックに伴い (順に):

イベントコンテキスト
On Data Change要素が編集された
On Expand/On Collapse拡げる/折りたたむアイコンを使用してを使用してサブリストを開いた/閉じた
または
編集不可サブリストをダブルクリックした
On Selection Change新しい要素を選択した
On Clicked / On Double Clickedクリックまたはダブルクリックでリストをアクティブにした

  • On Picture Scroll フォームイベントはユーザーが (フィールドや変数) エリア内のピクチャーをスクロールすると生成されます。ピクチャーエリアのサイズがピクチャーよりも小さく、かつ表示フォーマットが"トランケート (中央合わせなし)"に設定されている場合のみスクロールが可能です。この点についてはピクチャーフォーマットを参照してください。
    このイベントはスクロールがユーザーアクション (スクロールバーやカーソル、マウスホイール、キーボードの利用) の結果として行われた場合に生成されます (キーボードによるスクロールについてはスクロールバー参照)。OBJECT SET SCROLL POSITION コマンドの結果としてスクロールが行われた場合、イベントは生成されません。
    このイベントは、スクロールアクションに関連した他の全てのユーザーイベント(On ClickedOn After Keystroke、等)の後にトリガーされます。このイベントはオブジェクトメソッドの中でのみ生成されます(フォームメソッドでは生成されません)。例題14を参照してください。
  • (v16 からの新機能)ユーザーが、ピクチャーエリア(フィールドまたは変数)内でドラッグ中に左マウスボタンをリリースしたときにOn Mouse Up イベントが生成されます。このイベントは例えば、ユーザーにSVGエリア内でオブジェクトを移動、リサイズ、描画することを可能にしたい場合には有用です。
    On Mouse Upイベントが生成されると、マウスボタンがリリースされたローカルの座標を取得する事ができます。これらの座標はMouseXMouseY システム変数に返されます。座標はピクチャーの左上端(0, 0)からみた位置のピクセル単位で表示されます。
    このイベントを使用する場合、フォームのステートマネージャーが非同期の可能性がある場合を管理するために、Is waiting mouse upを呼び出す必要があります。これは例えばマウスボタンがリリースされる前にフォーム上にアラートダイアログボックスが表示された場合などです。On Mouse Up イベントのより詳細な情報と使用例については、Is waiting mouse upコマンドの詳細を参照して下さい。
    注: ピクチャーオブジェクトの"ドラッグ可能"オプションがチェックされていた場合、On Mouse Up イベントはいかなる場合も生成されません。

サブフォームコンテナオブジェクト (親フォーム上に置かれた、ひとつのサブフォームインスタンスを含むオブジェクト) は以下のイベントをサポートします:

  • On LoadOn Unload: サーブフォームを開くまた閉じる際にそれぞれ生成されます。これらのイベントは親フォームレベルでも有効にされていなければなりません。これらのイベント は親のフォームの同じイベントよりも前に生成される点に留意してください。またフォーイベント動作の原則にいたがい、サブフォームが0もしくは1ページ以 外のページに配置されている場合、これらのイベントはページが閉じられ開かれるときにに生成され、フォームが開かれ閉じられるときではないことに留意して ください。
  • On Validate: サブフォーム中でデータの受け入れを行う際。
  • On Data Change: サブフォームオブジェクト変数の値が更新されたとき。
  • On Getting Focus and On Losing Focus: サブフォームコンテナがフォーカスを得たとき、また失った時。これらのイベントはプロパティリスト中でチェックされていれば、サブフォームオブジェクトの メソッド内で生成されます。これらはサブフォームのフォームメソッドに送信されます。つまり例えば、フォーカスに応じてサブフォーム中のナビゲーションボ タンの表示を管理できます。
    サブフォームオブジェクトはそれ自身がフォーカスを持つ点に留意してください。
  • On Bound Variable Change: この特別なイベントは、親フォーム中のサブフォームにバインドされた変数に割り当てられた値が更新される (同じ値が割り当てられたばあいでも) 、かつサブフォームがカレントフォームページまたは0ページに属していれば、サブフォームメソッドのコンテキストで生成されます。サブフォームの管理につ いてはDesign Referenceマニュアルを参照してください。

Note:  CALL SUBFORM CONTAINER コマンドを使用して、サブフォーム内で生成可能なあらゆるカスタムイベントタイプを指定できます。このコマンドにより、コンテナオブジェクトメソッドを呼び出し、イベントコードを渡すことができます。

注: サブフォームにて生成された On ClickedOn Double Clicked イベントは、最初にフォームメソッドで受け取られ、その後サブフォームのメソッドに、そしてホストフォームのフォームメソッドへと受け取られます。

Webエリアでは7つのイベントを利用できます:

  • On Begin URL Loading: このイベントは、Webエリアに新しいURLのロードを開始した時に生成されます。Webエリアに関連付けられた"URL"変数を使用してロード中のURLを知ることができます。
    Note:
    ロード中のURLは現在のURLとは異なります (WA Get current URL コマンドの説明参照)。
  • On URL Resource Loading: このイベントは、現在のWebページに (ピクチャやフレームなど) 新しいリソースをロードするたびに生成されます。
    Webエリアに関連付けられた"Progression"変数を使用してロード状況を知ることができます。
  • On End URL Loading: このイベントは、現在のURLのすべてのリソースがロードされると生成されます。
    WA Get current URL コマンドを使用して、ロードされたURLを知ることができます。
  • On URL Loading Error: このイベントは、URLのロード中にエラーを検出すると生成されます。
    WA GET LAST URL ERROR コマンドを使用して、エラーに関する情報を取得できます。
  • On URL Filtering: このイベントは、WA SET URL FILTERS コマンドで設定されたフィルタにより、URLのロードがWebエリアによってブロックされると生成されます。
    WA Get last filtered URL コマンドコマンドを使用してブロックされたURLを知ることができます。
  • On Open External Link: このイベントは、WA SET EXTERNAL LINKS FILTERS コマンドで設定されたフィルタにより、URLのロードがWebエリアによってブロックされ、URLがカレントのシステムブラウザで開かれると生成されます。
    WA Get last filtered URL コマンドコマンドを使用してブロックされたURLを知ることができます。
  • On Window Opening Denied: このイベントは、Webエリアによりポップアップウィンドウがブロックされると生成されます。4D Web エリアはポップアップウィンドウを許可しません。
    WA Get last filtered URL コマンドコマンドを使用してブロックされたURLを知ることができます。

この例題ではレコード更新日をOn Validateイベントで自動的に割り当てる例を示します:

  ` Method of a form
 Case of
  ` ...
    :(Form event=On Validate)
       [aTable]Last Modified On:=Current date
 End case

この例題では、ドロップダウンリスト処理 (初期化, ユーザクリック, オブジェクトのリリース) をオブジェクトメソッドにカプセル化します:

  ` asBurgerSize Drop-down list Object Method
 Case of
    :(Form event=On Load)
       ARRAY TEXT(asBurgerSize;3)
       asBurgerSize{1}:="Small"
       asBurgerSize{1}:="Medium"
       asBurgerSize{1}:="Large"
    :(Form event=On Clicked)
       If(asBurgerSize#0)
          ALERT(asBurgerSize{asBurgerSize}+" バーガーが選択されました。")
       End if
    :(Form event=On Unload)
       CLEAR VARIABLE(asBurgerSize)
 End case

この例題ではオブジェクトメソッドで、ピクチャのみを受け付けるフィールドのドラッグ&ドロップ処理の方法を示します:

  ` [aTable]aPicture ピクチャ フィールドオブジェクトメソッド
 Case of
    :(Form event=On Drag Over)
  ` ドラッグ&ドロップ処理が開始され、マウスが現在フィールド上にある
  ` ソースオブジェクトに関する情報を取得
       DRAG AND DROP PROPERTIES($vpSrcObject;$vlSrcElement;$lSrcProcess)
  ` ソースプロセスの番号をテストする必要はない
  ` 実行されているオブジェクトメソッドは同じプロセス内で動作している
       $vlDataType:=Type($vpSrcObject->)
  ` ソースデータはピクチャか (フィールド, 変数または配列)?
       If(($vlDataType=Is picture)|($vlDataType=Picture array))
  ` 真ならドラッグを受け入れる
          $0:=0
       Else
  ` 偽ならドラッグを拒否する
          $0:=-1
       End if
    :(Form event=On Drop)
  ` ソースデータがオブジェクトにドロップされたのでオブジェクトにコピーする
  ` ソースオブジェクトに関する情報を取得
       DRAG AND DROP PROPERTIES($vpSrcObject;$vlSrcElement;$lSrcProcess)
       $vlDataType:=Type($vpSrcObject->)
       Case of
  ` ソースオブジェクトはピクチャフィールドまたは変数
          :($vlDataType=Is picture)
  ` ソースオブジェクトは同じプロセスから来ているか (つまり同じウィンドウのフォームか)t?
             If($lSrcProcess=Current process)
  ` そうならソースをコピー
                [aTable]aPicture:=$vpSrcObject->
             Else
  ` そうでない場合、ソースオブジェクトを利用できるか?
                If(Is a variable($vpSrcObject))
  ` 真ならソースプロセスから値を取得
                   GET PROCESS VARIABLE($lSrcProcess;$vpSrcObject->;$vgDraggedPict)
                   [aTable]aPicture:=$vgDraggedPict
                Else
  ` 偽ならCALL PROCESSを使用してソースプロセスから値を取得
                End if
             End if
  ` ソースオブジェクトがピクチャ配列
          :($vlDataType=Picture array)
  ` ソースオブジェクトは同じプロセスにあるか (つまり同じプロセスの同じウィンドウか)?
             If($lSrcProcess=Current process)
  ` 真ならソース値をコピー
                [aTable]aPicture:=$vpSrcObject->{$vlSrcElement}
             Else
  ` そうでなければソースプロセスから値を取得
                GET PROCESS VARIABLE($lSrcProcess;$vpSrcObject
                ->{$vlSrcElement};$vgDraggedPict)
                [aTable]aPicture:=$vgDraggedPict
             End if
       End case
 End case

Note: On Drag OverOn Drop イベントを使用する他の例題は、DRAG AND DROP PROPERTIES コマンドの例題を参照してください。

この例題はフォームメソッドのテンプレートです。出力フォームとしてサマリレポートがフォームを使用する際に発生するイベントを示しています:

  ` Method of a form being used as output form for a summary report
 $vpFormTable:=Current form table
 Case of
  ` ...
    :(Form event=On Header)
  ` ヘッダエリアの印刷開始
       Case of
          :(Before selection($vpFormTable->))
  ` 最初のブレークヘッダ用のコード
          :(Level=1)
  ` ヘッダブレークレベル 1 用のコード
          :(Level=2)
  ` ヘッダブレークレベル 2 用のコード
  ` ...
       End case
    :(Form event=On Printing Detail)
  ` レコードの印刷開始
  ` レコード毎のコードを記述
    :(Form event=On Printing Break)
  ` ブレークエリアの印刷開始
       Case of
          :(Level=0)
  ` ブレークレベル0 用のコード
          :(Level=1)
  ` レークレベル1 用のコード
  ` ...
       End case
    :(Form event=On Printing Footer)
       If(End selection($vpFormTable->))
  ` 最後のフッタ用のコード
       Else
  ` フッタ用のコード
       End if
 End case

この例題はDISPLAY SELECTIONMODIFY SELECTIONで表示されるフォームで発生するイベントを処理するメソッドのテンプレートです。説明的にするため、フォームウィンドウのタイトルバーにイベントの説明が表示されます:

  ` フォームメソッド
 Case of
    :(Form event=On Load)
       $vsTheEvent:="フォームが表示されようとしている"
    :(Form event=On Unload)
       $vsTheEvent:="出力フォームを抜け、スクリーンから消えようとしている"
    :(Form event=On Display Detail)
       $vsTheEvent:="表示中のレコード #"+String(Selected record number([TheTable]))
    :(Form event=On Menu Selected)
       $vsTheEvent:="メニュー項目が選択された"
    :(Form event=On Header")
       $vsTheEvent:="ヘッダエリアが描画されようとしている"
    :(Form event=On Clicked")
       $vsTheEvent:="レコードがクリックされた"
    :(Form event=On Double Clicked")
       $vsTheEvent:="レコードがダブルクリックされた"
    :(Form event=On Open Detail)
       $vsTheEvent:="レコード #"+String(Selected record number([TheTable]))+" がダブルクリックされた"
    :(Form event=On Close Detail)
       $vsTheEvent:="出力フォームに戻る"
    :(Form event=On Activate)
       $vsTheEvent:="フォームのウィンドウが最前面になった"
    :(Form event=On Deactivate)
       $vsTheEvent:="フォームのウィンドウが最前面でなくなった"
    :(Form event=On Outside Call)
       $vsTheEvent:="プロセスの呼び出しを受信した"
    Else
       $vsTheEvent:="発生したイベント #"+String(Form event)
 End case
 SET WINDOW TITLE($vsTheEvent)

On Before KeystrokeOn After Keystroke イベントを処理する方法はGet edited textKeystroke、そしてFILTER KEYSTROKEコマンドの説明を参照してください。

この例題は、スクロールエリアでクリックとダブルクリックを同様に扱う方法を示しています:

  ` asChoices scrollable area object method
 Case of
    :(Form event=On Load)
       ARRAY TEXT(asChoices;...)
  ` ...
       asChoices:=0
    :((Form event=On Clicked)|(Form event=On Double Clicked))
       If(asChoices#0)
  ` 項目がクリックされたので、何らかの処理を行う
  ` ...
       End if
  ` ...
 End case

この例題では、クリックとダブルクリックで異なるレスポンスをする方法を示します。要素0を使用して選択された項目を追跡しています:

  ` asChoices scrollable area object method
 Case of
    :(Form event=On Load)
       ARRAY TEXT(asChoices;...)
  ` ...
       asChoices:=0
       asChoices{0}:="0"
    :(Form event=On Clicked)
       If(asChoices#0)
          If(asChoices#Num(asChoices))
  ` 新しい項目がクリックされたので何かを行う
  ` ...
  ` 次回のために、新しく選択された要素を保存
             asChoices{0}:=String(asChoices)
          End if
       Else
          asChoices:=Num(asChoices{0})
       End if
    :(Form event=On Double Clicked)
       If(asChoices#0)
  ` 項目がダブルクリックされたのでここで何かを行う
       End if
  ` ...
 End case

この例題では、 On Getting FocusOn Losing Focusを使用して、フォームメソッド内でステータス情報を管理します。:

  ` [Contacts];"Data Entry" form method
 Case of
    :(Form event=On Load)
       C_TEXT(vtStatusArea)
       vtStatusArea:=""
    :(Form event=On Getting Focus)
       RESOLVE POINTER(Focus object;$vsVarName;$vlTableNum;$vlFieldNum)
       If(($vlTableNum#0) & ($vlFieldNum#0))
          Case of
             :($vlFieldNum=1) ` Last name フィールド
                vtStatusArea:="Enter the Last name of the Contact; it will be capitalized automatically"
  ` ...
             :($vlFieldNum=10) ` Zip Code フィールド
                vtStatusArea:="Enter a 5-digit zip code; it will be checked and validated automatically"
  ` ...
          End case
       End if
    :(Form event=On Losing Focus)
       vtStatusArea:=""
  ` ...
 End case

この例題では、レコードデータ入力に使用されるフォームで、ウィンドウを閉じる際の処理を示します:

  ` Method for an input form
 $vpFormTable:=Current form table
 Case of
  ` ...
    :(Form event=On Close Box)
       If(Modified record($vpFormTable->))
          CONFIRM("このレコードは更新されています。保存しますか?")
          If(OK=1)
             ACCEPT
          Else
             CANCEL
          End if
       Else
          CANCEL
       End if
  ` ...
 End case

この例題では、文字フィールドが更新されるたびに、1文字目を大文字に、それ以外を小文字に変換する方法を示します:

  ` [Contacts]First Name Object method
 Case of
  ` ...
    :(Form event=On Data Change)
       [Contacts]First Name:=Uppercase(Substring([Contacts]First Name;1;1))+
       Lowercase(Substring([Contacts]First Name;2))
  ` ...
 End case

この例題では、文字フィールドが更新されるたびに、1文字目を大文字に、それ以外を小文字に変換する方法を示します:

  ` [Contacts]First Name Object method
 Case of
  ` ...
    :(Form event=On Data Change)
       [Contacts]First Name:=Uppercase(Substring([Contacts]First Name;1;1))+
       Lowercase(Substring([Contacts]First Name;2))
  ` ...
 End case

以下の例題では階層リストで削除アクションを管理する方法を示します:

 ... // 階層リストメソッド
:($Event=On Delete Action)
 ARRAY LONGINT($itemsArray;0)
 $Ref:=Selected list items(<>HL;$itemsArray;*)
 $n:=Size of array($itemsArray)
 
 Case of
    :($n=0)
       ALERT("項目が選択されていません。")
       OK:=0
    :($n>=1)
       CONFIRM("選択された項目を削除しますか?")
 End case
 
 If(OK=1)
    For($i;1;$n)
       DELETE FROM LIST(<>HL;$itemsArray{$i};*)
    End for
 End if

この例題ではOn Scroll フォームイベントを使用してフォーム中の2つのピクチャーを同期します。以下のコードを"satellite" のオブジェクトメソッドに記述します:

 Case of
    :(Form event=On Scroll)
  // 左側のピクチャー位置を取得
       OBJECT GET SCROLL POSITION(*;"satellite";vPos;hPos)
  // 右側のピクチャーに適用
       OBJECT SET SCROLL POSITION(*;"plan";vPos;hPos;*)
 End case

結果:

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

 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

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



参照 

CALL PROCESS
CALL SUBFORM CONTAINER
Current form table
DRAG AND DROP PROPERTIES
FILTER KEYSTROKE
Get edited text
Keystroke
SET TIMER

 
プロパティ 

プロダクト: 4D
テーマ: フォームイベント
番号: 388

 
履歴 

New
変更: 4D v11 SQL Release 2
変更: 4D v12
変更: 4D v13
変更: 4D v13.2
変更: 4D v14
変更: 4D v15
変更: 4D v16

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)