關於P.D.大大之前發表的程式暫停的方法一問 |
尚未結案
|
DoubleFish2004
一般會員 發表:6 回覆:12 積分:3 註冊:2004-05-25 發送簡訊給我 |
引文來源:
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34239 ---------------------------------------------------------------------
我把重點貼出來 1.在form1.create(...)的最後一行加入 Application.onIdle:= StartRun; 2.在 private 下面加入
procedure StartRun(Sender: Tobject; var Done: boolean); 3.在 {$R *.DFM} 下加入 procedure TForm1.StartRun(Sender: Tobject; var Done: boolean);
var xhandle: longInt;
btime, etime: loginint;
begin
xhandle:= FindWindow('TForm1',nil);
if xhandle = 0 then exit;
Application.ProcessMessages;
Application.OnIdle:= nil;
Done:= True; btime:= gettickCount;
etime:= getTickCount;
repeat
Application.ProcessMessage;
etime:= getTickCount;
until etime-btime > 5000;
Form1.Close;
end; 4.在 form1.close 加入 Action:= caFree;
Form1:= nil; 原因:
在oncreate 未完成前如果執行任何close行為, 會導致Access的不可預期錯誤
所以加入 Application.onIdle:= StartRun, 指Form1 create完成, 會執行一個
onIdle事件, 這時我們指定onIdle去執行一個procedure, 在此做五杪的計數然
後關閉--OK!
另外, 使用 getTickCount 會比Timer來的方便, 而且至少我認為會比timer精準
提供你做建議~~
--------------------------------------------------------------------- 上面是以時間為基準,5秒後執行close
那如果我是希望能在FormShow事件完成後執行一個自訂的Procedure
那該如何判定FormShow事件是否完成了呢?
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |