Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../index.htm#lansa/set_ref_e.htm]
現在地:

...

7.114.2 SET_REFの使用例

例1:*CREATE_FROM

以下のフォームを使用して、他のフォームのインスタンスをロード (作成および表示) することができます。 することができます。  Image Removed

Image Added

このロード用フォームには、フォーム(#FORMS)のコレクションがあります。ロードボタンをクリックすると、指定したフォームの新規インスタンスが作成され、#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

上記のソース・コードをフォームのコンポーネントにコピー・アンド・ペーストし、コンパイルしてみてください。フォームを実行します。さらに、このフォームを使用して他のフォームのインスタンスの作成および表示を行うには、表示する名前を指定してロードボタンをクリックします。  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コマンドで明示的に宣言された場合のみ作成されます。 REFコマンドで明示的に宣言された場合のみ作成されます。 

     SET_

...

REF COM(#WordApp)

...

 To(*CREATE_

...

AS #VA_WORD.application)

...

参照は*CREATE_ASというキーワードを使用して作成されるため、#WordAppコンポーネントの新規インスタンスが作成されます。 ASというキーワードを使用して作成されるため、#WordAppコンポーネントの新規インスタンスが作成されます。 

例3:*

...

DYNAMICと変数名 

Microsoft Wordドキュメント・タイプの変数が定義されるため、この変数を使用してドキュメントを参照することができます。 Wordドキュメント・タイプの変数が定義されるため、この変数を使用してドキュメントを参照することができます。 

     DEFINE_

...

COM Class(#VA_WORD.Document)

...

 Name(#WordDoc)

...

 Reference(*DYNAMIC)

...

変数名は、ドキュメント作成時にパラメータadd_retvalで戻される新たに作成したドキュメントへの参照を作成するために使用します。
INVOKE Methodretvalで戻される新たに作成したドキュメントへの参照を作成するために使用します。 

     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)

...