📄 ithreadtimers.pas
字号:
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 + -