全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:744
推到 Plurk!
推到 Facebook!

在回圈內要如何連結其它的Form處理完後,再繼續執行迴圈裡面的程序

答題得分者是:sos_admin
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-26 09:27:50 IP:61.64.xxx.xxx 未訂閱
for i := 1 to MainRecordADOQuery.RecordCount do   begin     tmpDateTime := MainRecordADOQuery.FieldByName('CaptureTime').AsDateTime;       strYear := FormatDateTime('yyyy',tmpDateTime);       strMonth := FormatDateTime('mm',tmpDateTime);       strDay := FormatDateTime('dd',tmpDateTime);       strVISFile := 'c:\images\' + strYear + '\' + strMonth + '\' + strDay + '\' +                     strYear + strMonth + strDay +                     FormatDateTime('hh',tmpDateTime) +                     FormatDateTime('nn',tmpDateTime) +                     FormatDateTime('ss',tmpDateTime) + '11.JPG';          if FileExists(strVISFile) then         begin           Img_CarIPicture.Picture.LoadFromFile(strVISFile);           Edt_CheckCarNumber.Text := MainRecordADOQuery.FieldByName('LPN').AsString;           strLane := MainRecordADOQuery.FieldByName('Lane').AsString;           intCarNumber:=Length(Edt_CheckCarNumber.Text);              if (Edt_CheckCarNumber.Text='') then             begin                  Fm_TemporaryData_KeyIn.Show;             end           else              begin                  YesNo := Search_PPS_ForCarNumber(Edt_CheckCarNumber.Text);               if YesNo = True then                                 begin                   Gbx_NoCarData.Visible := False;                   Gbx_TempCarData.Visible := False;                   Gbx_BasicCarData.Visible := True;                 end               else                 begin                   Fm_TemporaryData_Check.ShowModal();                   //這裡會一直跑回圈 end; end; end; end; 因為會一直跑回圈,是否有辦法可以暫停跑回圈,連結其它的Form處理完後,再繼續執行迴圈裡面的程序?
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-26 09:39:50 IP:61.155.xxx.xxx 未訂閱
方法一:利用多线程处理 方法二:最简单的方法就是在循环中处理部分加入application.ProcessMessages ; 例如下列方式: var i:integer; begin for i:=0 to 10000000 do begin application.ProcessMessages ; memo1.Lines.Add(inttostr(i)); end; end;
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-26 09:55:29 IP:61.64.xxx.xxx 未訂閱
引言: 方法二:最简单的方法就是在循环中处理部分加入application.ProcessMessages ; 例如下列方式: var i:integer; begin for i:=0 to 10000000 do begin application.ProcessMessages ; memo1.Lines.Add(inttostr(i)); end; end;
我很愚昧.... application.ProcessMessages 看不出來有任何作用ㄟ
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-26 10:17:10 IP:61.155.xxx.xxx 未訂閱
procedure ProcessMessages; Call ProcessMessages to permit the application to process messages that are currently in the message queue. ProcessMessages cycles the Windows message loop until it is empty, and then returns control to the application. 我想您是想在执行循环的同时,可以作其它的动作,等其它的动作作完又可以自动的继续循环,是吗?
sword185
一般會員


發表:36
回覆:81
積分:23
註冊:2002-06-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-26 10:32:33 IP:61.64.xxx.xxx 未訂閱
引言: 我想您是想在执行循环的同时,可以作其它的动作,等其它的动作作完又可以自动的继续循环,是吗?
是ㄚ是ㄚ...這個問題可行嗎?
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-26 10:42:25 IP:61.155.xxx.xxx 未訂閱
将这一句加入application.ProcessMessages到程式循环体中即可 如下: for i := 1 to MainRecordADOQuery.RecordCount do begin application.ProcessMessages; .... ....
系統時間:2024-06-28 7:39:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!