Politechnika Śląska w Katowicach
Wydział Transportu
Informatyka - Projekt
1. Michał Kudela
2. Konrad Łysiak
3. Piotr Zieliński
Temat : Edytor Sieci
1. Podstawowe informacje o projekcie:
Naszym projektem jest program, którego zadaniem jest tworzenie edytora sieci skrzyżowań oraz zależności miedzy nimi. Możemy stworzyć skrzyżowania :
- z sygnalizacja świetlną
- bez sygnalizacji świetlnej
- ronda
Program umożliwia określenie ilości pojazdów jadących:
-w lewo
-w prawo
- na wprost
-zawracających
Oraz czas trwania swiatła :
-zielonego
-czerwonego
2. Opis projektu oraz zastosowane komponenty:
Form1
Określenie rodzaju skrzyżowania
Bez sygnalizacji:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
typ_skrzyzowania := 1;
end;
z sygnalizacja:
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
typ_skrzyzowania := 2;
end;
Rondo:
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
typ_skrzyzowania := 3;
end;
Współrzędne myszy:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
wpis3.caption:='poziom '+inttostr(mouse.CursorPos.X);
wpis4.caption:='pion '+ inttostr(mouse.CursorPos.y);
end;
Rysowanie tablicy wraz z tworzeniem przycisku „button” o współrzędnych x,y;
procedure TForm1.FormClick(Sender: TObject);
var
napis: string;
begin
/ rysowania tablicy wraz z stworzeniem przycisku /
tablica_przyciskow[nr] := tbutton.create(self);
tablica_skrzyzowan[nr] := Tskrzyzowanie.create();
with tablica_przyciskow[nr] do begin
/ o współrzędnych kursora/
left:=mouse.cursorpos.X - form1.Left - 3;
Top:=mouse.CursorPos.Y - form1.top - 30;
Width:=60;
Height:=30;
Parent:=self;
Visible:=true;
/ typ skrzyżowania /
case typ_skrzyzowania of
1: napis := 'S ' + inttostr(nr);
2: napis := 'Ss ' + inttostr(nr);
3: napis := 'R ' + inttostr(nr);
end;
/ tworzenie przycisku/
OnClick := Klik;
caption := napis;
name:= 'b' + inttostr(nr);
end;
/tworzenie tablicy/
if nr > 0 then begin
stringgrid1.colcount := stringgrid1.ColCount + 1;
stringgrid1.rowcount := stringgrid1.rowCount + 1;
end;
inc(nr);
stringgrid1.Cells[0, nr] := napis;
stringgrid1.Cells[nr, 0] := napis;
end;
Rysowanie lini miedzy skrzyżowaniami:
procedure TForm1.Button1Click(Sender: TObject);
var i,j :integer;
begin
for i:=1 to stringgrid1.colcount-1 do
for j:=1 to stringgrid1.colcount-1 do begin
if stringgrid1.Cells[i,j]='' then canvas.pen.color:=clbtnface;
if stringgrid1.Cells[i,j]='1' then canvas.pen.color:=clgreen;
if stringgrid1.Cells[i,j]='2' then canvas.pen.color:=clblue;
if stringgrid1.Cells[i,j]='3' then canvas.pen.color:=clred;
/rysowanie lini w zależności od elementów tablicy /
form1.canvas.MoveTo(tablica_przyciskow[i-1].left, tablica_przyciskow[i-1].top);
form1.Canvas.LineTo(tablica_przyciskow[j-1].left, tablica_przyciskow[j-1].top);
end;
Wpisywanie elementów do tablicy:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
i,j : byte;
begin
for i:=1 to stringgrid1.colcount-1 do
for j:=1 to i do
stringgrid1.Cells[i,j]:= stringgrid1.Cells[j,i]
end;
Form2
Ilość pojazdów jadących :
-w lewo
-w prawo
-wprost
-zawracających
prawo: TLabel;
lewo: TLabel;
Prosot: TLabel;
zawracanie: TLabel;
Zamykanie Form2
procedure TForm2.Button1Click(Sender: TObject);
begin
form2.Close;
end;