フォーム間の相互依存性を減少させるためにフォームの内容を他のフォームから隠します。オーナー・フォームがメンバー・フォームのコンポーネントのプロパティ、イベント、およびメソッドにアクセスできると、コンポーネントでの変更がオーナー・フォームでの変更も必要になります。
Street Name(住所)およびStreet Number(番地)を含むフィールド#Address1を持つフォームがあるとします。#Address1の値の設定と取得に使用できるカスタム定義のプロパティAddressInfoもあります。
#Address1フィールドを#StreetNameと#StreetNumberの2つのフィールドに分割する必要がある場合があります。結果として、このフォーム内のAddressInfoのプロパティのルーチンを変更する必要があります。ただし、他のフォームで使用されるAddressInfoプロパティを変更する必要はありません。結果として、このプロパティを設定または取得するフォームでは変更の必要ありません。
同様に、すべてのオーナー・フォームの処理を一般化するユーザー定義のメソッドを作成することを考える必要があります。例えば、オーナー・フォームからフォームを表示するユーザー定義のメソッドを作成できます。最も簡単なものでは、メソッドのルーチンは以下のようになります。
mthroutine uShowCustomerForm
invoke #com_owner.showform
endroutine
それからこのメソッドのルーチンにフォームのサイズを設定したり、他のウィンドウの背面にある場合はアクティブにしたり、最小化されている場合は元のサイズにもどすコードを追加できます。すべてのこの処理は、uShowCustomerFormメソッドを使用してCustomer Formを表示するすべてのフォームで自動的に使用できます。