⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itimers.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 3 页
字号:
{*******************************************************}
{                                                       }
{       TiTimers Component                              }
{                                                       }
{       Copyright (c) 1997,2003 Iocomp Software         }
{                                                       }
{*******************************************************}
{$I iInclude.inc}

{$ifdef iVCL}unit  iTimers;{$endif}
{$ifdef iCLX}unit QiTimers;{$endif}

interface

uses
  {$I iIncludeUses.inc}
  {$IFDEF iVCL} iTypes,  iGPFunctions,  iMath;{$ENDIF}
  {$IFDEF iCLX}QiTypes, QiGPFunctions, QiMath;{$ENDIF}

type
  TiTimers = class(TCustomControl)
  private
    {$ifndef iCLX}
    FWindowHandle : HWND;

    FHandle1   : Integer;
    FHandle2   : Integer;
    FHandle3   : Integer;
    FHandle4   : Integer;
    FHandle5   : Integer;
    FHandle6   : Integer;
    FHandle7   : Integer;
    FHandle8   : Integer;
    FHandle9   : Integer;
    {$else}
    FHandle1   : QTimerH;
    FHandle2   : QTimerH;
    FHandle3   : QTimerH;
    FHandle4   : QTimerH;
    FHandle5   : QTimerH;
    FHandle6   : QTimerH;
    FHandle7   : QTimerH;
    FHandle8   : QTimerH;
    FHandle9   : QTimerH;

    FHook1     : QTimer_hookH;
    FHook2     : QTimer_hookH;
    FHook3     : QTimer_hookH;
    FHook4     : QTimer_hookH;
    FHook5     : QTimer_hookH;
    FHook6     : QTimer_hookH;
    FHook7     : QTimer_hookH;
    FHook8     : QTimer_hookH;
    FHook9     : QTimer_hookH;
    {$endif}

    FEnabled1  : Boolean;
    FEnabled2  : Boolean;
    FEnabled3  : Boolean;
    FEnabled4  : Boolean;
    FEnabled5  : Boolean;
    FEnabled6  : Boolean;
    FEnabled7  : Boolean;
    FEnabled8  : Boolean;
    FEnabled9  : Boolean;

    FInterval1 : Integer;
    FInterval2 : Integer;
    FInterval3 : Integer;
    FInterval4 : Integer;
    FInterval5 : Integer;
    FInterval6 : Integer;
    FInterval7 : Integer;
    FInterval8 : Integer;
    FInterval9 : Integer;

    FOnTimer1  : TNotifyEvent;
    FOnTimer2  : TNotifyEvent;
    FOnTimer3  : TNotifyEvent;
    FOnTimer4  : TNotifyEvent;
    FOnTimer5  : TNotifyEvent;
    FOnTimer6  : TNotifyEvent;
    FOnTimer7  : TNotifyEvent;
    FOnTimer8  : TNotifyEvent;
    FOnTimer9  : TNotifyEvent;

    procedure SetEnabled1  (const Value: Boolean);
    procedure SetEnabled2  (const Value: Boolean);
    procedure SetEnabled3  (const Value: Boolean);
    procedure SetEnabled4  (const Value: Boolean);
    procedure SetEnabled5  (const Value: Boolean);
    procedure SetEnabled6  (const Value: Boolean);
    procedure SetEnabled7  (const Value: Boolean);
    procedure SetEnabled8  (const Value: Boolean);
    procedure SetEnabled9  (const Value: Boolean);
    procedure SetInterval1 (const Value: Integer);
    procedure SetInterval2 (const Value: Integer);
    procedure SetInterval3 (const Value: Integer);
    procedure SetInterval4 (const Value: Integer);
    procedure SetInterval5 (const Value: Integer);
    procedure SetInterval6 (const Value: Integer);
    procedure SetInterval7 (const Value: Integer);
    procedure SetInterval8 (const Value: Integer);
    procedure SetInterval9 (const Value: Integer);

    {$ifndef iCLX}
    procedure TimerProc(var Msg: TMessage);
    {$else}
    procedure TimerCallBack1; cdecl;
    procedure TimerCallBack2; cdecl;
    procedure TimerCallBack3; cdecl;
    procedure TimerCallBack4; cdecl;
    procedure TimerCallBack5; cdecl;
    procedure TimerCallBack6; cdecl;
    procedure TimerCallBack7; cdecl;
    procedure TimerCallBack8; cdecl;
    procedure TimerCallBack9; cdecl;
    {$endif}

  protected
    procedure Paint;                                              override;
  public
    constructor Create(AOwner: TComponent);                       override;
    destructor  Destroy;                                          override;
    procedure   SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
    property    OnDblClick;
  published
    property Enabled1  : Boolean      read FEnabled1  write SetEnabled1   default False;
    property Enabled2  : Boolean      read FEnabled2  write SetEnabled2   default False;
    property Enabled3  : Boolean      read FEnabled3  write SetEnabled3   default False;
    property Enabled4  : Boolean      read FEnabled4  write SetEnabled4   default False;
    property Enabled5  : Boolean      read FEnabled5  write SetEnabled5   default False;
    property Enabled6  : Boolean      read FEnabled6  write SetEnabled6   default False;
    property Enabled7  : Boolean      read FEnabled7  write SetEnabled7   default False;
    property Enabled8  : Boolean      read FEnabled8  write SetEnabled8   default False;
    property Enabled9  : Boolean      read FEnabled9  write SetEnabled9   default False;

    property Interval1 : Integer      read FInterval1  write SetInterval1 default 1000;
    property Interval2 : Integer      read FInterval2  write SetInterval2 default 1000;
    property Interval3 : Integer      read FInterval3  write SetInterval3 default 1000;
    property Interval4 : Integer      read FInterval4  write SetInterval4 default 1000;
    property Interval5 : Integer      read FInterval5  write SetInterval5 default 1000;
    property Interval6 : Integer      read FInterval6  write SetInterval6 default 1000;
    property Interval7 : Integer      read FInterval7  write SetInterval7 default 1000;
    property Interval8 : Integer      read FInterval8  write SetInterval8 default 1000;
    property Interval9 : Integer      read FInterval9  write SetInterval9 default 1000;

    property OnTimer1  : TNotifyEvent read FOnTimer1   write FOnTimer1;
    property OnTimer2  : TNotifyEvent read FOnTimer2   write FOnTimer2;
    property OnTimer3  : TNotifyEvent read FOnTimer3   write FOnTimer3;
    property OnTimer4  : TNotifyEvent read FOnTimer4   write FOnTimer4;
    property OnTimer5  : TNotifyEvent read FOnTimer5   write FOnTimer5;
    property OnTimer6  : TNotifyEvent read FOnTimer6   write FOnTimer6;
    property OnTimer7  : TNotifyEvent read FOnTimer7   write FOnTimer7;
    property OnTimer8  : TNotifyEvent read FOnTimer8   write FOnTimer8;
    property OnTimer9  : TNotifyEvent read FOnTimer9   write FOnTimer9;

    property Visible default False;
    property PopupMenu;

    property Width  default 28;
    property Height default 28;
  end;

implementation
//****************************************************************************************************************************************************
constructor TiTimers.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := [csCaptureMouse, csClickEvents, csDoubleClicks, csReplicatable];

  Width   := 28;
  Height  := 28;
  Visible := False;

  FInterval1 := 1000;
  FInterval2 := 1000;
  FInterval3 := 1000;
  FInterval4 := 1000;
  FInterval5 := 1000;
  FInterval6 := 1000;
  FInterval7 := 1000;
  FInterval8 := 1000;
  FInterval9 := 1000;

 {$WARNINGS OFF}
  {$ifndef iCLX}
  FWindowHandle := AllocateHWnd(TimerProc);
  {$endif}
 {$WARNINGS ON}
end;
//****************************************************************************************************************************************************
destructor TiTimers.Destroy;
begin
  {$ifndef iCLX}
  if FHandle1  <> 0 then KillTimer(FWindowHandle, 1);
  if FHandle2  <> 0 then KillTimer(FWindowHandle, 2);
  if FHandle3  <> 0 then KillTimer(FWindowHandle, 3);
  if FHandle4  <> 0 then KillTimer(FWindowHandle, 4);
  if FHandle5  <> 0 then KillTimer(FWindowHandle, 5);
  if FHandle6  <> 0 then KillTimer(FWindowHandle, 6);
  if FHandle7  <> 0 then KillTimer(FWindowHandle, 7);
  if FHandle8  <> 0 then KillTimer(FWindowHandle, 8);
  if FHandle9  <> 0 then KillTimer(FWindowHandle, 9);
 {$WARNINGS OFF}
  DeallocateHWnd(FWindowHandle);
 {$WARNINGS ON}
  {$else}
  if Assigned(FHook1) then QTimer_hook_destroy(FHook1);
  if Assigned(FHook2) then QTimer_hook_destroy(FHook2);
  if Assigned(FHook3) then QTimer_hook_destroy(FHook3);
  if Assigned(FHook4) then QTimer_hook_destroy(FHook4);
  if Assigned(FHook5) then QTimer_hook_destroy(FHook5);
  if Assigned(FHook6) then QTimer_hook_destroy(FHook6);
  if Assigned(FHook7) then QTimer_hook_destroy(FHook7);
  if Assigned(FHook8) then QTimer_hook_destroy(FHook8);
  if Assigned(FHook9) then QTimer_hook_destroy(FHook9);
  if Assigned(FHandle1) then QTimer_destroy(FHandle1);
  if Assigned(FHandle2) then QTimer_destroy(FHandle2);
  if Assigned(FHandle3) then QTimer_destroy(FHandle3);
  if Assigned(FHandle4) then QTimer_destroy(FHandle4);
  if Assigned(FHandle5) then QTimer_destroy(FHandle5);
  if Assigned(FHandle6) then QTimer_destroy(FHandle6);
  if Assigned(FHandle7) then QTimer_destroy(FHandle7);
  if Assigned(FHandle8) then QTimer_destroy(FHandle8);
  if Assigned(FHandle9) then QTimer_destroy(FHandle9);
  {$endif}
  inherited;
end;
//****************************************************************************************************************************************************
procedure TiTimers.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
  AWidth  := 28;
  AHeight := 28;
  inherited;
end;
//****************************************************************************************************************************************************
procedure TiTimers.Paint;
var
  i, x, y : Integer;
begin
  with Canvas do
    begin
      Pen.Color := clBtnHighlight;
      PolyLine([Point(0,Height-1), Point(0,0), Point(Width-1,0)]);

      Pen.Color := clBtnShadow;
      PolyLine([Point(Width-1, 1), Point(Width-1,Height-1), Point(0,Height-1)]);

      Pen.Color := clBlack;
      Brush.Color := clWhite;

      Ellipse(6, 6, 23, 23);
      PolyLine([Point(14,9), Point(14,14), Point(18,14)]);

      Pen.Color := clMaroon;
      for i := 0 to 11 do
        begin
          x := 14 + Round(Cos(DegToRad(i*30))*6);
          y := 14 - Round(Sin(DegToRad(i*30))*6);
          {$ifdef iVCL}Polyline([Point(x, y), Point(x+1, y+1)]);{$endif}
          {$ifdef iCLX}Polyline([Point(x, y), Point(x,   y)  ]);{$endif}
        end;
    end;
end;
//****************************************************************************************************************************************************
procedure TiTimers.SetEnabled1(const Value: Boolean);
{$ifdef iCLX}
var
  Timeout : TMethod;
{$endif}
begin
  if FEnabled1 <> Value then
    begin
      FEnabled1 := Value;
      {$ifndef iCLX}
      case FEnabled1 of
        False : if FHandle1 <> 0 then
                  begin
                    KillTimer(FWindowHandle, FHandle1);
                    FHandle1 := 0;
                  end;
        True  : if FHandle1 =  0 then FHandle1 := SetTimer(FWindowHandle, 1, FInterval1, nil);
      end;
      {$else}
      case FEnabled1 of
        False : if Assigned(FHandle1) then QTimer_stop(FHandle1);
        True  : if not (csDesigning in ComponentState) then
                  begin
                    if not Assigned(FHandle1) then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -