RelatedReference プロパティ

LANSA

RelatedReference プロパティ

RelatedReferenceプロパティを使用してリストの項目に対するオブジェクトを保存します。 これにより、リスト項目からユーザー定義のオブジェクトに移動することが可能になります。

次の例は社員情報を表示する再利用可能パーツとこのパーツを使ってグリッドの現在の項目の詳細を表示するフォームとから成り立っています。 このコードをコピーして貼り付けることもできます。

Reusable part GRID_REF: 

Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_PANL) Displayposition(1) Left(0) Tabposition(1) Top(0)
Define_Pty Name(p_Employee) Get(*auto #empno) Set(*auto #empno)
Define_Pty Name(p_Surname) Get(*auto #Surname) Set(*auto #Surname)
Define_Pty Name(p_Givename) Get(*auto #Givename) Set(*auto #Givename)
Mthroutine Name(Show_details)
Use Builtin(MESSAGE_BOX_ADD) With_Args(#EMPNO)
Use Builtin(MESSAGE_BOX_ADD) With_Args(#GIVENAME)
Use Builtin(MESSAGE_BOX_ADD) With_Args(#SURNAME)
Use Builtin(MESSAGE_BOX_SHOW) With_Args(OK OK INFORMATION 'Employee details')
Endroutine
End_Com
The form:
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_FORM) Height(422) Left(310) Top(108) Width(510)
* Grid Definition
Define_Com Class(#PRIM_GRID) Name(#GRID_1) Captionnoblanklines(True) Columnbuttonheight(20) Displayposition(1) Height(322) Left(8) Parent(#COM_OWNER) Showbuttonselection(True) Showselection(True) Showselectionhilight(False) Showsortarrow(True) Tabposition(1) Top(7) Width(385)
Define_Com Class(#PRIM_GDCL) Name(#GDCL_1) Displayposition(1) Parent(#GRID_1) Source(#EMPNO) Width(37)
Define_Com Class(#PRIM_GDCL) Name(#GDCL_2) Displayposition(2) Parent(#GRID_1) Source(#SURNAME) Width(36)
Define_Com Class(#PRIM_GDCL) Name(#GDCL_3) Displayposition(3) Parent(#GRID_1) Source(#GIVENAME) Width(27)
Define_Com Class(#GRID_REF) Name(#temp_employee) Reference(*dynamic)
Define_Com Class(#PRIM_STBR) Name(#STBR_1) Displayposition(2) Height(24) Left(0) Messageposition(1) Parent(#COM_OWNER) Tabposition(2) Tabstop(False) Top(371) Width(502)
Evtroutine Handling(#com_owner.CreateInstance)
Set Com(#com_owner) Caption(*component_desc)
Select Fields(#GRID_1) From_File(PSLMST)
Set_Ref Com(#temp_employee) To(*create_as #GRID_REF)
Set Com(#temp_employee) P_Employee(#empno) P_Surname(#surname) P_Givename(#givename)
Add_Entry To_List(#GRID_1)
Set Com(#grid_1.currentitem) Relatedreference(#temp_employee)
Set_Ref Com(#temp_employee) To(*null)
Endselect
Endroutine
Evtroutine Handling(#GRID_1.DoubleClick) Options(*NOCLEARMESSAGES *NOCLEARERRORS)
Set_Ref Com(#Temp_employee) To(*dynamic #grid_1.currentitem.relatedreference)
Invoke Method(#Temp_employee.Show_details)
Endroutine End_Com