[ |../../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
[ |../../index.htm#lansa/l4wdev03_0265.htm]