[ |../../index.htm#lansa/l4wdev06_1000.htm]
現在地:

2.16.3.1 日付表示再利用可能パーツの作成

再利用可能パーツ(この例では、#EOEXAM04)を作成します。以下のソース・コードをコピーして貼り付けます。
GroupプロパティをDates & Timesに設定してから、コンパイルします。
再利用可能パーツには、日付を入力できる入力フィールドと、フォーマットされた日付を表示するラベルがあります。

このパーツが(フォーム内で)実行されると、以下のように見えます。

パーツには、以下の3つのユーザー定義のプロパティがあります。

uCaption

日付フィールドのキャプションを設定します。

uDate

入力を設定して検証し、取得します。

UInError

日付フィールドの検証に失敗するとTrueに設定されます。

 
日付表示再利用可能パーツのソース
FUNCTION options(*DIRECT) BEGIN_COM role(*EXTENDS #PRIM_PANL) DISPLAYPOSITION(1) HEIGHT(19) LEFT(0) TABPOSITION(1) TABSTOP(False) TOP(0) VISUALSTYLE(#VS_NORM) WIDTH(417) DEFINE_COM class(#DATEC.Visual) name(#SHOWDATE) CAPTION('Date') DISPLAYPOSITION(1) HEIGHT(19) LABELTYPE(Caption) MARGINLEFT(120) PARENT(#COM_OWNER) TABPOSITION(1) WIDTH(177) DEFINE_COM class(#PRIM_LABL) name(#SHOWTEXT) CAPTION('<text>') DISPLAYPOSITION(2) HEIGHT(19) LEFT(184) PARENT(#COM_OWNER) TABPOSITION(2) TABSTOP(False) TOP(0) WIDTH(233)   DEFINE field(#RETCODE) type(*CHAR) length(1) desc('Return Code') DEF_COND name(*OKAY) cond('#RetCode = Y') DEFINE field(#CVTDATE) type(*CHAR) length(20)   * Published Properties   DEFINE_PTY name(uCaption) set(Set_uCaption) DEFINE_PTY name(uDate) get(Get_uDate) set(Set_uDate) DEFINE_PTY name(uInError) get(Get_uInError) set(Set_uInError)   * Property Handling routine   PTYROUTINE name(Set_uCaption) DEFINE_MAP for(*input) class(#Std_TextL) name(#Property_001) SET com(#ShowDate) CAPTION(#Property_001.Value) ENDROUTINE   PTYROUTINE name(Set_uInError) DEFINE_MAP for(*input) class(#Std_Bool) name(#Property_002) SET com(#ShowDate) SHOWERROR(#Property_002.Value) ENDROUTINE   PTYROUTINE name(Get_uInError) DEFINE_MAP for(*Output) class(#Std_Bool) name(#Property_002) SET com(#Property_002) VALUE(#ShowDate.ShowError) ENDROUTINE   PTYROUTINE name(Set_uDate) DEFINE_MAP for(*input) class(#DateC) name(#Property_003) SET com(#ShowDate) VALUE(#Property_003.Value) INVOKE method(#Com_Self.ValidateDate) ENDROUTINE   PTYROUTINE name(Get_uDate) DEFINE_MAP for(*Output) class(#DateC) name(#Property_003) SET com(#Property_003) VALUE(#ShowDate.Value) ENDROUTINE   * Handle change of date by validating its value   EVTROUTINE handling(#SHOWDATE.Changed) options(*NOCLEARMESSAGES *NOCLEARERRORS) INVOKE method(#Com_Self.ValidateDate) ENDROUTINE   * Method to validate the date   MTHROUTINE name(ValidateDate)   SET com(#Com_Owner) UINERROR(FALSE)   CHANGE field(#DATEC) to('#SHOWDATE.VALUE')   IF_NULL field(#DATEC)   SET com(#ShowText) CAPTION('No date specified')   ELSE   USE builtin(CONVERTDATE) with_args(#DATEC F Q) to_get(#CVTDATE #RETCODE)   IF cond(*OKAY) SET com(#ShowText) CAPTION(#CvtDate) ELSE SET com(#Com_Owner) UINERROR(TRUE) SET com(#ShowText) CAPTION('Invalid Date') ENDIF   ENDIF   ENDROUTINE   END_COM
 
[ |../../index.htm#lansa/l4wdev06_1000.htm]