亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aatimer.pas

?? 進度條 進度條 進度條 進度條 進度條 進度條
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
      begin
        TimerObject.Free;
        Delete(i);
        Exit;
      end;
  finally
    FTimerList.UnlockList;
  end;
end;

procedure TAATimerMgr.DoTimer(Sycn: Boolean);
var
  i: Integer;
  CurrTick: Cardinal;
begin
  with FTimerList.LockList do
  try
    CurrTick := GetTickCount;
    for i := 0 to Count - 1 do
      with TAATimerObject(Items[i]) do
        if Enabled and (Interval <> 0) and (SyncEvent = Sycn) and
          (CurrTick - FLastTickCount >= Interval) and Assigned(FOnTimer) then
        begin
          if CurrTick <> FLastTickCount then
            FActualFPS := 1000 / (CurrTick - FLastTickCount)
          else
            FActualFPS := 0;
          FLastTickCount := CurrTick;
          Timer;
        end;
  finally
    FTimerList.UnlockList;
  end;
end;

procedure TAATimerMgr.SyncTimer;
begin
  try
    DoTimer(True);
  except
    Application.HandleException(Self);
  end
end;

procedure TAATimerMgr.Timer;
begin
  try
    DoTimer(False);
  except
    Application.HandleException(Self);
  end
end;

var
  TimerMgr: TAATimerMgr;

function GetTimerMgr: TAATimerMgr;
begin
  if TimerMgr = nil then
    TimerMgr := TAATimerMgr.Create;
  Result := TimerMgr;
end;

//==============================================================================
// 高精度定時器對象
//==============================================================================

{ TAATimerObject }

constructor TAATimerObject.Create;
begin
  inherited Create;
  FEnabled := True;
  FExecCount := 0;
  FInterval := 1000;
  FLastTickCount := GetTickCount;
  FRepeatCount := 0;
  FSyncEvent := True;
end;

destructor TAATimerObject.Destroy;
begin
end;

function TAATimerObject.GetFPS: Double;
begin
  if Interval = 0 then
    Result := 0
  else
    Result := 1000 / Interval;
end;

procedure TAATimerObject.SetEnabled(Value: Boolean);
begin
  if FEnabled <> Value then
  begin
    FEnabled := Value;
    FExecCount := 0;
    if FEnabled then
    begin
      FLastTickCount := GetTickCount;
    end;
  end;
end;

procedure TAATimerObject.SetFPS(Value: Double);
begin
  if Value < 0 then
    Exit
  else if Value < 1 / High(Word) then
    Value := 1 / High(Word)
  else if Value > 1000 then
    Value := 1000;
  FInterval := Round(1000 / Value);
end;

procedure TAATimerObject.SetInterval(Value: Cardinal);
begin
  if FInterval <> Value then
  begin
    FInterval := Value;
    FLastTickCount := GetTickCount;
  end;
end;

procedure TAATimerObject.SetRepeatCount(Value: Cardinal);
begin
  if FRepeatCount <> Value then
  begin
    FRepeatCount := Value;
  end;
end;

procedure TAATimerObject.Timer;
begin
  Inc(FExecCount);
  if Assigned(FOnTimer) then FOnTimer(Self);
  if (RepeatCount <> 0) and (FExecCount >= RepeatCount) then
  begin
    Enabled := False;
  end;
end;

//==============================================================================
// 高精度定時器組件
//==============================================================================

{ TAATimer }

constructor TAATimer.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FTimerObject := GetTimerMgr.AddTimer;
end;

destructor TAATimer.Destroy;
begin
  GetTimerMgr.DeleteTimer(FTimerObject);
  inherited Destroy;
end;

function TAATimer.GetActualFPS: Double;
begin
  Result := FTimerObject.ActualFPS;
end;

function TAATimer.GetEnabled: Boolean;
begin
  Result := FTimerObject.Enabled;
end;

function TAATimer.GetExecCount: Cardinal;
begin
  Result := FTimerObject.ExecCount;
end;

function TAATimer.GetFPS: Double;
begin
  Result := FTimerObject.FPS;
end;

function TAATimer.GetInterval: Cardinal;
begin
  Result := FTimerObject.Interval;
end;

function TAATimer.GetOnTimer: TNotifyEvent;
begin
  Result := FTimerObject.OnTimer;
end;

function TAATimer.GetRepeatCount: Cardinal;
begin
  Result := FTimerObject.RepeatCount;
end;

function TAATimer.GetSyncEvent: Boolean;
begin
  Result := FTimerObject.SyncEvent;
end;

procedure TAATimer.SetEnabled(Value: Boolean);
begin
  FTimerObject.Enabled := Value;
end;

procedure TAATimer.SetFPS(Value: Double);
begin
  FTimerObject.FPS := Value;
end;

procedure TAATimer.SetInterval(Value: Cardinal);
begin
  FTimerObject.Interval := Value;
end;

procedure TAATimer.SetOnTimer(Value: TNotifyEvent);
begin
  FTimerObject.OnTimer := Value;
end;

procedure TAATimer.SetRepeatCount(Value: Cardinal);
begin
  FTimerObject.RepeatCount := Value;
end;

procedure TAATimer.SetSyncEvent(Value: Boolean);
begin
  FTimerObject.SyncEvent := Value;
end;

//==============================================================================
// 高精度定時器列表集合子項
//==============================================================================

{ TAATimerItem }

constructor TAATimerItem.Create(Collection: TCollection);
begin
  inherited Create(Collection);
  FTimerObject := GetTimerMgr.AddTimer;
  FTimerObject.OnTimer := Timer;
end;

destructor TAATimerItem.Destroy;
begin
  GetTimerMgr.DeleteTimer(FTimerObject);
  inherited Destroy;
end;

procedure TAATimerItem.Assign(Source: TPersistent);
begin
  if Source is TAATimerItem then
  begin
    Enabled := TAATimerItem(Source).Enabled;
    Interval := TAATimerItem(Source).Interval;
    RepeatCount := TAATimerItem(Source).RepeatCount;
    SyncEvent := TAATimerItem(Source).SyncEvent;
  end
  else
    inherited;
end;

function TAATimerItem.GetActualFPS: Double;
begin
  Result := FTimerObject.ActualFPS;
end;

function TAATimerItem.GetEnabled: Boolean;
begin
  Result := FTimerObject.Enabled;
end;

function TAATimerItem.GetExecCount: Cardinal;
begin
  Result := FTimerObject.ExecCount;
end;

function TAATimerItem.GetFPS: Double;
begin
  Result := FTimerObject.FPS;
end;

function TAATimerItem.GetInterval: Cardinal;
begin
  Result := FTimerObject.Interval;
end;

function TAATimerItem.GetRepeatCount: Cardinal;
begin
  Result := FTimerObject.RepeatCount;
end;

function TAATimerItem.GetSyncEvent: Boolean;
begin
  Result := FTimerObject.SyncEvent;
end;

procedure TAATimerItem.SetEnabled(Value: Boolean);
begin
  FTimerObject.Enabled := Value;
end;

procedure TAATimerItem.SetFPS(Value: Double);
begin
  FTimerObject.FPS := Value;
end;

procedure TAATimerItem.SetInterval(Value: Cardinal);
begin
  FTimerObject.Interval := Value;
end;

procedure TAATimerItem.SetRepeatCount(Value: Cardinal);
begin
  FTimerObject.RepeatCount := Value;
end;

procedure TAATimerItem.SetSyncEvent(Value: Boolean);
begin
  FTimerObject.SyncEvent := Value;
end;

procedure TAATimerItem.Timer(Sender: TObject);
begin
  if not TAATimerList(TAATimerCollection(Collection).GetOwner).Timer(Index) then
    if Assigned(FOnTimer) then
      FOnTimer(Self);
end;

//==============================================================================
// 高精度定時器列表集合類
//==============================================================================

{ TAATimerCollection }

constructor TAATimerCollection.Create(AOwner: TPersistent);
begin
  inherited Create(AOwner, TAATimerItem);
  Assert(AOwner is TAATimerList);
end;

function TAATimerCollection.GetItems(Index: Integer): TAATimerItem;
begin
  Result := TAATimerItem(inherited Items[Index]);
end;

procedure TAATimerCollection.SetItems(Index: Integer; Value: TAATimerItem);
begin
  inherited Items[Index] := Value;
end;

//==============================================================================
// 高精度定時器列表組件
//==============================================================================

{ TAATimerList }

constructor TAATimerList.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FItems := TAATimerCollection.Create(Self);
end;

destructor TAATimerList.Destroy;
begin
  FItems.Free;
  inherited Destroy;
end;

procedure TAATimerList.SetItems(Value: TAATimerCollection);
begin
  FItems.Assign(Value);
end;

function TAATimerList.Timer(Index: Integer): Boolean;
begin
  Result := False;
  if Assigned(FOnTimer) then
    FOnTimer(Self, Index, Result);
end;

initialization

finalization
  if TimerMgr <> nil then
    TimerMgr.Free;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片一区二区三区| 日韩免费看网站| 91网址在线看| 成人av资源网站| 99综合电影在线视频| 成人动漫精品一区二区| 国产剧情在线观看一区二区| 国内精品久久久久影院色| 精品一区二区三区在线观看| 久久er精品视频| 国产一区在线观看视频| 国产黄人亚洲片| 国产aⅴ精品一区二区三区色成熟| 国产麻豆精品在线| 国产一本一道久久香蕉| 岛国精品在线观看| 91网站黄www| 欧美日本视频在线| 精品美女在线播放| 国产精品你懂的在线欣赏| 亚洲精选视频免费看| 亚洲国产日韩a在线播放| 日日噜噜夜夜狠狠视频欧美人| 丝袜美腿亚洲综合| 狠狠色综合播放一区二区| 成人一区二区三区| 91免费观看在线| 欧美日韩成人激情| 久久久久一区二区三区四区| 国产精品二区一区二区aⅴ污介绍| 一区二区成人在线| 蜜桃av噜噜一区| 9i在线看片成人免费| 欧美视频一区二区三区在线观看 | 国产69精品久久久久777| 99精品视频一区二区三区| 欧美日韩一区久久| 精品少妇一区二区三区日产乱码 | 欧美美女直播网站| 2020日本不卡一区二区视频| 中文字幕一区二区三区四区不卡| 亚洲国产视频在线| 国产尤物一区二区| 欧美亚洲愉拍一区二区| 精品国产成人在线影院| 亚洲美女少妇撒尿| 九色porny丨国产精品| 91亚洲精品久久久蜜桃| 欧美一级在线观看| 最新不卡av在线| 久久国产视频网| 欧美专区亚洲专区| 国产欧美一区二区精品忘忧草| 亚洲一区免费在线观看| 国产成人午夜99999| 3d动漫精品啪啪一区二区竹菊| 欧美激情中文不卡| 免费成人在线观看视频| 97久久超碰国产精品| 26uuu成人网一区二区三区| 亚洲黄色av一区| 国产精品996| 欧美一区二区三区视频免费播放 | 精品综合久久久久久8888| 色婷婷av一区二区三区软件| 久久一夜天堂av一区二区三区| 亚洲午夜精品一区二区三区他趣| 国产91精品精华液一区二区三区| 欧美一区午夜精品| 亚洲精品国产精华液| 丰满白嫩尤物一区二区| 精品国产免费久久 | 欧美性感一区二区三区| 国产精品嫩草久久久久| 国产在线麻豆精品观看| 在线成人免费视频| 亚洲一区二区三区四区在线| jvid福利写真一区二区三区| 久久免费看少妇高潮| 男女男精品视频网| 日本高清成人免费播放| 国产精品网站在线观看| 国产精品综合网| 日韩女优制服丝袜电影| 日韩综合小视频| 欧美性xxxxx极品少妇| 亚洲精品免费一二三区| 99国内精品久久| 中文字幕在线不卡视频| 成人小视频在线观看| 国产欧美一区二区精品忘忧草| 九九**精品视频免费播放| 日韩一区二区麻豆国产| 日本v片在线高清不卡在线观看| 欧美性淫爽ww久久久久无| 成人免费在线观看入口| 成人99免费视频| 中文字幕在线视频一区| 成人高清伦理免费影院在线观看| 国产三区在线成人av| 国产成人h网站| 日本一区二区三区国色天香| 成人av一区二区三区| 亚洲国产成人午夜在线一区| 国产成a人亚洲精品| 国产精品三级av| 91麻豆swag| 亚洲国产wwwccc36天堂| 欧美精品久久久久久久多人混战 | 成人午夜在线免费| 中文字幕中文字幕一区二区| 色综合久久久久综合体桃花网| 一区二区三区在线观看欧美| 91国偷自产一区二区三区成为亚洲经典| 亚洲日本中文字幕区| 欧美性欧美巨大黑白大战| 亚洲图片欧美色图| 欧美一级日韩一级| 韩国精品一区二区| 中文字幕精品一区二区三区精品| 成人高清免费观看| 一区二区三区在线免费观看| 欧美高清dvd| 国内外精品视频| 国产精品久久久久影院色老大| aaa欧美日韩| 亚洲成人午夜影院| 欧美xxxxxxxx| 福利一区二区在线| 一区二区三区中文字幕| 制服丝袜激情欧洲亚洲| 国模冰冰炮一区二区| 国产精品麻豆视频| 欧美日韩一区二区三区视频| 美女性感视频久久| 国产女人aaa级久久久级 | 国产蜜臀av在线一区二区三区| av一区二区不卡| 午夜精品成人在线| 久久久综合激的五月天| 99久久精品免费观看| 免费人成在线不卡| 亚洲欧洲成人精品av97| 91麻豆精品国产91久久久久久久久 | 欧洲一区二区av| 美女脱光内衣内裤视频久久影院| 日本一区二区在线不卡| 欧美性极品少妇| 高清久久久久久| 日韩精品成人一区二区在线| 中文字幕高清一区| 欧美一级二级三级蜜桃| www.av精品| 久久aⅴ国产欧美74aaa| 综合亚洲深深色噜噜狠狠网站| 欧美一区二区三区啪啪| 91美女在线看| 精品亚洲成a人在线观看| 日本一区二区成人在线| 51精品久久久久久久蜜臀| 97久久精品人人澡人人爽| 喷白浆一区二区| 成人午夜大片免费观看| 最新高清无码专区| 精品国产免费视频| 欧美羞羞免费网站| 国产成人在线视频网站| 同产精品九九九| 国产精品久久久久久久久久免费看 | 国产成人a级片| 美女精品一区二区| 亚洲精品乱码久久久久久久久| 欧美一区二区福利在线| 色婷婷av久久久久久久| 国产91丝袜在线观看| 蜜桃在线一区二区三区| 亚洲黄色免费电影| 中文字幕一区二区三区四区| 欧美成人乱码一区二区三区| 欧美人伦禁忌dvd放荡欲情| www.日韩av| 国产成+人+日韩+欧美+亚洲| 免费欧美在线视频| 亚洲福利一区二区三区| 亚洲少妇最新在线视频| 欧美国产综合色视频| 精品国产乱码久久久久久1区2区| 欧美日韩免费一区二区三区| 色综合久久综合网欧美综合网| 亚洲女与黑人做爰| 欧美制服丝袜第一页| 国产欧美一区二区在线| 日韩免费视频线观看| 男女视频一区二区| 日韩精品专区在线| 在线亚洲免费视频| 51久久夜色精品国产麻豆| 久久久久亚洲蜜桃| 国产成人免费在线观看| 不卡的av电影在线观看|