📄 frommain.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 + -