📄 unit1.pas
字号:
end;
end;
{--------------------------onclick eledown2-------------------------}
procedure TForm1.eledown2Click(Sender: TObject);
begin
eledown2.font.color:=clred;
downarray[2]:=true;
if movedrect=-1 then
begin
if targetfloor>2 then maxcalldown:=2;
if maxcalldown<2 then maxcalldown:=2;
if elet/48=5 then
begin
downarray[2]:=false;
eledown2.font.color:=clwindowtext;
if (dooroctimer.Enabled=True) and (whichclick=1) then exit;
if waittimer.Enabled=True then exit;
mshowin:=True;
dooropenclose();
end;
end
else
if targetfloor<2 then maxcalldown:=2;
if elemove=false then
begin
nowcall:=2;
maxcalldown:=2;
eleoutcall(nowcall);
end;
end;
{--------------------------onclick eleup1-------------------------}
procedure TForm1.eleup1Click(Sender: TObject);
begin
eleup1.font.color:=clred;
uparray[1]:=true;
if movedrect=1 then
begin
if elelocatefloor=targetfloor then mincallup:=1; end
else
begin if targetfloor>1 then mincallup:=1; end;
if elet/48=6 then
begin
uparray[1]:=false;
eleup1.font.color:=clwindowtext;
if (dooroctimer.Enabled=True) and (whichclick=1) then exit;
if waittimer.Enabled=True then exit;
mshowin:=True;
dooropenclose();
end;
if elemove=false then
begin
nowcall:=1;
mincallup:=1;
eleoutcall(nowcall);
end;
end;
{--------------------------onclick eleup2-------------------------}
procedure TForm1.eleup2Click(Sender: TObject);
begin
eleup2.font.color:=clred;
uparray[2]:=true;
if movedrect=1 then
begin
if targetfloor<2 then mincallup:=2;
if elelocatefloor=targetfloor then
begin
if mincallup>2 then mincallup:=2;
end;
if elet/48=5 then
begin
uparray[2]:=false;
eleup2.font.color:=clwindowtext;
if (dooroctimer.Enabled=True) and (whichclick=1) then exit;
if waittimer.Enabled=True then exit;
mshowin:=True;
dooropenclose();
end;
end
else
begin
if targetfloor>2 then mincallup:=2;
end;
if elemove=false then
begin
nowcall:=2;
mincallup:=2;
eleoutcall(nowcall);
end;
end;
{--------------------------onclick eleup3-------------------------}
procedure TForm1.eleup3Click(Sender: TObject);
begin
eleup3.font.color:=clred;
uparray[3]:=true;
if movedrect=1 then
begin
if targetfloor<3 then mincallup:=3;
if elelocatefloor=targetfloor then
begin
if mincallup>3 then mincallup:=3;
end;
if elet/48=4 then
begin
uparray[3]:=false;
eleup3.font.color:=clwindowtext;
if (dooroctimer.Enabled=True) and (whichclick=1) then exit;
if waittimer.Enabled=True then exit;
mshowin:=True;
dooropenclose();
end;
end
else
begin
if targetfloor>3 then mincallup:=3;
end;
if elemove=false then
begin
nowcall:=3;
mincallup:=3;
eleoutcall(nowcall);
end;
end;
{--------------------------onclick eleup4-------------------------}
procedure TForm1.eleup4Click(Sender: TObject);
begin
eleup4.font.color:=clred;
uparray[4]:=true;
if movedrect=1 then
begin
if targetfloor<4 then mincallup:=4;
if elelocatefloor=targetfloor then
begin
if mincallup>4 then mincallup:=4;
end;
if elet/48=3 then
begin
uparray[4]:=false;
eleup4.font.color:=clwindowtext;
if (dooroctimer.Enabled=True) and (whichclick=1) then exit;
if waittimer.Enabled=True then exit;
mshowin:=True;
dooropenclose();
end;
end
else
begin
if targetfloor>4 then mincallup:=4;
end;
if elemove=false then
begin
nowcall:=4;
mincallup:=4;
eleoutcall(nowcall);
end;
end;
{--------------------------onclick eleup5-------------------------}
procedure TForm1.eleup5Click(Sender: TObject);
begin
eleup5.font.color:=clred;
uparray[5]:=true;
if movedrect=1 then
begin
if targetfloor<5 then mincallup:=5;
if elelocatefloor=targetfloor then
begin
if mincallup>5 then mincallup:=5;
end;
if elet/48=2 then
begin
uparray[5]:=false;
eleup5.font.color:=clwindowtext;
if (dooroctimer.Enabled=True) and (whichclick=1) then exit;
if waittimer.Enabled=True then exit;
mshowin:=True;
dooropenclose();
end;
end
else
begin
if targetfloor>5 then mincallup:=5;
end;
if elemove=false then
begin
nowcall:=5;
mincallup:=5;
eleoutcall(nowcall);
end;
end;
{--------------------------onclick eleup6-------------------------}
procedure TForm1.eleup6Click(Sender: TObject);
begin
eleup6.font.color:=clred;
uparray[6]:=true;
if movedrect=1 then
begin
if targetfloor<6 then mincallup:=6;
if elelocatefloor=targetfloor then mincallup:=6;
if elet/48=1 then
begin
uparray[6]:=false;
eleup6.font.color:=clwindowtext;
if (dooroctimer.Enabled=True) and (whichclick=1) then exit;
if waittimer.Enabled=True then exit;
mshowin:=True;
dooropenclose();
end;
end
else
if targetfloor>6 then mincallup:=6;
if elemove=false then
begin
nowcall:=6;
mincallup:=6;
eleoutcall(nowcall);
end;
end;
{---------------------以下是是eleoutcall过程----------------------}
procedure Tform1.eleoutcall(now:integer);
begin
movedrect:=0;
if elelocatefloor=now then
begin
targetarray[elelocatefloor]:=false;
uparray[elelocatefloor]:=false;
downarray[elelocatefloor]:=false;
upoff(elelocatefloor);
downoff(elelocatefloor);
if waittimer.enabled=True then exit;
if (dooroctimer.Enabled=True) and (whichclick=1) then exit;
mshowin:=True;
dooropenclose();
exit;
end;
if elelocatefloor>now then
begin
targetfloor:=now;
movedrect:=-1;
waitonesecond();
end;
if elelocatefloor<now then
begin
targetfloor:=now;
movedrect:=1;
waitonesecond();
end;
end;
{---------------------以下是是eleincall过程----------------------}
procedure Tform1.eleincall(now:integer);
begin
movedrect:=0;
if elelocatefloor=now then
begin
uparray[elelocatefloor]:=false;
downarray[elelocatefloor]:=false;
targetarray[elelocatefloor]:=false;
upoff(elelocatefloor);
downoff(elelocatefloor);
targetoff(elelocatefloor);
exit;
end;
if elelocatefloor>now then
begin
targetfloor:=now;
movedrect:=-1;
waitonesecond();
end;
if elelocatefloor<now then
begin
targetfloor:=now;
movedrect:=1;
waitonesecond();
end;
end;
{-------------------------lighton过程---------------------------}
procedure tform1.lighton(nowstate:integer);
begin
case nowstate of
1: floor1.Font.color:=clred;
2: floor2.Font.color:=clred;
3: floor3.Font.color:=clred;
4: floor4.Font.color:=clred;
5: floor5.Font.color:=clred;
6: floor6.Font.color:=clred;
7: floor7.Font.color:=clred;
end;
end;
{-------------------------lightoff过程---------------------------}
procedure tform1.lightoff(nowstate:integer);
begin
case nowstate of
1: floor1.Font.color:=clwindowtext;
2: floor2.Font.color:=clwindowtext;
3: floor3.Font.color:=clwindowtext;
4: floor4.Font.color:=clwindowtext;
5: floor5.Font.color:=clwindowtext;
6: floor6.Font.color:=clwindowtext;
7: floor7.Font.color:=clwindowtext;
end;
end;
{----------------------------upoff过程-------------------------------}
procedure tform1.upoff(nowstate:integer);
begin
case nowstate of
1: eleup1.Font.color:=clwindowtext;
2: eleup2.Font.color:=clwindowtext;
3: eleup3.Font.color:=clwindowtext;
4: eleup4.Font.color:=clwindowtext;
5: eleup5.Font.color:=clwindowtext;
6: eleup6.Font.color:=clwindowtext;
end;
end;
{-------------------------------downoff过程---------------------------}
procedure tform1.downoff(nowstate:integer);
begin
case nowstate of
2: eledown2.Font.color:=clwindowtext;
3: eledown3.Font.color:=clwindowtext;
4: eledown4.Font.color:=clwindowtext;
5: eledown5.Font.color:=clwindowtext;
6: eledown6.Font.color:=clwindowtext;
7: eledown7.Font.color:=clwindowtext;
end;
end;
{-------------------------------targetoff过程-------------------------}
procedure tform1.targetoff(nowstate:integer);
begin
case nowstate of
1: target1.Font.color:=clwindowtext;
2: target2.Font.color:=clwindowtext;
3: target3.Font.color:=clwindowtext;
4: target4.Font.color:=clwindowtext;
5: target5.Font.color:=clwindowtext;
6: target6.Font.color:=clwindowtext;
7: target7.Font.color:=clwindowtext;
end;
end;
{----------------------------------结束-----------------------------}
procedure TForm1.aboutClick(Sender: TObject);
begin
MessageDlg('A demo disigned by ChangYu', mtInformation,
[mbOk], 0);
end;
procedure TForm1.exitdemoClick(Sender: TObject);
begin
close;
end;
procedure TForm1.doorocTimerTimer(Sender: TObject);
begin
doortimer.Enabled:=False;
case whichclick of
1:begin
if imagel<=4 then
begin
dooroctimer.Enabled:=False;
doortimer.enabled:=true;
wait3sec();
exit; end;
imagel:=imagel-1;
imagew:=imagew+2;
doorimage.Left:=imagel;
doorimage.width:=imagew;
end;
-1:begin
if imagel>=68 then
begin
dooroctimer.enabled:=False;
doortimer.enabled:=true;
exit;
end;
imagel:=imagel+1;
imagew:=imagew-2;
doorimage.left:=imagel;
doorimage.width:=imagew;
end;
end;
end;
procedure TForm1.ElemoveTimerTimer(Sender: TObject);
begin
case movedrect of
1:
begin
if elet=0 then
begin
elemovetimer.Enabled:=False;
exit;
end;
elet:=elet-1;
eleshape.top:=elet;
if elet mod 48=0 then
begin
lightoff(elelocatefloor);
canmove:=false;
elemovetimer.Enabled:=False;
exit;
end;
end;
-1:
begin
if elet>=336 then
begin
elemovetimer.Enabled:=False;
exit;
end;
elet:=elet+1;
eleshape.top:=elet;
if elet mod 48=0 then
begin
lightoff(elelocatefloor);
canmove:=false;
elemovetimer.Enabled:=False;
exit;
end;
end;
end;
end;
procedure TForm1.waitTimerTimer(Sender: TObject);
begin
waittimer.Enabled:=False;
doortimer.Enabled:=True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -