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

繼承Timer,將1000毫秒改成1秒即觸發

答題得分者是:pedro
yoyo12345
一般會員


發表:33
回覆:77
積分:22
註冊:2003-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-25 10:15:39 IP:61.220.xxx.xxx 未訂閱
將1000毫秒改成1秒即觸發 我用改寫的方式,FInterval*1000 procedure TMinTimer.UpdateTimer; begin KillTimer(FWindowHandle, 1); if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then if SetTimer(FWindowHandle, 1, FInterval*1000, nil) = 0 then raise EOutOfResources.Create(SNoTimers); end; 請問若是繼承,該怎麼做?
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-25 11:16:19 IP:210.61.xxx.xxx 未訂閱
您好 我的做法宣告如下
  TMyTimer=class(TTimer)
  private
    procedure SetIntervalx(Value: Cardinal);
    function GetIntervalx:Cardinal;
  published
    property Intervalx: Cardinal read GetIntervalx write SetIntervalx default 1;
  end;
實作如下
function TMyTimer.GetIntervalx: Cardinal;
begin
  Result:=Interval div 1000;
end;    procedure TMyTimer.SetIntervalx(Value: Cardinal);
begin
  Interval:=Value*1000;
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  ti:TMyTimer;
begin
  ti:=TMyTimer.Create(Self);
  ti.Intervalx:=1;
  ti.OnTimer:=Timer1Timer;
  ti.Enabled:=True;
end;
給您參考看看, 或許對您有幫助
sos_admin
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-25 11:38:33 IP:61.155.xxx.xxx 未訂閱
unit Timer1; interface uses SysUtils, Classes, ExtCtrls,windows; type TTimer1 = class(TTimer) private FInterval:integer; function get_FInterval:integer; procedure set_FInterval(value:integer); { Private declarations } protected { Protected declarations } public { Public declarations } published property UpdateTimer:integer read get_FInterval write set_FInterval ; { Published declarations } end; procedure Register; implementation function TTimer1.get_FInterval:integer; begin result:=FInterval; end; procedure TTimer1.set_FInterval(value:integer); begin FInterval:=value*1000; self.Interval:=FInterval; end; procedure Register; begin RegisterComponents('Samples', [TTimer1]); end; end. 重新定义一下就可以了,如上:
yoyo12345
一般會員


發表:33
回覆:77
積分:22
註冊:2003-03-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-25 14:56:13 IP:203.69.xxx.xxx 未訂閱
兩位前輩好~~ 兩位的範例,都是建立建屬性~(intervalx或UpdateTimer) 若改成原屬性interval 就會當掉~~該怎麼做呢?
yoyo12345
一般會員


發表:33
回覆:77
積分:22
註冊:2003-03-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-25 15:09:39 IP:61.220.xxx.xxx 未訂閱
哇~~可以了 原來不是用override,而用inherited繼承~ 謝謝兩位~~
系統時間:2024-11-01 6:49:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!