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

📄 frommain.~pas

📁 操作系统课程设计之交通灯模拟~ 模拟一个十字路口交通灯怎么管制交通的情况
💻 ~PAS
字号:
unit fromMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  Tfrmmain = class(TForm)
    imgMain: TImage;
    timerMain: TTimer;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Label1: TLabel;
    Label3: TLabel;
    edtGreen: TEdit;
    edtYellow: TEdit;
    Label2: TLabel;
    edtD1: TEdit;
    btnStart: TButton;
    btnFinish: TButton;
    Label4: TLabel;
    edtMax: TEdit;
    procedure btnStartClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnFinishClick(Sender: TObject);
    procedure timerMainTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmmain: Tfrmmain;

implementation

uses
  classCross, unitConst;

var
  TrafficCross: TTrafficCross;
  IsCreated: bool;

{$R *.dfm}

procedure Tfrmmain.btnStartClick(Sender: TObject);
var
  time_green,time_red,time_yellow: TLightsTime;
  initialnum: TCrosses;
  timerinterval: TUInt;
  maxnum, speed, prop: TUInt;
  i:integer;
begin
try                                     //读入初始化数据
    maxnum:=strtoint(edtMax.Text);
    prop:=60;
    speed:=60;
    time_green[1]:=strtoint(edtGreen.Text)*1000;
    time_red[1]:=strtoint(edtGreen.Text)*1000;
    time_yellow[1]:=strtoint(edtYellow.Text)*1000;
    initialnum[1]:=strtoint(edtD1.Text);
    initialnum[2]:=initialnum[1];
    initialnum[3]:=initialnum[1];
    initialnum[4]:=initialnum[1];
    timerinterval:= timerMain.Interval;
    if(time_green[1]<=0)or(time_yellow[1]<0)or
        (initialnum[1]<0)or(initialnum[2]<0)or(initialnum[3]<0)or(initialnum[3]<0)or
        (initialnum[1]>maxnum)or(initialnum[2]>maxnum)or(initialnum[3]>maxnum)or(initialnum[3]>maxnum)or
        (maxnum<=0)or(speed<=0)or(maxnum>const_MaxVehicle)or(prop<=0)or(prop>100)
    then begin
      showmessage('初始化数据输入有误!!!');
    end
    else begin
      for i:=2 to 4 do
      begin
        time_green[i]:=time_green[1];
        time_red[i]:=time_red[1];
        time_yellow[i]:=time_yellow[1];
      end;

      btnStart.Enabled:= false;
      btnFinish.Enabled:= true;
      edtD1.Enabled:= false;
      edtGreen.Enabled:= false;
      edtYellow.Enabled:= false;
      edtMax.Enabled:=false;
      TrafficCross:= TTrafficCross.Create(imgMain,time_green,time_red,time_yellow,
                                            initialnum,timerinterval,speed,maxnum,prop);
      IsCreated:= true;
    end;
  except
    showmessage('初始化数据输入有误!!!');
    end;
end;

procedure Tfrmmain.FormCreate(Sender: TObject);
begin
  timerMain.Interval:= const_Timer_Interval;                //初始化timer
  IsCreated:= false;                                        //初始化
end;

procedure Tfrmmain.btnFinishClick(Sender: TObject);
begin
try
      TrafficCross.Free;
    finally
      btnStart.Enabled:= true;
      btnFinish.Enabled:= false;
      edtD1.Enabled:= true;
      edtGreen.Enabled:= true;
      edtYellow.Enabled:= true;
      edtMax.Enabled:=true;
      IsCreated:= false;
    end;
end;

procedure Tfrmmain.timerMainTimer(Sender: TObject);
begin
if IsCreated
    then begin
      frmMain.Caption:='交通灯管制  ';
      TrafficCross.Refresh;
    end
    else begin
      frmMain.Caption:='交通灯管制';
    end;
end;

end.

⌨️ 快捷键说明

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