繼承Timer,將1000毫秒改成1秒即觸發 |
答題得分者是:pedro
|
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
將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 發送簡訊給我 |
您好
我的做法宣告如下
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 發送簡訊給我 |
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 發送簡訊給我 |
|
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |