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

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

?? aatimer.pas

?? 進度條 進度條 進度條 進度條 進度條 進度條
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*******************************************************************************

                          AAFont - 平滑特效字體控件包
                          ---------------------------
                           (C)Copyright 2001-2004
                            CnPack 開發組 周勁羽

            這一控件包是自由軟件,您可以遵照自由軟件基金會出版的GNU 較
        寬松通用公共許可證協議來修改和重新發布這一程序,或者用許可證的
        第二版,或者(根據您的選擇)用任何更新的版本。

            發布這一控件包的目的是希望它有用,但沒有任何擔保。甚至沒有
        適合特定目的而隱含的擔保。更詳細的情況請參閱 GNU 較寬松通用公
        共許可證。

            您應該已經和控件包一起收到一份 GNU 較寬松通用公共許可證的
        副本。如果還沒有,寫信給:
            Free Software Foundation, Inc., 59 Temple Place - Suite
        330, Boston, MA 02111-1307, USA.

            單元作者:CnPack 開發組 周勁羽
            下載地址:http://www.yygw.net
            電子郵件:yygw@yygw.net

*******************************************************************************}

unit AATimer;
{* |<PRE>
================================================================================
* 軟件名稱:平滑特效字體控件包
* 單元名稱:高精度定時器組件TAATimer單元
* 單元作者:CnPack 開發組 周勁羽
* 備    注:- Delphi自帶的TTimer使用操作系統以消息方式提供的定時器,在Win9X下
*             定時精度僅為55ms,NT下約10ms。
*           - TAATimer采用單獨的線程進行定時控制,精度比TTimer要高,相應地也占
*             用較多的CPU資源,其使用方式與TTimer完成兼容,并提供了更多的功能。
*           - TAATimerList定時器列表可以同時產生多個定時器。
*           - 所有定時器使用同一個線程定時,適合大量使用的場合。
*           - 由于Win32是搶占式多任務操作系統,各個線程輪流享用CPU時間片,如果
*             其它的線程占用大量CPU時間,即使設置最高精度,也不一定能保證精確
*             的定時間隔。
* 開發平臺:PWin98SE + Delphi 5.0
* 兼容測試:PWin9X/2000/XP + Delphi 5/6
* 本 地 化:該單元中的字符串均符合本地化處理方式
* 更新記錄:2002.11.05 V2.0
*               重寫全部代碼,增加定時器列表,所有定時器使用同一線程定時
*           2002.04.18 V1.0
*               創建單元
================================================================================
|</PRE>}

interface

{$I AAFont.inc}

uses
  Windows, SysUtils, Classes, Forms;

type

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

{ TAATimerObject }

  TAATimerObject = class(TObject)
  private
    FActualFPS: Double;
    FEnabled: Boolean;
    FExecCount: Cardinal;
    FInterval: Cardinal;
    FLastTickCount: Cardinal;
    FOnTimer: TNotifyEvent;
    FRepeatCount: Cardinal;
    FSyncEvent: Boolean;
    function GetFPS: Double;
    procedure SetEnabled(Value: Boolean);
    procedure SetFPS(Value: Double);
    procedure SetInterval(Value: Cardinal);
    procedure SetRepeatCount(Value: Cardinal);
  protected
    procedure Timer; dynamic;
  public
    constructor Create;
    destructor Destroy; override;
    property ActualFPS: Double read FActualFPS;
    property ExecCount: Cardinal read FExecCount;
  published
    property Enabled: Boolean read FEnabled write SetEnabled default True;
    property FPS: Double read GetFPS write SetFPS stored False;
    property Interval: Cardinal read FInterval write SetInterval default 1000;
    property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
    property RepeatCount: Cardinal read FRepeatCount write SetRepeatCount
      default 0;
    property SyncEvent: Boolean read FSyncEvent write FSyncEvent default True;
  end;

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

{ TAATimer }

  TAATimer = class(TComponent)
  {* 線程定時器組件,使用方法類似 TTimer。}
  private
    FTimerObject: TAATimerObject;
    function GetActualFPS: Double;
    function GetEnabled: Boolean;
    function GetExecCount: Cardinal;
    function GetFPS: Double;
    function GetInterval: Cardinal;
    function GetOnTimer: TNotifyEvent;
    function GetRepeatCount: Cardinal;
    function GetSyncEvent: Boolean;
    procedure SetEnabled(Value: Boolean);
    procedure SetFPS(Value: Double);
    procedure SetInterval(Value: Cardinal);
    procedure SetOnTimer(Value: TNotifyEvent);
    procedure SetRepeatCount(Value: Cardinal);
    procedure SetSyncEvent(Value: Boolean);
  public
    constructor Create(AOwner: TComponent); override;
    {* 類構造器}
    destructor Destroy; override;
    {* 類析構器}
    property ActualFPS: Double read GetActualFPS;
    {* 實際的定時器速率,次每秒}
    property ExecCount: Cardinal read GetExecCount;
    {* 已經執行過的次數}
  published
    property Enabled: Boolean read GetEnabled write SetEnabled default True;
    {* 定時器是否啟用}
    property FPS: Double read GetFPS write SetFPS stored False;
    {* 定時器速度,次每秒}
    property Interval: Cardinal read GetInterval write SetInterval default 1000;
    {* 定時間隔,毫秒}
    property OnTimer: TNotifyEvent read GetOnTimer write SetOnTimer;
    {* 定時事件}
    property RepeatCount: Cardinal read GetRepeatCount write SetRepeatCount
      default 0;
    {* 定時事件次數,當定時事件發生指定次數后自動關閉。如果為 0 表示不限制}
    property SyncEvent: Boolean read GetSyncEvent write SetSyncEvent default
      True;
    {* 是否使用同步方式在主線程中產生定時事件,如果為 false 將在定時線程中產生事件}
  end;

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

{ TAATimerItem }

  TAATimerItem = class(TCollectionItem)
  {* 線程定時器列表子項,使用方法類似 TTimer。}
  private
    FOnTimer: TNotifyEvent;
    FTimerObject: TAATimerObject;
    function GetActualFPS: Double;
    function GetEnabled: Boolean;
    function GetExecCount: Cardinal;
    function GetFPS: Double;
    function GetInterval: Cardinal;
    function GetRepeatCount: Cardinal;
    function GetSyncEvent: Boolean;
    procedure SetEnabled(Value: Boolean);
    procedure SetFPS(Value: Double);
    procedure SetInterval(Value: Cardinal);
    procedure SetRepeatCount(Value: Cardinal);
    procedure SetSyncEvent(Value: Boolean);
  protected
    procedure Timer(Sender: TObject);
  public
    constructor Create(Collection: TCollection); override;
    {* 類構造器}
    destructor Destroy; override;
    {* 類析構器}
    procedure Assign(Source: TPersistent); override;
    {* 賦值方法}
    property ActualFPS: Double read GetActualFPS;
    {* 實際的定時器速率,次每秒}
    property ExecCount: Cardinal read GetExecCount;
    {* 已經執行過的次數}
  published
    property Enabled: Boolean read GetEnabled write SetEnabled default True;
    {* 定時器是否啟用}
    property FPS: Double read GetFPS write SetFPS stored False;
    {* 定時器速度,次每秒}
    property Interval: Cardinal read GetInterval write SetInterval default 1000;
    {* 定時間隔,毫秒}
    property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
    {* 定時事件}
    property RepeatCount: Cardinal read GetRepeatCount write SetRepeatCount
      default 0;
    {* 定時事件次數,當定時事件發生指定次數后自動關閉。如果為 0 表示不限制}
    property SyncEvent: Boolean read GetSyncEvent write SetSyncEvent default
      True;
    {* 是否使用同步方式在主線程中產生定時事件,如果為 false 將在定時線程中產生事件}
  end;

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

{ TAATimerCollection }

  TAATimerList = class;

  TAATimerCollection = class(TOwnedCollection)
  {* 線程定時器列表集合}
  private
    FTimerList: TAATimerList;
    function GetItems(Index: Integer): TAATimerItem;
    procedure SetItems(Index: Integer; Value: TAATimerItem);
  protected
    property TimerList: TAATimerList read FTimerList;
  public
    constructor Create(AOwner: TPersistent);
    {* 類構造器}
    property Items[Index: Integer]: TAATimerItem read GetItems write SetItems; default;
    {* 定時器數組屬性}
  end;

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

{ TAATimerList }

  TAATimerEvent = procedure(Sender: TObject; Index: Integer; var Handled:
    Boolean) of object;
  {* 線程定時器列表事件。Index 為產生事件的定時器子項序號,Handle 返回是否已處理,
     如果在事件中將 Handle 置為 true,將不產生該定時器子項事件}
    
  TAATimerList = class(TComponent)
  {* 線程定時器列表組件,可以定義多個定時器。}
  private
    FItems: TAATimerCollection;
    FOnTimer: TAATimerEvent;
    procedure SetItems(Value: TAATimerCollection);
  protected
    function Timer(Index: Integer): Boolean;
  public
    constructor Create(AOwner: TComponent); override;
    {* 類構造器}
    destructor Destroy; override;
    {* 類析構器}
  published
    property Items: TAATimerCollection read FItems write SetItems;
    {* 定時器列表}
    property OnTimer: TAATimerEvent read FOnTimer write FOnTimer;
    {* 定時器事件}
  end;

implementation

type

//==============================================================================
// 高精度定時器線程(私有類)
//==============================================================================

{ TAATimerThread }

  TAATimerMgr = class;

  TAATimerThread = class(TThread)
  private
    FTimerMgr: TAATimerMgr;
  protected
    FInterval: Cardinal;
    FStop: THandle;
    procedure Execute; override;
    property TimerMgr: TAATimerMgr read FTimerMgr;
  public
    constructor Create(CreateSuspended: Boolean; ATimerMgr: TAATimerMgr);
  end;

//==============================================================================
// 高精度定時器管理器(私有類)
//==============================================================================

{ TAATimerMgr }

  TAATimerMgr = class(TObject)
  private
    FTimerList: TThreadList;                
    FTimerThread: TAATimerThread;
  protected
    procedure ClearTimer;
    procedure DoTimer(Sycn: Boolean);
    procedure SyncTimer; virtual;
    procedure Timer; virtual;
  public
    constructor Create;
    destructor Destroy; override;
    function AddTimer: TAATimerObject;
    procedure DeleteTimer(TimerObject: TAATimerObject); overload;
  end;

//==============================================================================
// 高精度定時器線程(私有類)
//==============================================================================

{ TAATimerThread }

constructor TAATimerThread.Create(CreateSuspended: Boolean; ATimerMgr:
  TAATimerMgr);
begin
  inherited Create(CreateSuspended);
  Assert(Assigned(ATimerMgr));
  FTimerMgr := ATimerMgr;
  FStop := CreateEvent(nil, False, False, nil); // 創建退出用事件
end;

procedure TAATimerThread.Execute;
begin
  repeat                                // 等待退出事件置位或 FInterval 毫秒后超時退出
    if WaitForSingleObject(FStop, FInterval) = WAIT_TIMEOUT then
    begin
      TimerMgr.Timer;                   // 非同步方式產生定時事件
      Synchronize(TimerMgr.SyncTimer);  // 同步方式產生定時事件
    end;
  until Terminated;
  CloseHandle(FStop);                   // 釋放事件句柄
end;

//==============================================================================
// 高精度定時器管理器(私有類)
//==============================================================================

{ TAATimerMgr }

constructor TAATimerMgr.Create;
begin
  inherited Create;
  FTimerList := TThreadList.Create;
  FTimerThread := TAATimerThread.Create(True, Self);
  FTimerThread.FreeOnTerminate := False;
  FTimerThread.Priority := tpNormal;
  FTimerThread.FInterval := 1;
  FTimerThread.Resume;
end;

destructor TAATimerMgr.Destroy;
begin
  FTimerThread.Terminate;
  SetEvent(FTimerThread.FStop);
  if FTimerThread.Suspended then FTimerThread.Resume;
  FTimerThread.WaitFor;
  ClearTimer;
  FreeAndNil(FTimerThread);
  FreeAndNil(FTimerList);
  inherited Destroy;
end;

function TAATimerMgr.AddTimer: TAATimerObject;
begin
  Result := TAATimerObject.Create;
  with FTimerList.LockList do
  try
    Add(Result);
  finally
    FTimerList.UnlockList;
  end;
end;

procedure TAATimerMgr.ClearTimer;
var
  i: Integer;
begin
  with FTimerList.LockList do
  try
    for i := Count - 1 downto 0 do
    begin
      TAATimerObject(Items[i]).Free;
      Delete(i);
    end;
  finally
    FTimerList.UnlockList;
  end;
end;

procedure TAATimerMgr.DeleteTimer(TimerObject: TAATimerObject);
var
  i: Integer;
begin
  with FTimerList.LockList do
  try
    for i := 0 to Count - 1 do
      if Items[i] = TimerObject then

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国内二区三区| 欧美精选在线播放| 麻豆国产精品视频| 国产一区二区三区国产| 亚洲国产精品人人做人人爽| 综合自拍亚洲综合图不卡区| 678五月天丁香亚洲综合网| 91在线视频在线| 91亚洲精品久久久蜜桃网站 | 成人一级片网址| 国产综合久久久久久久久久久久| 亚洲va欧美va天堂v国产综合| 日韩av不卡一区二区| 综合激情成人伊人| 2021中文字幕一区亚洲| 日韩一卡二卡三卡四卡| 精品国偷自产国产一区| 国产欧美一区二区精品忘忧草 | 午夜精品久久久久久不卡8050| 日韩—二三区免费观看av| 国产成人av网站| 在线欧美日韩国产| 欧美精品一区二区精品网| 欧美精品一区二区三| 亚洲欧美激情一区二区| 免费观看久久久4p| 色婷婷精品大视频在线蜜桃视频| 欧美日韩大陆在线| 国产精品盗摄一区二区三区| 日本中文一区二区三区| 色呦呦日韩精品| 久久精品免费在线观看| 一区二区三区欧美亚洲| 在线观看视频一区| 国产精品视频一区二区三区不卡| 日韩国产在线观看一区| 在线播放欧美女士性生活| 一区二区日韩电影| 91天堂素人约啪| 国产精品动漫网站| 欧美日韩免费高清一区色橹橹| 中文字幕一区二| 99久久免费精品高清特色大片| 国产午夜久久久久| 99久久精品免费精品国产| 中文字幕日韩欧美一区二区三区| 99精品视频在线免费观看| 在线影视一区二区三区| 中文字幕日韩一区| 激情五月婷婷综合| 欧美日韩一区视频| 欧美一卡2卡3卡4卡| 亚洲国产三级在线| 欧美在线999| 欧美夫妻性生活| 国产精品久久久久久久久免费相片| 五月天中文字幕一区二区| 国产一区二区三区四区五区入口| 国产午夜亚洲精品不卡| 国产日韩欧美一区二区三区乱码| 在线观看一区二区精品视频| 国产午夜精品一区二区三区视频 | 五月激情六月综合| 欧美日本乱大交xxxxx| 一区二区三区精密机械公司| 国产91丝袜在线观看| 亚洲欧美日本韩国| 成熟亚洲日本毛茸茸凸凹| 久久精品在这里| 欧美午夜一区二区| 麻豆成人久久精品二区三区小说| 欧美日韩国产综合久久| 亚洲欧美韩国综合色| 色激情天天射综合网| 亚洲第一福利视频在线| 欧美精品久久一区二区三区| 久久精品国产精品亚洲综合| 日韩欧美电影一区| 99久久er热在这里只有精品15| 亚洲最大色网站| 国产女主播在线一区二区| 欧美一级日韩一级| 色8久久人人97超碰香蕉987| 午夜成人在线视频| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产日韩av一区二区| 色婷婷一区二区三区四区| 蜜臀99久久精品久久久久久软件| 正在播放亚洲一区| 99久久久国产精品免费蜜臀| 久久66热re国产| 日本美女一区二区三区| 天堂久久久久va久久久久| 国产成人精品三级| 激情国产一区二区| 精品一区二区免费| 国产成人精品免费视频网站| 国产一区二区三区免费播放| 国产一区二区三区日韩| caoporm超碰国产精品| 国产一区高清在线| 亚洲18女电影在线观看| 中文字幕在线一区| 国产精品麻豆久久久| 亚洲精品免费电影| 日韩一区精品视频| 国内精品久久久久影院色| 丁香激情综合五月| 蜜桃视频一区二区三区| 一区二区久久久| 久久超碰97中文字幕| 国内精品自线一区二区三区视频| av一本久道久久综合久久鬼色| 日韩视频不卡中文| 自拍偷拍亚洲综合| 日韩免费视频一区二区| 91麻豆精品国产无毒不卡在线观看| 亚洲精品一区二区三区99| 久久综合久久99| 天天色天天爱天天射综合| 国产精品视频你懂的| 蜜桃av一区二区三区| 色综合久久综合| 国产清纯在线一区二区www| 亚洲一区在线观看免费观看电影高清| 日本不卡一区二区三区| 91女人视频在线观看| 精品动漫一区二区三区在线观看| 亚洲乱码精品一二三四区日韩在线| 久久er精品视频| 制服丝袜中文字幕亚洲| 亚洲欧美视频在线观看| 国产一区二区三区香蕉| 欧美成人精品1314www| 亚洲精品成a人| 国产99久久精品| 欧美日韩国产免费一区二区| 欧美日韩中文精品| 亚洲欧美色一区| 五月婷婷久久综合| 欧美精品在线一区二区三区| 欧美巨大另类极品videosbest| 欧美va亚洲va在线观看蝴蝶网| 欧美视频在线观看一区二区| 日本一区二区久久| 国产高清久久久久| 欧美羞羞免费网站| 亚洲一区二区高清| 精品少妇一区二区三区视频免付费 | 中文字幕一区日韩精品欧美| 欧美成人在线直播| 日韩欧美国产三级| 亚洲精品一区二区三区四区高清| 精品三级av在线| 精品国产伦一区二区三区免费| 欧美成人官网二区| 国产三级欧美三级日产三级99| 欧美成人福利视频| 国产午夜精品久久久久久久| 国产三级精品视频| 国产精品成人免费在线| 国产精品网站一区| 亚洲欧洲制服丝袜| 亚洲高清不卡在线| 国产91露脸合集magnet| 91视频你懂的| 久久综合网色—综合色88| 亚洲欧洲综合另类| 老司机免费视频一区二区三区| 丁香桃色午夜亚洲一区二区三区| 日本精品视频一区二区三区| 久久久久久久久免费| 亚洲综合色丁香婷婷六月图片| 免费高清在线一区| 国产乱人伦精品一区二区在线观看 | 国产成人av一区二区三区在线观看| av在线不卡网| 国产蜜臀av在线一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了 | 麻豆91免费观看| 欧美群妇大交群的观看方式| 久久精品人人做| 卡一卡二国产精品 | 欧美性受极品xxxx喷水| 欧美电影免费观看高清完整版在线| 久久福利视频一区二区| 国产精品99久久久久久宅男| 欧美高清一级片在线| 另类成人小视频在线| 欧美综合色免费| 国产精品动漫网站| 成人黄色网址在线观看| 亚洲日本一区二区| 成人动漫在线一区| 亚洲国产日韩一区二区| 欧美猛男gaygay网站| 天天影视网天天综合色在线播放| 欧美二区乱c少妇| 日本伊人午夜精品| 国产精品系列在线|