[
|../../index.htm#lansa/set_ref_e.htm]
現在地:
例1:*CREATE_FROM
以下のフォームを使用して、他のフォームのインスタンスをロード (作成および表示) することができます。
![]()
このロード用フォームには、フォーム(#FORMS)のコレクションがあります。ロードボタンをクリックすると、指定したフォームの新規インスタンスが作成され、#FORMSコレクションに追加された後で表示されます。
BEGIN_COM HEIGHT(123) LEFT(296) TOP(120) WIDTH(209) DEFINE_COM CLASS(#PRIM_PHBN) NAME(#PHBN_1) CAPTION('Load') DISPLAYPOSITION(2) LEFT(16) PARENT(#COM_OWNER) TABPOSITION(2) TOP(45) *The name of the form to be loaded DEFINE_COM CLASS(#STD_OBJ.Visual) NAME(#STD_OBJ) CAPTION('Form to Load:') DISPLAYPOSITION(1) HEIGHT(19) LABELTYPE(Caption) LEFT(8) MARGINLEFT(80) PARENT(#COM_OWNER) TABPOSITION(1) TOP(8) WIDTH(161) *The form counter and collection define #FormTot Reffld(#STD_NUM) default(0) DEFINE_COM CLASS(#PRIM_KCOL) NAME(#FORMS) COLLECTS(#PRIM_FORM) KEYEDBY(#STD_NUM) STYLE(Collection) define #Position Reffld(#STD_NUM) default(1) EVTROUTINE HANDLING(#PHBN_1.Click) * increase form counter by one Change #FormTot '#FormTot 1' * create a new instance of the named form and set a reference to it Set_Ref #Forms<#FormTot> (*Create_from #Std_Obj.Value) * control the position of the form Set #Forms<#FormTot> Left(#Position) Top(#Position) Change #Position '#Position 10' *show the form Invoke #Forms<#FormTot>.ShowForm ENDROUTINE END_COM
上記のソース・コードをフォームのコンポーネントにコピー・アンド・ペーストし、コンパイルしてみてください。フォームを実行します。さらに、このフォームを使用して他のフォームのインスタンスの作成および表示を行うには、表示する名前を指定してロードボタンをクリックします。
例2:*CREATE_AS
Microsoft WordのActiveXコンポーネントへのコンポーネント参照が動的に定義されるため、コンポーネント定義のステートメントが実行されても参照は作成されません。
DEFINE_COM Class(#VA_WORD.Application) Name(#WordApp) Reference(*DYNAMIC)
オブジェクトへの参照は、SET_REFコマンドで明示的に宣言された場合のみ作成されます。
SET_REF COM(#WordApp) To(*CREATE_AS #VA_WORD.application)
参照は*CREATE_ASというキーワードを使用して作成されるため、#WordAppコンポーネントの新規インスタンスが作成されます。
例3:*DYNAMICと変数名
Microsoft Wordドキュメント・タイプの変数が定義されるため、この変数を使用してドキュメントを参照することができます。
DEFINE_COM Class(#VA_WORD.Document) Name(#WordDoc) Reference(*DYNAMIC)
変数名は、ドキュメント作成時にパラメータadd_retvalで戻される新たに作成したドキュメントへの参照を作成するために使用します。
INVOKE Method(#WordApp.documents.add) add_retval(#WordDoc)
この参照は、ドキュメントのメソッド、プロパティ、およびイベントにアクセスするために使用されます。
Set Com(#edit_1) Value(#WordDoc.Name_COM)
INVOKE Method(#WordDoc.PrintOut)
その後、同じ変数を変更して、その時点でアクティブなドキュメントを参照するように設定します。
SET_REF COM(#WordDoc) To(#WordApp.ActiveDocument)
[
|../../index.htm#lansa/set_ref_e.htm]