Versions Compared

Key

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

フォークがお互いに継承できる方法を見るために、他のフォームの祖先として使用されるフォームを作成します。祖先のフォームには、ファイルメニューとステータス・バーがあります。

Image RemovedImage Added

Ancestor フォームのソースをコピーし、フォームに貼り付けてコンパイルできます。この例では、祖先のフォームをEOEXAM01とします。

EOEXAM01を実行すると、3つのオプションがあるファイルメニューと、現在のユーザー、日付、および時間が表示されるステータス・バーが表示されます。

Image AddedImage Removed
フォームには、5秒ごとに時間を更新するタイマーが含まれます。

メッセージ・ボックスを表示するファイルメニュー・オプションのイベント・ルーチンも含まれます。例えば終了オプションが選択されると、以下のメッセージ・ボックスでアクションを確認します。

Image RemovedImage Added

祖先のフォームのソース

     ***************************************************

...

     *                                                 
* 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