Thema: Delphi Proceduren erstellen

Einzelnen Beitrag anzeigen

Marcel2906

Registriert seit: 17. Aug 2011
Ort: Warendorf
112 Beiträge
 
Delphi 2010 Professional
 
#1

Proceduren erstellen

  Alt 23. Aug 2011, 09:41
Hey Leute,

ich habe ein Programm geschrieben, welches die Funktionen einer Bus Anzeigetafel hat.
Nun sollte ich das löschen, die Ausgabe an listbox und das sortieren in einer eigenen Procedure machen.
Doch so etwas hab ich noch nie gemacht, darum hab ich mich mal im iNet schlau gemacht. Für das sortieren hat es auch geklappt, doch die anderen beiden Proceduren gehen nicht. Anscheinend kann ich in diesen Proceduren meine ListBox nicht benutzen.
Hoffentlich könnt Ihr mir helfen.

Code:
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.
  Mit Zitat antworten Zitat