📄 iarotatetimer.pas
字号:
unit IARotateTimer;
interface
uses
Windows,Classes,IAeverbutton,Forms;
type
TiaRotateTimer = class(TThread)
private
{ Private declarations }
Time1 : integer;
Dangle,Dtime : integer;
EndProperty : Boolean;
Procedure GetBeginData;
procedure GetEndProperty;
procedure SetAngle;
function Time_delta(var Value: integer): integer;
protected
procedure Execute; override;
public
Creator : TiaeverButton;
end;
implementation
{ Important: Methods and properties of objects in VCL can only be used in a
method called using Synchronize, for example,
Synchronize(UpdateCaption);
and UpdateCaption could look like,
procedure TiaRotateTimer.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }
{ TiaRotateTimer }
procedure TiaRotateTimer.Execute;
begin
SynChronize(GetBeginData);
repeat
repeat
Application.ProcessMessages;
Until Time_delta(Time1)>Dtime;
Time1:=GetTickCount;
SynChronize(GetBeginData);
SynChronize(SetAngle);
SynChronize(GetEndProperty);
until EndProperty;
{ Place thread code here }
end;
procedure TiaRotateTimer.SetAngle;
var
NewAngle : integer;
begin
try
NewAngle:=Creator.ButtonAngle+Dangle;
if NewAngle>1800 Then Dec(NewAngle,3600);
if NewAngle<-1800 Then inc(NewAngle,3600);
Creator.ButtonAngle:=NewAngle;
except
end;
end;
procedure TiaRotateTimer.GetEndProperty;
begin
EndProperty:=True;
try
if Creator.Rotated then
begin
EndProperty:=False;
Creator.RotatedCycle:=False;
end;
except
end;
end;
procedure TiaRotateTimer.GetBeginData;
begin
try
Dtime:=Creator.RotatedTime;
Dangle:=Creator.RotatedAngle;
Time1:=GetTickCount;
except
end;
end;
function TiaRotateTimer.Time_delta(var Value: integer): integer;
var
R : integer;
begin
R:=GetTickCount;
if r<Value then result:=Maxint-Value+R else Result:=r-Value;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -