Versions Compared

Key

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

フィールドに省略値を設定できるように、フィールドのピックリストにも省略時項目を設定できます。一方を変更するときは、もう一方もそれに合わせて変更する必要がないか、注意する必要があります。

例えば、以下に示すフォームをデバッグ・モードで動作させ、messageコマンドで#EMPSEXの値を調べると、ラジオ・ボタンのいずれかをオンにしていない限り、値は空であることがわかります。フィールドのピックリストには省略時項目が設定されているので、この動作は不適切であるように見えますが、実際には正しい動作です。

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

...

フィールドに省略値を設定できるように、フィールドのピックリストにも省略時項目を設定できます。一方を変更するときは、もう一方もそれに合わせて変更する必要がないか、注意する必要があります。
例えば以下に示すフォームをデバッグ・モードで動作させ、messageコマンドで#EMPSEXの値を調べると、ラジオ・ボタンのいずれかをオンにしていない限り、値は空であることがわかります。フィールドのピックリストには省略時項目が設定されているので、この動作は不適切であるように見えますが、実際には正しい動作です。

フォームの起動時に行われるフィールドの初期化で、#EMPSEXには省略値が設定されます。しかしこの例の場合、(#EMPSEX側には)省略値が指定されていないので、フィールド変数の値は空のままです。一方、画面表示について見ると、空という値は無効なので、ピックリストの処理規則に基づき初期設定が行われます(この場合は省略地の値)。

これは、フィールド値の省略値と、ピックリストの省略時項目の値が一致していない例です。これを解消するためには、#EMPSEXに省略値「M」を設定する必要があります。こうすればフィールド値と画面表示が一致します。 

混乱を避けるため、ピックリストの省略時項目として、フィールドの省略値を与えるようお勧めします。

フォームのソース

...

     FUNCTION OPTIONS(*DIRECT)
BEGIN_

...

COM ROLE(*

...

EXTENDS #PRIM_FORM)

...

 CLIENTHEIGHT(306)

...

 CLIENTWIDTH(492)

...

 LEFT(326)

...

 TOP(162)
DEFINE_

...

COM CLASS(#EMPSEX.Visual)

...

 NAME(#EMPSEX)

...

 DISPLAYPOSITION(1)

...

 LEFT(40)

...

 PARENT(#COM_OWNER)

...

 TABPOSITION(1)

...

 TOP(40)
DEFINE_

...

COM CLASS(#PRIM_PHBN)

...

 NAME(#PHBN_1)

...

 CAPTION('Save')

...

 DISPLAYPOSITION(2)

...

 LEFT(53)

...

 PARENT(#COM_OWNER)

...

 TABPOSITION(2)

...

 TOP(192)

...


EVTROUTINE handling(#com_owner.Initialize)

...


SET #com_owner caption(*component_desc)

...


ENDROUTINE
EVTROUTINE HANDLING(#PHBN_1.Click)

...


message 'Field Sex has a Value?'
ENDROUTINE
END_COM

...

フィールドのソース(EMPSEX Alpha(1))

     BEGIN_

...

COM ROLE(*

...

EXTENDS #PRIM_OBJT)

...

     BEGIN_

...

COM ROLE(*

...

Visual #PRIM_EVEF)

...

 NAME(#VisualEdit)

...

 HEIGHT(19)

...

 USEPICKLIST(False)

...

 WIDTH(178)

...


END_COM

...


* Define Picklist Visualization
BEGIN_COM ROLE(*Visual #PRIM_EVPL) NAME(#PICKLIST) DEFAULTVISUAL(True) HEIGHT(44) MARGINLEFT(50) WIDTH(167)
End_Com
* Define the Picklist
BEGIN_COM ROLE(*picklist) NAME(#LIST)
DEFINE_COM CLASS(#PRIM_PKIT) NAME(#ITEM1) CAPTION('Male') DEFAULT(True) PARENT(#LIST) VALUE('M')
DEFINE_COM CLASS(#PRIM_PKIT) NAME(#ITEM2) CAPTION('Female') PARENT(#LIST) VALUE('F')
End_Com
BEGIN_COM ROLE(*Visual #PRIM_EVPL) NAME(#Dropdown) APPEARANCE(DropDownList) HEIGHT(69) WIDTH(209)
END_COM
END_COM