4D v16イベント |
||
|
4D v16
イベント
イベント
ビデオ中で説明した操作に加え、以下の点にも留意してください: 利用できるイベントはオブジェクトにより異なります。例えばボタンオブジェクトでOn Data Changeイベントは利用できません。なぜならボタンの内容 (ボタンラベル) を変更することはできないからです。 いくつかのイベントを紹介します:
これらはイベントのほんの一部です。完全なリストを見るためには4Dのランゲージリファレンスを参照してください。 ここでよく質問されることがあります。「フォームイベントとオブジェクトイベント、どちらのプロパティリストでチェックを入れたらいいですか?」 回答はシンプルです。メソッドを記述したほうにチェックを入れてください。 理論的にはフォームメソッドはフォーム全体の処理に関連するコードを記述すべきです:
他方オブジェクトメソッドはそのオブジェクト自身に関わるコードを記述すべきです。これは一般的なルールであり、これから外れるためには適切な理由を考慮すべきです。 以下に留意してください:
特定の処理はフォームメソッドに移動する必要が出てくるかもしれません。 例えば10個の入力可能なパラメーターに基づき値を再計算する必要がある場合、パラメーターが変更されるたびに再計算を行わなければなりません。10個のパラメーター変数それぞれに同じ式を記述するより、フォームメソッドに一回だけ記述したほうが見通しが良くなります。しかし必要以上に再計算が実行されてしまうかもしれません。特にパラメーター以外のフィールドや変数が変更された場合などです。 イベントが実行される順番を知っていることはとても重要です。例えばボタンの場合、イベントは以下の順番で発生します:
フィールドや変数の場合:
コードを記述する時間を節約し、間違いを少なくするためにマクロの利用を検討してください (“macros.xml”ファイル) 例えば“#$evt”とタイプしたら自動的に以下のようなコードが入力されるようなマクロを設定できます: $evt:=Form event 4Dを学び始めたばかりの場合は、オブジェクトメソッドに処理を記述することをお勧めします。そしてメソッドを汎用化するようにし、最終的に必要であればフォームメソッドに移動したり、プロジェクトメソッドとして記述したりしましょう。ポインターのことも忘れないでください。 さらに先に進むには: In this video, we're going to learn how events work and how to program them. First of all, let's distinguish between:
Form events are only triggered when a form is used (on screen or when printing), therefore when the interface is being used by a user (clicks, drag-and-drop, selection of menu items, keystrokes and so on). Database events only concern 3 actions that are performed on the data:
These 3 events are intercepted by the database engine. This is important to note because in Client/Server mode, the database engine runs on the server so you will never see a database event performed on your client machine. You won't be able to trace one from a client machine either. We'll come back to database events later on. First of all, we're going to have some fun and create a button that's a little "special".
and enter the following code: //Location of the mouse when the method starts this all means that:
Let's see what this gives us:
Each time you get near the button, it moves in the opposite direction (left, right, up or down). If the button falls off the screen, close the form and start again; the button will re-appear in its initial location. So that was one example of using events. Let's look at another one: when entering an intervention, we want to calculate its duration based on the information entered in the start time and end time. We will need to:
The duration is recalculated as being the difference between the end time less the intervention time, on the condition that the end time is filled in (in other words, not zero). We can copy the code and now create the end time method. When we're going to modify it: the intervention time must be filled in and the calculation of the duration will always be the same.
The programming was actually executed when we exited the field; in other words, in the context of the "On Data Change" event. In the next section, we're going to cover programming arrays.
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
セルフトレーニング ( 4D v16) |