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

📄 frommain.pas

📁 这是从不同语言来实现操作系统交通灯的调度问题
💻 PAS
字号:
unit fromMain;

interface

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

type
  Tfrmmain = class(TForm)
    timerMain: TTimer;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label3: TLabel;
    edtGreen: TEdit;
    edtYellow: TEdit;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    edtD1: TEdit;
    edtD2: TEdit;
    edtD3: TEdit;
    edtD4: TEdit;
    GroupBox3: TGroupBox;
    btnStart: TButton;
    btnPause: TButton;
    btnFinish: TButton;
    imgMain: TImage;
    GroupBox4: TGroupBox;
    Label7: TLabel;
    edtMax: TEdit;
    edtSpeed: TEdit;
    Label8: TLabel;
    lblMax: TLabel;
    edtProp: TEdit;
    Label9: TLabel;
    Label10: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure btnStartClick(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.FormCreate(Sender: TObject);
begin
  timerMain.Interval:= const_Timer_Interval;                //初始化timer
  IsCreated:= false;                                        //初始化
  lblMax.Caption:='(不多于'+inttostr(const_MaxVehicle)+'个)'
end;

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:=strtoint(edtProp.Text);
    speed:=strtoint(edtSpeed.Text);
    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]:=strtoint(edtD2.Text);
    initialnum[3]:=strtoint(edtD3.Text);
    initialnum[4]:=strtoint(edtD4.Text);
    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;
      edtD2.Enabled:= false;
      edtD3.Enabled:= false;
      edtD4.Enabled:= false;
      edtGreen.Enabled:= false;
      edtYellow.Enabled:= false;
      edtProp.Enabled:=false;
      edtMax.Enabled:=false;
      edtSpeed.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.btnFinishClick(Sender: TObject);
begin
    try
      TrafficCross.Free;
    finally
      btnStart.Enabled:= true;
      btnFinish.Enabled:= false;
      edtD1.Enabled:= true;
      edtD2.Enabled:= true;
      edtD3.Enabled:= true;
      edtD4.Enabled:= true;
      edtGreen.Enabled:= true;
      edtYellow.Enabled:= true;
      edtProp.Enabled:=true;
      edtMax.Enabled:=true;
      edtSpeed.Enabled:=true;
      IsCreated:= false;
    end;
end;

procedure Tfrmmain.timerMainTimer(Sender: TObject);
begin
    if IsCreated
    then begin
      frmMain.Caption:='交通灯管制 ---- 运行中      '+ DateTimeToStr(Now);
      TrafficCross.Refresh;
    end
    else begin
      frmMain.Caption:='交通灯管制';
    end;
end;

end.

⌨️ 快捷键说明

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