mirror of
https://github.com/ulfgebhardt/delphi_ampel.git
synced 2025-12-12 23:35:54 +00:00
163 lines
3.5 KiB
ObjectPascal
163 lines
3.5 KiB
ObjectPascal
unit Ampelu;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, ExtCtrls, ImgList, vars, newclasses, StdCtrls;
|
|
|
|
type
|
|
TfAmpel = class(TForm)
|
|
Streetimg: TImage;
|
|
FORAmpel: TImage;
|
|
FOGAmpel: TImage;
|
|
FURAmpel: TImage;
|
|
FUGAmpel: TImage;
|
|
ALGAmpel: TImage;
|
|
ALYAmpel: TImage;
|
|
ALRAmpel: TImage;
|
|
ARGAmpel: TImage;
|
|
ARYAmpel: TImage;
|
|
ARRAmpel: TImage;
|
|
FUKnopf: TButton;
|
|
FOKnopf: TButton;
|
|
tAutoTimer: TTimer;
|
|
AmpelTimer: TTimer;
|
|
tFussgaengerTimer: TTimer;
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FOKnopfClick(Sender: TObject);
|
|
procedure FUKnopfClick(Sender: TObject);
|
|
procedure setProcessMessages;
|
|
procedure tAutoTimerTimer(Sender: TObject);
|
|
procedure AmpelTimerTimer(Sender: TObject);
|
|
procedure FormCanResize(Sender: TObject; var NewWidth,
|
|
NewHeight: Integer; var Resize: Boolean);
|
|
procedure tFussgaengerTimerTimer(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
AmpelSystem:TAmpelSystem;
|
|
AutosR,AutosL:array of TAuto;
|
|
FussgaengerO, FussgaengerU:array of TFussgaenger;
|
|
AmpelPlaetzeO, AmpelPlaetzeU: array of TAmpelPlatz;
|
|
AutoTimeri:integer;
|
|
AmpelTimeri:integer;
|
|
end;
|
|
|
|
var
|
|
fAmpel: TfAmpel;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses functions;
|
|
|
|
procedure TfAmpel.setProcessMessages;
|
|
begin
|
|
|
|
Application.ProcessMessages;
|
|
|
|
end;
|
|
|
|
procedure TfAmpel.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
|
|
ProgrammBeenden;
|
|
Application.Terminate;
|
|
|
|
end;
|
|
|
|
procedure TfAmpel.FormCreate(Sender: TObject);
|
|
begin
|
|
|
|
setAndCreateStandarts;
|
|
bindImagesToAmpelSystem;
|
|
setImagesToForm;
|
|
setAutosReadyToStart;
|
|
setFussgaengerReadyToStart;
|
|
setAmpelPlaetzeReadyToStart;
|
|
fAmpel.AmpelSystem.setFRot;
|
|
fAmpel.AmpelSystem.setAGruen;
|
|
|
|
end;
|
|
|
|
procedure TfAmpel.FOKnopfClick(Sender: TObject);
|
|
begin
|
|
|
|
FussgaengerKnopf;
|
|
|
|
end;
|
|
|
|
procedure TfAmpel.FUKnopfClick(Sender: TObject);
|
|
begin
|
|
|
|
FussgaengerKnopf;
|
|
|
|
end;
|
|
|
|
procedure TfAmpel.tAutoTimerTimer(Sender: TObject);
|
|
begin
|
|
|
|
AutoTimeri:=fAmpel.AutoTimeri+1;
|
|
AutoTimerR;
|
|
AutoTimerL;
|
|
|
|
end;
|
|
|
|
procedure TfAmpel.AmpelTimerTimer(Sender: TObject);
|
|
var i:integer;
|
|
begin
|
|
|
|
AmpelTimeri:=AmpelTimeri+1;
|
|
|
|
//FussgaengertimerO;
|
|
|
|
{ for i:=0 to AnzahlDerFussgaengerO-1 do
|
|
begin
|
|
if (FAmpel.AmpelSystem.FUAmpel.State) and (fAmpel.FussgaengerO[i].active=true) then
|
|
begin
|
|
fAmpel.FussgaengerO[i].Image.Top:=fAmpel.FussgaengerO[i].Image.Top+10;
|
|
if fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz<>-1 then
|
|
begin
|
|
fAmpel.AmpelPlaetzeO[fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz].Besetzt:=false;
|
|
fAmpel.FussgaengerO[i].AngesteuerterAmpelPlatz:=-1;
|
|
end;
|
|
end;
|
|
if FAmpel.FussgaengerO[i].Image.top>FAmpel.Height+100 then fAmpel.FussgaengerO[i].Active:=false;
|
|
end;}
|
|
|
|
if AmpelTimeri=30 then AmpelSystem.setAGelb;
|
|
if AmpelTimeri=60 then AmpelSystem.setARot;
|
|
if AmpelTimeri=100 then AmpelSystem.setFGruen;
|
|
if AmpelTimeri=300 then AmpelSystem.setFRot;
|
|
if AmpelTimeri=340 then AmpelSystem.setARotGelb;
|
|
if AmpelTimeri=380 then AmpelSystem.setAGruen;
|
|
if AmpelTimeri>380 then
|
|
begin
|
|
AmpelTimeri:=0;
|
|
fAmpel.AmpelSystem.Changing:=false;
|
|
AmpelTimer.Enabled:=false;
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TfAmpel.FormCanResize(Sender: TObject; var NewWidth,
|
|
NewHeight: Integer; var Resize: Boolean);
|
|
begin
|
|
|
|
resize:=false;
|
|
|
|
end;
|
|
|
|
procedure TfAmpel.tFussgaengerTimerTimer(Sender: TObject);
|
|
begin
|
|
|
|
FussgaengertimerO;
|
|
|
|
end;
|
|
|
|
end.
|