Page History
フォークがお互いに継承できる方法を見るために、他のフォームの祖先として使用されるフォームを作成します。祖先のフォームには、ファイルメニューとステータス・バーがあります。
Ancestor フォームのソースをコピーし、フォームに貼り付けてコンパイルできます。この例では、祖先のフォームをEOEXAM01とします。
EOEXAM01を実行すると、3つのオプションがあるファイルメニューと、現在のユーザー、日付、および時間が表示されるステータス・バーが表示されます。
フォームには、5秒ごとに時間を更新するタイマーが含まれます。
メッセージ・ボックスを表示するファイルメニュー・オプションのイベント・ルーチンも含まれます。例えば終了オプションが選択されると、以下のメッセージ・ボックスでアクションを確認します。
祖先のフォームのソース
***************************************************
...
*
* COMPONENT: STD_FORM
*
***************************************************
...
FUNCTION OPTIONS(*DIRECT)
BEGIN_
...
COM LEFT(340)
...
MENUBAR(#MBAR_1)
...
TOP(132)
...
VISUALSTYLE(#VS_NORM)
DEFINE_
...
COM CLASS(#PRIM_STBR)
...
NAME(#STBR_1)
...
DISPLAYPOSITION(1)
...
HEIGHT(24)
...
LEFT(0)
...
MESSAGEPOSITION(1)
...
PARENT(#COM_OWNER)
...
TABPOSITION(1)
...
TABSTOP(False)
...
TOP(270)
...
WIDTH(492)
DEFINE_
...
COM CLASS(#USER.Visual)
...
NAME(#USER)
...
DISPLAYPOSITION(1)
...
HEIGHT(18)
...
LEFT(285)
...
MARGINLEFT(0)
...
PARENT(#STBR_1)
...
READONLY(True)
...
TABPOSITION(1)
...
TABSTOP(False)
...
TOP(4)
...
WIDTH(71)
DEFINE_
...
COM CLASS(#DATE.Visual)
...
NAME(#DATE)
...
DISPLAYPOSITION(2)
...
HEIGHT(18)
...
LEFT(358)
...
MARGINLEFT(0)
...
PARENT(#STBR_1)
...
READONLY(True)
...
TABPOSITION(2)
...
TABSTOP(False)
...
TOP(4)
...
WIDTH(61)
DEFINE_
...
COM CLASS(#TIME.Visual)
...
NAME(#TIME)
...
DISPLAYPOSITION(3)
...
HEIGHT(18)
...
LEFT(421)
...
MARGINLEFT(0)
...
PARENT(#STBR_1)
...
READONLY(True)
...
TABPOSITION(3)
...
TABSTOP(False)
...
TOP(4)
...
WIDTH(54)
DEFINE_
...
COM CLASS(#PRIM_TIMR)
...
NAME(#TIMER)
...
INTERVAL(5000)
DEFINE_
...
COM CLASS(#PRIM_MBAR)
...
NAME(#MBAR_1)
...
PARENT(#COM_OWNER)
DEFINE_
...
COM CLASS(#PRIM_MITM)
...
NAME(#MITM_1)
...
CAPTION('File')
...
DISPLAYPOSITION(1)
...
PARENT(#MBAR_1)
DEFINE_
...
COM CLASS(#PRIM_SMNU)
...
NAME(#SMNU_1)
...
PARENT(#MITM_1)
DEFINE_
...
COM CLASS(#PRIM_MITM)
...
NAME(#MITM_FILE_OPEN)
...
CAPTION('Open')
...
DISPLAYPOSITION(1)
...
PARENT(#SMNU_1)
DEFINE_
...
COM CLASS(#PRIM_MITM)
...
NAME(#MITM_FILE_CLOSE)
...
CAPTION('Close')
...
DISPLAYPOSITION(2)
...
PARENT(#SMNU_1)
DEFINE_
...
COM CLASS(#PRIM_MITM)
...
NAME(#MITM_EXIT)
...
CAPTION('Exit')
...
DISPLAYPOSITION(3)
...
PARENT(#SMNU_1)
...
* Initialize the details on th status bar
EVTROUTINE HANDLING(#Com_Owner.Initialize)
...
OPTIONS(*
...
NOCLEARMESSAGES *NOCLEARERRORS)
...
Change #User *User
...
Change #Date *Date
...
Change #Time *Time
ENDROUTINE
...
* Update the time on the status bar every 5 seconds (5000 milliseconds)
EVTROUTINE HANDLING(#TIMER.Tick)
...
OPTIONS(*
...
NOCLEARMESSAGES *NOCLEARERRORS)
...
Change #Time *Time
ENDROUTINE
...
* Handle Exit request by attempting to close the form
EVTROUTINE HANDLING(#MITM_EXIT.Click)
...
OPTIONS(*
...
NOCLEARMESSAGES *NOCLEARERRORS)
...
Invoke #Com_Self.CloseForm
ENDROUTINE
...
* Handle file open menu item by invoking the "HandleFileOpen"
...
method
EVTROUTINE HANDLING(#MITM_File_Open.Click)
...
OPTIONS(*
...
NOCLEARMESSAGES *NOCLEARERRORS)
...
Invoke #Com_Self.HandleFileOpen
ENDROUTINE
...
* Handle file close menu item by invoking the "HandleFileClose"
...
method
EVTROUTINE HANDLING(#MITM_File_Close.Click)
...
OPTIONS(*
...
NOCLEARMESSAGES *NOCLEARERRORS)
...
Invoke #Com_Self.HandleFileClose
ENDROUTINE
...
* Handle a request to close the form by getting a confirmation
EVTROUTINE HANDLING(#Com_Owner.Closing)
...
OPTIONS(*
...
NOCLEARMESSAGES *NOCLEARERRORS)
...
Action(#AfterCloseAction)
...
Use Message_Box_
...
Show (okCancel Ok Info #Com_Self.
...
Name 'Are you sure you want to close the form?') (#Std_Obj)
...
If '#Std_
...
Obj =
...
Cancel'
...
Set #AfterCloseAction Value(None)
Endif
ENDROUTINE
...
* Default method "HandleFileOpen".
...
Typically this is redefined by a descendant
Mthroutine HandleFileOpen
Use Message_Box_Show (ok Ok Info #Com_Owner.Name 'Ancestor HandleFileOpen method invoked') (#Std_Obj)
Endroutine
...
* Default method "HandleFileClose".
...
Typically this is redefined by a descendant
Mthroutine HandleFileClose
Use Message_Box_Show (ok Ok Info #Com_Owner.Name 'Ancestor HandleFileClose method invoked') (#Std_Obj)
Endroutine
...
END_
...
COM





