Versions Compared

Key

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

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

...

汎用の名前#Com_Ownerは、現在のコンポーネントの参照に使用できます。継承のコンテキストでは、コンポーネントにこれ以外の2つの汎用的な名前を使用できます。#Com_Ancestorと#Com_Selfです。

#Com_Ancestorは、現在のコンポーネントの祖先の汎用的な参照で、#Com_Selfは、現在実行中のコンポーネントの汎用的な参照です。Selfは、現在実行中のコンポーネントの汎用的な参照です。

#Com_Owneと#Com_Self

#Com_Ownerと#Com_Selfの違いを見るために、このコードで2つの再利用可能パーツを作成します。

Button 3

このボタンの再利用可能パーツには、Helloというメッセージを表示するメソッドMethodOneが含まれます。メッセージは、このボタン(Button 3、つまり#Com_Owner)がクリックされると表示されます。

FUNCTION options(*DIRECT)
BEGIN_COM role(*EXTENDS #PRIM_PHBN) CAPTION('Button 3') HEIGHT(24) WIDTH(185)
 
MTHROUTINE name(MethodOne)
USE builtin(MESSAGE_BOX_SHOW) with_args(OK OK INFO '' 'Hello') to_get(#STD_OBJ)
ENDROUTINE
 
EVTROUTINE handling(#COM_OWNER.Click)
INVOKE method(#com_owner.methodone)
ENDROUTINE
 
END_COM


 

 

 

 

Button 4

このボタンの再利用可能パーツは、Button 3を継承し、Byeというメッセージを表示するようにメソッドMethodOneを再定義します。

FUNCTION options(*DIRECT)
BEGIN_

COM role

COM role(*

EXTENDS #BUTTON3

EXTENDS #BUTTON3)

 CAPTION

CAPTION('

Button 4

Button 4')

 HEIGHT

HEIGHT(26)

 WIDTH

WIDTH(176)

  MTHROUTINE name

MTHROUTINE name(MethodOne)

 options

options(*redefine)
USE builtin(MESSAGE_BOX_SHOW) with_args(OK OK INFO '' 'Bye') to_get(#STD_OBJ)
ENDROUTINE

 

END_COM

 

これらのボタンをフォームに追加し、フォームでコンパイルし、実行します。両方のボタンをクリックします。どちらにも「Hello」というメッセージが表示されます。

...

Image Added

...

 




Image Added





つまり、Button Wiki Markup  これらのボタンをフォームに追加し、フォームでコンパイルし、実行します。両方のボタンをクリックします。どちらにも「Hello」というメッセージが表示されます。 !worddavaf485e25f57cd86bb5b0fc63f3f1b1cc.png|height=32,width=32! !worddavaf485e25f57cd86bb5b0fc63f3f1b1cc.png|height=32,width=32! つまり、Button 3で定義されているClickイベントは、定義されているコンポーネント(#Com_Owner)のメソッドを呼び出すので、メッセージ「Bye」を表示する再定義されたメソッドは、Button 4では使用されません。

INVOKE method(#com_owner.methodone)

  次にButton 3のClickイベントで呼び出すコマンドを#Com_Owneではなく#Com_Selfを使用するように変更し、Clickイベントでイベントが実行されるコンポーネントのメソッドを呼び出すようにします。

INVOKE method(#com_self.methodone)

  Button 3をコンパイルし、再度実行します。今度はButton 4をクリックすると、再定義されたメソッドが使用され、メッセージ「Bye」が表示されます。 !worddavaf485e25f57cd86bb5b0fc63f3f1b1cc.png|height=32,width=32! 4をクリックすると、再定義されたメソッドが使用され、メッセージ「Bye」が表示されます。

Image Added

#Com_Ancestor

祖先のコンポーネントのメソッドを呼び出すには、汎用の名前#com_ancestorを使用してメソッドの名前を修飾すると参照できます。

例えば、上の例の続きで、以下のように再定義されたButton 4のMethodOneからButton 3のMethodOneメソッドを呼び出せます。

MTHROUTINE

...

name(MethodOne)

...

options(*redefine)

...


INVOKE

...

method(#com_ancestor.methodone)

...


USE

...

builtin(MESSAGE_BOX_SHOW)

...

with_args(OK

...

OK

...

INFO

...

''

...

'Bye')

...

to_get(#STD_OBJ)

...


ENDROUTINE

Button 4をコンパイルし、テスト・フォームを実行します。Button 4をクリックすると、最初に祖先からButton 3のMethodOneが呼び出されます。 !worddavaf485e25f57cd86bb5b0fc63f3f1b1cc.png|height=32,width=32! そして\[OK\3のMethodOneが呼び出されます。

Image Added





そして[OK]をクリックすると、Message_Box_Show組み込みファンクションによりButton

...

4で定義されたテキスト「Bye」が表示されます。

Image Added