unit Busanzeige1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
ListBox1: TListBox;
TLabel1: TLabel;
TLabel2: TLabel;
TLabel3: TLabel;
TLabel4: TLabel;
TLabel5: TLabel;
Hinzufügen: TButton;
alleLinien: TButton;
Linie: TEdit;
Ziel: TEdit;
Ankunft: TEdit;
Abfahrt: TEdit;
Verspätung: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
bearbeiten: TButton;
löschen: TButton;
zehnAnzeigen: TButton;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Beenden: TBitBtn;
procedure HinzufügenClick(Sender: TObject);
procedure BeendenClick(Sender: TObject);
procedure alleLinienClick(Sender: TObject);
procedure löschenClick(Sender: TObject);
procedure zehnAnzeigenClick(Sender: TObject);
procedure bearbeitenClick(Sender: TObject);
end;
type
TBusEintrag = record
Linie: string;
Ziel: string;
Ankunft: Integer;
Abfahrt: string;
Verspätung: Integer;
end;
var
Form1: TForm1;
Liste: array of TBusEintrag;
c,e,f,l,n,x: integer;
a,b,d,y:string;
implementation
{$R *.dfm}
procedure TDelete;
var
i:integer;
begin
//x bekommt den Wert der makierten Stelle
for i := 0 to listbox1.Count - 1 do
if listbox1.Selected[i] then
begin
x:=i;
end;
//Einträge in Array werden verschoben
while x<high(Liste) do
begin
Liste[x]:=Liste[x+1];
x:=x+1;
end;
//Array wird um 1 verringert
setLength(Liste,Length(Liste)-1);
//Makierter Eintrag wird aus ListBox entfernt
ListBox1.DeleteSelected;
end;
procedure TOutput;
const
MAX_TABS = 5;
Tab = #9;
var
Tabulators: array[0..MAX_TABS] of Integer;
begin
//neuen Eintrag in Array eintragen
Liste[x].Linie:=a;
Liste[x].Ziel:=b;
Liste[x].Ankunft:=c;
Liste[x].Abfahrt:=d;
Liste[x].Verspätung:=e;
//Tabulatorweiten festlegen
Tabulators[0] := 72;
Tabulators[1] := 136;
Tabulators[2] := 202;
Tabulators[3] := 1;
Tabulators[4] := 1;
Listbox1.TabWidth := 1;
//Tabulatoren setzen
SendMessage(ListBox1.Handle, LB_SETTABSTOPS, MAX_TABS, Longint(@Tabulators));
//ListBox leeren
ListBox1.clear;
//Liste ausgeben
f:=0;
while ((f < length(Liste)) and (f<10)) do
begin
ListBox1.Items.Strings[f]:=' '+Liste[f].Linie
+ Tab +Liste[f].Ziel
+Tab+Liste[f].Abfahrt+' Uhr'
+Tab+IntToStr(Liste[f].Verspätung)+Tab+'Minuten';
f:=f+1;
end;
end;
procedure TSort;
begin
if length(Liste)=0 then
begin
SetLength(Liste,1);
end
//suche Position für neuen Eintrag
else
begin
while (c>Liste[x].Ankunft) and (x < length(Liste)) do
begin
x:=(x+1);
end;
//Array um 1 erweitern
SetLength(Liste,length(Liste)+1);
n:=(high(Liste));
//Einträge verschieben
while (n>x) do
begin
Liste[n]:=Liste[(n-1)];
n:=(n-1);
end;
end;
end;
procedure TForm1.alleLinienClick(Sender: TObject);
const
// Die Anzahl der maximal aufretenen Tabs eintragen
MAX_TABS = 5;
Tab = #9;
var
Tabulators: array[0..MAX_TABS] of Integer;
begin
//Tabulatorweiten festlegen
Tabulators[0] := 72;
Tabulators[1] := 136;
Tabulators[2] := 202;
Tabulators[3] := 1;
Tabulators[4] := 1;
Listbox1.TabWidth := 1;
//Tabulatoren setzen
SendMessage(ListBox1.Handle, LB_SETTABSTOPS, MAX_TABS, Longint(@Tabulators));
//ListBox leeren
ListBox1.clear;
//Liste in ListBox eintragen
f:=0;
while (f < length(Liste)) do
begin
ListBox1.Items.Strings[f]:=' '+Liste[f].Linie
+ Tab +Liste[f].Ziel
+Tab+Liste[f].Abfahrt+' Uhr'
+Tab+IntToStr(Liste[f].Verspätung)+Tab+'Minuten';
f:=f+1;
end;
end;
procedure TForm1.bearbeitenClick(Sender: TObject);
var
i:integer;
begin
//x bekommt den Wert der makierten Stelle
for i := 0 to listbox1.Count - 1 do
if listbox1.Selected[i] then
begin
x:=i;
end;
//Makierte Linie wird in Editfelder eingetragen
Linie.Text:= Liste[x].Linie;
Ziel.Text:= Liste[x].Ziel;
Ankunft.Text:= IntToStr(Liste[x].Ankunft);
Abfahrt.Text:= Liste[x].Abfahrt;
Verspätung.Text:= IntToStr(Liste[x].Verspätung);
TDelete;
end;
procedure TForm1.BeendenClick(Sender: TObject);
begin
close;
end;
procedure TForm1.löschenClick(Sender: TObject);
begin
TDelete;
end;
procedure TForm1.zehnAnzeigenClick(Sender: TObject);
const
// Die Anzahl der maximal aufretenen Tabs eintragen
MAX_TABS = 5;
Tab = #9;
var
Tabulators: array[0..MAX_TABS] of Integer;
begin
//Tabulatorweiten festlegen
Tabulators[0] := 72;
Tabulators[1] := 136;
Tabulators[2] := 202;
Tabulators[3] := 1;
Tabulators[4] := 1;
Listbox1.TabWidth := 1;
//Tabulatoren setzen
SendMessage(ListBox1.Handle, LB_SETTABSTOPS, MAX_TABS, Longint(@Tabulators));
//ListBox leeren
ListBox1.clear;
//Liste ausgeben
f:=0;
while ((f < length(Liste)) and (f<10)) do
begin
ListBox1.Items.Strings[f]:=' '+Liste[f].Linie
+ Tab +Liste[f].Ziel
+Tab+Liste[f].Abfahrt+' Uhr'
+Tab+IntToStr(Liste[f].Verspätung)+Tab+'Minuten';
f:=f+1;
end;
end;
procedure TForm1.HinzufügenClick(Sender: TObject);
const
// Die Anzahl der maximal aufretenen Tabs eintragen
MAX_TABS = 5;
Tab = #9;
var
Tabulators: array[0..MAX_TABS] of Integer;
begin
try
//Eingetragene Werte Variablen zuordnen
x:=0;
a:= Linie.Text;
b:= Ziel.Text;
c:= StrToInt(Ankunft.Text);
d:= Abfahrt.Text;
e:= StrToInt(Verspätung.Text);
TSort;
TOutput;
Linie.Clear;
Ziel.Clear;
Ankunft.Clear;
Abfahrt.Clear;
Verspätung.Clear;
except
showmessage('Bitte alle Felder ausfüllen und Ankunft+Verspätung in Minuten angeben');
end;
end;
end.