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

📄 unit1.pas

📁 一个关于电梯的模拟程序算法 拥有良好的用户界面
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  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 + -