OSZ Handel I
Informatik

PAT 01 -  V. 2.2
Musterlösung

S. Spolwig

[Home | Wirtschaftsgymnasium | Informatik | Unterrichtsmaterialien | PAT 01]

unit uFenster;
(* ******************************************************************** *)
(* K L A S S E :  FENSTER                                               *)
(* -------------------------------------------------------------------- *)
(* Version     :  2.2                         				*)
(* Autor       :  Siegfried Spolwig, OSZ Handel, 10997                  *)
(*                                                                      *)
(* Aufgabe     : uebernimmt E/A und steuert die Funktionen zur Patien-  *)
(*               tenverwaltung über ein GUI                             *)
(* Compiler    : DELPHI 4.0                                             *)
(* Aenderung   : V. 1.0 - 28-AUG-98                                     *)
(*                  1.3 - 02-OKT-01 Pat agg. ADR                        *)
(*                  2.0 - 04-SEP-98 Liste                               *)
(*                  2.2 - 04-SEP-98 Load, Store                         *)
(* ******************************************************************** *)
interface
(* ==================================================================== *)
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls,
  uPatient,
  uSListe;
type
  TFensterFrm = class(TForm)
    SteuerPnl  : TPanel;
    MeldePnl   : TPanel;
    NeuBtn     : TButton;
    AnzeigeBtn : TButton;
    AendernBtn : TButton;
    LoeschBtn  : TButton;
    OkBtn      : TButton;
    ErsterBtn  : TButton;
    RueckBtn   : TButton;
    VorBtn     : TButton;
    LetzterBtn : TButton;
    EndeBtn    : TButton;
    Personbox  : TGroupBox;
    NameLbl    : TLabel;
    NameEdt    : TEdit;
    VornameLbl : TLabel;
    VornameEdt : TEdit;
    GebTagLbl  : TLabel;
    GebTagEdt  : TEdit;
    AdrBox     : TGroupBox;
    StrasseLbl : TLabel;
    StrasseEdt : TEdit;
    PlzLbl     : TLabel;
    PlzEdt     : TEdit;
    OrtLbl     : TLabel;
    OrtEdt     : TEdit;
    TelLbl     : TLabel;
    TelEdt     : TEdit;
    MEDbox     : TGroupBox;
    SexLbl     : TLabel;
    Label1     : TLabel;
    BlutLbl    : TLabel;
    SexEdt     : TEdit;
    KKEdt      : TEdit;
    BlutEdt    : TEdit;
    procedure NeuBtnClick (Sender: TObject);
    procedure AnzeigeBtnClick (Sender: TObject);
    procedure AendernBtnClick (Sender: TObject);
    procedure LoeschBtnClick (Sender: TObject);
    procedure EndeBtnClick (Sender: TObject);
    procedure OkBtnClick (Sender: TObject);
    procedure VorBtnClick (Sender: TObject);
    procedure RueckBtnClick (Sender: TObject);
    procedure LetzterBtnClick (Sender: TObject);
    procedure ErsterBtnClick (Sender: TObject);
    procedure MeldePnlClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private { Private-Deklarationen }
    procedure Init;
    procedure DatenAktualisieren (var pat : TPatient);
    procedure MaskeAktualisieren (pat : TPatient);
  public  { Public-Deklarationen }
end;
var
  FensterFrm       : TFensterFrm;
(* -------------------- B e s c h r e i b u n g -------------------------
Oberklasse    : TForm
Bezugsklassen : TListe, TPatient, GUI-Klassen
Methoden
--------
Init
  Auftrag: alle GUI-Felder leeren;
  vorher : -
  nachher: -
NeuBtnClick
  Auftrag: Maske leeren für die Eingaben eines neuer Patientendaten zum Suchen
           oder Neuerfassen. Die Daten werden verarbeitet, wenn OK, Ändern oder
           Löschen gedrückt ist.
  nachher: Maske ist leer
AnzeigeBtnClick
  Auftrag: Aktuellen Eintrag zum Suchen abschicken und in der Liste suchen.
           Schlüssel ist der Name. Beenden mit Click.
  vorher : Liste ist nicht leer
  nachher: Gesuchter AktuellerPatient wird angezeigt oder Fehlermeldung
AendernBtnClick
  Auftrag: Die in die Maske eingetragenen Daten als Änderung übernehmen.
  vorher : Liste ist nicht leer
  nachher: Patient ist in die Liste zurueckgeschrieben. Maske ist leer.
LoeschBtnClick
  Auftrag: Aktuellen Patienten loeschen nach Rückfrage.
  vorher : Liste ist nicht leer. Der zu löschenden Patient wurde gefunden.
           Maske ist leer.
  nachher: Patient ist aus der Liste entfernt
EndeBtnClick
  Auftrag: Programm beenden, Fenster schließen, Daten speichern
  vorher : -
  nachher: Daten gespeichert, Programm beendet
OkBtnClick
  Auftrag: Aktuellen Patienten aus der Maske uebernehmen. Es kann solange
           editiert werden, bis OK geklickt ist. Ist der Name leer, wird kein
           Eintrag erzeugt.
  vorher : -
  nachher: Aktueller Patient ist uebernommen und an die Listem angefuegt.
VorBtnClick
  Auftrag: zum nächsten Patienten in der Liste blättern. Ist das Listenende
           erreicht oder ist die Liste leer, erscheint eine Meldung.
  vorher : -
  nachher: Listenposition ist die nächste. Neuer aktueller Patient wird angezeigt.
RueckBtnClick
  Auftrag: zum nächsten Patienten in der Liste rückwärtsblättern. Ist der
           Listenanfang erreicht oder ist die Liste leer, erscheint eine
           Meldung.
  vorher : -
  nachher: Listenposition ist die vorige. Neuer aktueller Patient wird angezeigt.
LetzterBtnClick
  Auftrag: zur letzten Position in der Liste springen.Ist die Liste ist leer,
           erscheint eine Meldung.
  vorher : -
  nachher: Listenposition ist letztes Element. Letzter Eintrag wird angezeigt.
ErsterBtnClick
  Auftrag: zur ersten Position in der Liste springen. Ist die Liste leer,
           erscheint eine Meldung.
  vorher : -
  nachher: Listenposition ist erstes Element. Erster Patient wird angezeigt.
MaskeAktualisieren (pat : TPatient)
  Auftrag: Attributwerte des aktuellen Patienten in die GUI-Maske übernehmen
  vorher : pat ist vorhanden, sonst bleibt Maske leer.
  nachher: Feldinhalte werden in der Maske angezeigt.
DatenAktualisieren (var  : TPatient);
  Auftrag: Inhalte aller Felder der GUI-Maske an den aktuellen Patienten
           uebergeben.
  vorher : Patient ist initialisiert.
  nachher: alle Masken-Inhalte sind an den aktuellen Patienten uebergeben.
----------------------------------------------------------------------- *)
implementation
{$R *.DFM}
(* ==================================================================== *)
var
  AktuellerPatient : TPatient;
  Patientenliste   : TListe;
procedure TFensterFrm.FormCreate(Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  FensterFrm.Init;
  Patientenliste   := TListe.Create;
  AktuellerPatient := Tpatient.Create;
  Patientenliste.Load('pat.dat');
end;
procedure TFensterFrm.Init;
(* ------------------------------------------------------------------- *)
begin
  FensterFrm.Caption := '  PAT 01   -    V. 2.2                OSZ - SchrottSoft';
  NameEdt.Text    := '';
  VorNameEdt.Text := '';
  GebTagEdt.Text  := '';
  StrasseEdt.Text := '';
  PlzEdt.Text     := '';
  OrtEdt.Text     := '';
  TelEdt.Text     := '';
  SexEdt.Text     := '';
  KKEdt.Text      := '';
  BlutEdt.Text    := '';
end;
procedure TFensterFrm.NeuBtnClick (Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  Init;
  Caption := '  PAT 01   -   Neue Eingaben';
end;
procedure TFensterFrm.AnzeigeBtnClick(Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  Caption           := '  PAT 01   -   Patient einzeln anzeigen';
  MaskeAktualisieren(AktuellerPatient);
end;
procedure TFensterFrm.AendernBtnClick (Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  MeldePnl.Caption := ' Nicht fertig ...'
end;
procedure TFensterFrm.LoeschBtnClick (Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
 MeldePnl.Caption := ' Nicht fertig .....';
end;
procedure TFensterFrm.OkBtnClick(Sender: TObject);
(* ------------------------------------------------------------------- *)
var NeuerPatient : TPatient;
begin
  NeuerPatient := TPatient.Create;  // neues Exemplar muss in die Liste
  Datenaktualisieren (NeuerPatient);
  Patientenliste.Append (NeuerPatient);
  Init;
end;
procedure TFensterFrm.VorBtnClick(Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
 Init;
  MeldePnl.Caption := '';
  Patientenliste.Next;
  AktuellerPatient := Patientenliste.GetElement;
  MaskeAktualisieren (AktuellerPatient);
end;
procedure TFensterFrm.RueckBtnClick(Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  Init;
  MeldePnl.Caption := '';
  Patientenliste.Previous;
  AktuellerPatient := Patientenliste.GetElement;
  MaskeAktualisieren(AktuellerPatient);
end;
procedure TFensterFrm.LetzterBtnClick(Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  MeldePnl.Caption := '';
  Patientenliste.Last;
  AktuellerPatient := Patientenliste.GetElement;
  MaskeAktualisieren(AktuellerPatient);
end;
procedure TFensterFrm.ErsterBtnClick(Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  MeldePnl.Caption := '';
  Patientenliste.First;
  AktuellerPatient   := Patientenliste.GetElement;
  MaskeAktualisieren(AktuellerPatient);
end;
procedure TFensterFrm.EndeBtnClick(Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  Patientenliste.Store('pat.dat');
  Patientenliste.Free;
  Close;
end;
procedure TFensterFrm.MeldePnlClick(Sender: TObject);
(* ------------------------------------------------------------------- *)
begin
  MeldePnl.Caption := '';
end;
procedure TFensterFrm.DatenAktualisieren (var pat : TPatient);
(* ------------------------------------------------------------------- *)
begin
  Pat.SetName (NameEdt.Text);
  Pat.SetVorName (VorNameEdt.Text);
  Pat.SetGeburtstag (GebTagEdt.Text);
  Pat.Adresse.SetStrasse(StrasseEdt.Text);
  Pat.Adresse.SetPlz (PlzEdt.Text);
  Pat.Adresse.SetOrt (OrtEdt.Text);
  Pat.Adresse.SetTelefonNr (TelEdt.Text);
  Pat.SetGeschlecht (SexEdt.Text[1]);
  Pat.SetKrankenkasse (KKEdt.Text);
  Pat.SetBlutgruppe (BlutEdt.Text);
end;
procedure TFensterFrm.MaskeAktualisieren (pat : TPatient);
(* ------------------------------------------------------------------- *)
begin
  NameEdt.Text    := Pat.GetName;
  VorNameEdt.Text := Pat.GetVorName ;
  GebTagEdt.Text  := Pat.GetGeburtstag;
  StrasseEdt.Text := Pat.Adresse.GetStrasse;
  PlzEdt.Text     := Pat.Adresse.GetPlz ;
  OrtEdt.Text     := Pat.Adresse.GetOrt;
  TelEdt.Text     := Pat.Adresse.GetTelefonNr;
  SexEdt.Text     := Pat.GetGeschlecht;
  KKEdt.Text      := Pat.GetKrankenkasse;
  BlutEdt.Text    := Pat.GetBlutgruppe;
end;
END.



©    27. August 2005    Siegfried Spolwig

page_top