Versions Compared

Key

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

再利用可能パーツ(この例では、#EOEXAM04)を作成します。以下のソース・コードをコピーして貼り付けます。

GroupプロパティをDates & Timesに設定してから、コンパイルします。

再利用可能パーツには、日付を入力できる入力フィールドと、フォーマットされた日付を表示するラベルがあります。

...

Image Added

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

Image RemovedImage Added

パーツには、以下の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