2

私はこのコードを実行します:

1.THIS.ENABLED = .F.     && suspend timer
2.
3.lnTotFiles = ADIR(laFiles, "*.ERA")
4.FOR lnCntFiles = 1 TO lnTotFiles
5.     DO myprocess WITH laFiles[lnCntFiles,1]
6.     IF THISFORM.cmdPause.CLICK()
7.          MESSAGEBOX("Click OK to resume processing")
8.     ENDIF
9.NEXT lnCntFiles
10.
11.THIS.ENABLED = .T.   && reactivate timer

問題は、Timer イベントの THISFORM.cmdPause.CLICK() が常に .T を返すことです。[一時停止] コマンド ボタンをクリックするかどうか。

cmdPause.CLICK() には次が含まれます。

1.IF THISFORM.cmdPause.CAPTION = "Pause"
2. THISFORM.cmdPause.CAPTION = "Resume"
3. THISFORM.tmrChkDir.ENABLED = .F. 
4.ELSE 5. THISFORM.cmdPause.CAPTION = "Pause" 
6. THISFORM.tmrChkDir.ENABLED = .T. 
7.ENDIF 

タイマー イベントの FOR-NEXT ループ内で一時停止ボタンがクリックされたかどうかをテストするにはどうすればよいでしょうか。

4

1 に答える 1

3

これを試して:

THIS.ENABLED = .F.     && suspend timer
lnTotFiles = ADIR(laFiles, "*.ERA")
FOR lnCntFiles = 1 TO lnTotFiles
DO myprocess WITH laFiles[lnCntFiles,1]
DOEVENTS     
DO WHILE .T.
IF THISFORM.cmdPause.ENABLED
EXIT
ENDIF
DOEVENTS
ENDDO
NEXT lnCntFiles
THIS.ENABLED = .T.   && reactivate timer
于 2013-08-19T19:32:47.470 に答える