timer的暂停运行 |
答題得分者是:st33chen
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
參考一下 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Timer1: TTimer; Button1: TButton; Timer2: TTimer; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; cnt : integer; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin cnt := 60; label1.Caption := inttostr(cnt); label1.Refresh; timer1.Enabled := true; timer2.enabled := true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin timer1.Enabled := false; timer2.Enabled := false; showmessage('timer1 time out'); timer1.Interval := 60000; cnt :=60; timer1.Enabled := true; timer2.Enabled := true; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if cnt<=1 then cnt:=60 else begin cnt := cnt-1; end; label1.Caption := inttostr(cnt); label1.Refresh; end; procedure TForm1.Button2Click(Sender: TObject); begin timer2.Enabled := false; form2.showmodal; end; procedure TForm1.FormShow(Sender: TObject); begin timer1.Enabled := false; timer2.Enabled := false; timer1.Interval := 60000; timer2.Interval := 1000; end; end. ------------------------------------------------------------------- unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Label1: TLabel; procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses Unit1; {$R *.dfm} procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin form1.timer1.interval := cnt * 1000; form1.timer2.enabled := true; end; end.
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
小傑克
資深會員 發表:5 回覆:209 積分:357 註冊:2009-02-16 發送簡訊給我 |
應該不用很複雜 , 如樓上max5020大說的, 改成計數器簡單就能完成
[code delphi] var Form1: TForm1; iCount:integer; // 設一個global variable implementation procedure TForm1.Button1Click(Sender: TObject); begin timer1.Enabled := false; form2.ShowModal; // form2 顯示前先暫停, form2 關閉在繼續 timer1.Enabled := true; end; // procedure TForm1.Timer1Timer(Sender: TObject); begin if iCount = 60 then begin iCount := 0; // 如果60秒就歸0 // 想執行的程式, timer 原來要做的工作寫在這邊 // 想執行的程式, timer 原來要做的工作寫在這邊 // 想執行的程式, timer 原來要做的工作寫在這邊 // 想執行的程式, timer 原來要做的工作寫在這邊 end else inc(iCount); //自己計數 end; // procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval := 1000; // timer 每秒跳一次 iCount := 0; end; [/code]
------
額有朝天骨,眼中有靈光
編輯記錄
小傑克 重新編輯於 2009-05-14 18:17:06, 註解 無‧
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
terrygobb
一般會員 發表:5 回覆:22 積分:5 註冊:2009-04-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |