OSZ Handel I
Informatik

Anwalt 2004 - Version 4.0
-   Suchen von Mandanten -

S. Spolwig
Johann Penon

[Home | Wirtschaftsgymnasium | Informatik | Unterrichtsmaterialien]
[Startseite]

Page down

Mandanten in der Liste suchen und anzeigen

In der Anforderungsdefinition steht lediglich "Mandant 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:

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 TMandant um die Methode 'IstGleich (...)' .
    Wenn Sie nur nach Nachnamen suchen wollen, dann lassen Sie in der Bedingung der Verzweigung den Vornamen weg.
    Achtung! Damit diese Methode funktioniert, müssen die Attribute Name und Vorname in der Klasse TPerson mit dem Zugriffsrecht "protected" versehen sein. Überprüfen Sie dies bitte.

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

  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 SuchMandant kreieren müssen, den Sie der Listenmethode 'SearchElement ..' zum Vergleichen mitgeben müssen. In Rohform etwa so:

procedure TFensterFrm.AnzeigeBtnClick(Sender: TObject);
(* ------------------------------------------------------------- *)
var GesuchterMandant : TMandant;
begin
  GesuchterMandant := TMandant.Create;
  DatenAktualisieren(GesuchterMandant);
  AktuellerMandant:= MandantenListe.SearchElement(GesuchterMandant);
  MaskeAktualisieren (AktuellerMandant);
  GesuchterMandant.Free;         // wird nicht mehr gebraucht
end;

Perfekt ist es erst, wenn folgende Frage gelöst wurde: 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!

©   16. November 2005    Siegfried Spolwig

page_top