Versions Compared

Key

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

...

次の小さな例では、コマンド・ハンドラーの主な非同期の機能がいくつか紹介されています。 

     Begin_Com Role(*EXTENDS #VF_AC010O) Height(241) Width(457)
Define_Com Class(#PRIM_LABL) Name(#VisibleCounter) Displayposition(1) Height(129) Left(16) Parent(#COM_OWNER) Tabposition(1) Tabstop(False) Top(56) Width(401) Verticalalignment(Center) Style(#BigFont) Caption('Stopped') Alignment(Center)
Define_Com Class(#Prim_phbn) Name(#StartCount) Parent(#COM_OWNER) Caption('Start Count') Displayposition(3) Tabposition(3)
Define_Com Class(#Prim_phbn) Name(#StopCount) Parent(#COM_OWNER) Caption('Stop Count') Displayposition(2) Tabposition(2) Left(96)
Define_Com Class(#Prim_vs.Style) Name(#BigFont) Fontsize(72) Textcolor(Blue)
     *------------------------------------------------------------------------------
Evtroutine Handling(#StartCount.Click)
Define_Com Class(#std_Int) Name(#PhysicalCounter)
#Com_Owner.avQueueAsyncOperation Operationid(Count) Parameterreference1(#PhysicalCounter)
Endroutine
 *------------------------------------------------------------------------------
Evtroutine Handling(#StopCount.Click)
#Com_Owner.avQueueAsyncOperation Operationid(Stop)
Endroutine
 *------------------------------------------------------------------------------
Mthroutine Name(avExecuteAsyncOperation) Options(*REDEFINE)
Define_Com Class(#std_Int) Name(#UseCounter) Reference(*DYNAMIC)
Case (#OperationID)
When (= Count)
#UseCounter <= #ParameterReference1 *As #Std_Int
#UseCounter += 1
#VisibleCounter := #UseCounter.AsString
#Com_Owner.avQueueAsyncOperation Operationid(Count) Parameterreference1(#UseCounter)
When (= Stop)
#VisibleCounter := "Stopped"
#KillOtherPendingOperations := True
Otherwise
#SYS_WEB.Alert Caption("Unknown operation id " + #OperationID)
Endcase
Endroutine
End_Com

これを実行すると、次のようになります。