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

📄 ithreadtimers.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 4 页
字号:
end;
//****************************************************************************************************************************************************
function TiThreadTimers.CreateTimer(Interval: Integer; AOnTimer: TNotifyEvent): TiTimerThread;
begin
  Result                 := TiTimerThread.Create(True);
  Result.Owner           := Self;
  Result.OnTimer         := AOnTimer;
  Result.Interval        := Interval;
  Result.FreeOnTerminate := False;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.DestroyTimer(var ATimer: TiTimerThread);
{$ifdef MSWINDOWS}
var
  ForceTerminate : Boolean;
{$endif}
begin
  if not ATimer.Suspended then
    begin
      ATimer.Suspend;
      {$ifdef MSWINDOWS}ForceTerminate := True;{$endif}
    end
  else {$ifdef MSWINDOWS}ForceTerminate := False{$endif};

  ATimer.Terminate;
  ATimer.Resume;
  {$ifdef MSWINDOWS}if ForceTerminate then TerminateThread(ATimer.Handle, 0);{$endif}
  ATimer.Free;
  ATimer := nil;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.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;

      PolyLine([Point(21,21), Point(26, 21)]);
      PolyLine([Point(23,21), Point(23, 26)]);

      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 TiThreadTimers.SetEnabled1(const Value: Boolean);
begin
  if FEnabled1 <> Value then
    begin
      FEnabled1 := Value;
      if not (csDesigning in ComponentState) then FTimer1.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetEnabled2(const Value: Boolean);
begin
  if FEnabled2 <> Value then
    begin
      FEnabled2 := Value;
      if not (csDesigning in ComponentState) then FTimer2.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetEnabled3(const Value: Boolean);
begin
  if FEnabled3 <> Value then
    begin
      FEnabled3 := Value;
      if not (csDesigning in ComponentState) then FTimer3.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetEnabled4(const Value: Boolean);
begin
  if FEnabled4 <> Value then
    begin
      FEnabled4 := Value;
      if not (csDesigning in ComponentState) then FTimer4.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetEnabled5(const Value: Boolean);
begin
  if FEnabled5 <> Value then
    begin
      FEnabled5 := Value;
      if not (csDesigning in ComponentState) then FTimer5.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetEnabled6(const Value: Boolean);
begin
  if FEnabled6 <> Value then
    begin
      FEnabled6 := Value;
      if not (csDesigning in ComponentState) then FTimer6.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetEnabled7(const Value: Boolean);
begin
  if FEnabled7 <> Value then
    begin
      FEnabled7 := Value;
      if not (csDesigning in ComponentState) then FTimer7.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetEnabled8(const Value: Boolean);
begin
  if FEnabled8 <> Value then
    begin
      FEnabled8 := Value;
      if not (csDesigning in ComponentState) then FTimer8.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetEnabled9(const Value: Boolean);
begin
  if FEnabled9 <> Value then
    begin
      FEnabled9 := Value;
      if not (csDesigning in ComponentState) then FTimer9.Suspended := not Value;
    end;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetInterval1(const Value: Integer);
var
  OldEvent  : TNotifyEvent;
  TempValue : Integer;
begin
  if Value < 1 then TempValue := 1 else TempValue := Value;

  if FEnabled1 then
    begin
      OldEvent := FTimer1.OnTimer;

      DestroyTimer(FTimer1);

      FTimer1           := CreateTimer(TempValue, OldEvent);
      FTimer1.Suspended := False;
    end
  else FTimer1.Interval := TempValue;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetInterval2(const Value: Integer);
var
  OldEvent  : TNotifyEvent;
  TempValue : Integer;
begin
  if Value < 1 then TempValue := 1 else TempValue := Value;

  if FEnabled2 then
    begin
      OldEvent := FTimer2.OnTimer;

      DestroyTimer(FTimer2);

      FTimer2           := CreateTimer(TempValue, OldEvent);
      FTimer2.Suspended := False;
    end
  else FTimer2.Interval := TempValue;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetInterval3(const Value: Integer);
var
  OldEvent  : TNotifyEvent;
  TempValue : Integer;
begin
  if Value < 1 then TempValue := 1 else TempValue := Value;

  if FEnabled3 then
    begin
      OldEvent := FTimer3.OnTimer;

      DestroyTimer(FTimer3);

      FTimer3           := CreateTimer(TempValue, OldEvent);
      FTimer3.Suspended := False;
    end
  else FTimer3.Interval := TempValue;
end;
//****************************************************************************************************************************************************
procedure TiThreadTimers.SetInterval4(const Value: Integer);
var
  OldEvent  : TNotifyEvent;
  TempValue : Integer;
begin
  if Value < 1 then TempValue := 1 else TempValue := Value;

  if FEnabled4 then
    begin
      OldEvent := FTimer4.OnTimer;

      DestroyTimer(FTimer4);

      FTimer4           := CreateTimer(TempValue, OldEvent);
      FTimer4.Suspended := False;
    end
  else FTimer4.Interval := TempValue;

⌨️ 快捷键说明

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