Page History
再利用可能パーツ(この例では、#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


