is-Logo

PAT 01 -  V. 3.0
-   Aufgabe und Hinweise -

S. Spolwig


[Home | Unterrichtssequenzen]
[Startseite]

Page down

Patienten in der Liste suchen und anzeigen

Das Bild zeigt die Botschaften und den Datenfluss beim Suchen  

In der Anforderungsdefinition steht lediglich "Patient nach Name suchen und einzeln anzeigen" Es gibt sehr unterschiedliche Suchverfahren, die wir später genauer untersuchen werden.

Zum Anfang werden wir ein einfaches wählen: Man holt nacheinander vom ersten bis zum letzten ein Element aus der Liste und vergleicht es mit dem Suchelement. Wenn die Namen übereinstimmen, hat man es gefunden und es wird in der Maske angezeigt.

? ? ? ? ? ? ? ? ? ? ? ? ? ? NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL

pfeil.gif (890 Byte)



Dazu sind folgende Schritte in dieser Reihenfolge erforderlich:
  1. Ergänzen Sie die Liste um die Suchmethode 'SearchElement (...)'
     

    function TListe.SearchElement (suchElem : TElement) : TElement; 
    (*--------------------------------------------------------------- *)
    var gefunden : boolean;
    Elem : TElement;

    begin
      Result := NIL;
      gefunden := false;

      First;
      while NOT (gefunden or Eolist) do
      begin
        Elem := GetElement;
        if Elem.IstGleich(suchElem)
        then
          begin
            gefunden := true;
            Result := Elem;
          end
        else inc(AktuellePos) // Next;
      end;
    end;

     

  1. Ergänzen Sie die Klasse TPatient um die Methode 'IstGleich (...)' .
     

    function TPatient.IstGleich(pat : TPatient) : boolean;
    (* -------------------------------------------------------------- *)
    begin
      result := false;
      if ((Vorname = pat.Vorname) and (Name = pat.Name))
      then result := true;
    end;

Da es in der Oberklasse TPerson schon eine Methode IstGleich mit anderen Parametern gibt, müssen wir diese überschreiben mit der Compiler-Direktive reintroduce im Interface-Teil.

  1. Wie immer werden die Suchaktionen im Fensterformular aufgerufen. Implementieren Sie in uFensterFrm die Ablaufsteuerung für den Suchen/Anzeige-Button! Beachten Sie dabei, dass Sie dazu einen SuchPatient kreieren müssen, den Sie der Listenmethode 'SearchFor ..' zum Vergleichen mitgeben müssen. In Rohform etwa so:

     

    procedure TFensterFrm.AnzeigeBtnClick(Sender: TObject);
    (* ------------------------------------------------------------- *)
    var GesuchterPatient : TPatient;
    begin
      GesuchterPatient := TPatient.Create;
      DatenAktualisieren(GesuchterPatient);
      AktuellerPatient:= PatientenListe.SearchElement(GesuchterPatient);
      MaskeAktualisieren (AktuellerPatient);
      GesuchterPatient.Free;         // wird nicht mehr gebraucht
    end;

 

Ein wenig müssen noch daran absichern: Was passiert, wenn die Liste leer ist oder der gesuchte Eintrag wird nicht gefunden?  

Hinweis:
Kopieren Sie den Quelltext direkt aus diesem Dokument und fügen Sie ihn in der Klasse ein!



©    05. Oktober 2008    Siegfried Spolwig

page_top