is-Logo Objektorientierte Programmierung (OOP)
M-V-C Implementierung - Observer Pattern Design

S. Spolwig


[Home | Programmiersprachen | Delphi]
 

unit uFenster;
// **********************************************************************
(* K L A S S E :  FENSTER                                               *)
(* -------------------------------------------------------------------- *)
(* Version     :  1.1 		                                        *)
(* Autor       :  Siegfried Spolwig, OSZ Handel, 10997                  *)
(* Aufgabe     :  Veranschaulichung des Datenflusses bei M-V-C          *)
(*                Observer Pattern Design nach einem Entwurf von        *)
(*                Christer Höstklint, Fredrik Öhman                     *)
(* Compiler    :  DELPHI 7.0                                            *)
(* Aenderung   :  V. 1.0 - 28-AUG-98                                    *)
(*                   1.1 - 14-OCT-04   Observer                         *)
// **********************************************************************

interface
// ======================================================================
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons,
  uPerson;

type
  TFensterFrm = class(TForm)
    GroesseLbl  : TLabel;
    GroesseEdt  : TEdit;
    GewichtLbl  : TLabel;
    GewichtEdt  : TEdit;
    BMILbl		  : TLabel;
    BmiEdt		  : TEdit;
    NameEdt		  : TEdit;
    NameLbl     : TLabel;
    SteuerPnl	  : TPanel;
    EndeBtn		  : TButton;
    updModelBtn : TButton;
    AbnehmBtn   : TButton;
    View2GrpBox: TGroupBox;
    StaticText1 : TStaticText;
    StaticText2 : TStaticText;
    StaticText3 : TStaticText;
    StaticText4 : TStaticText;


    procedure FormShow(Sender: TObject);
    procedure updModelBtnClick(Sender: TObject);
    procedure AbnehmBtnClick(Sender: TObject);
    procedure EndeBtnClick(Sender: TObject);
   private
    Person : TPerson;       // ---  Model PERSON
    procedure MaskeAktualisieren (Sender:TObject);
    procedure DatenAktualisieren (Sender:TObject);
   public
  end;

var
  FensterFrm: TFensterFrm;  // --- GUI

implementation
{$R *.DFM}
// ======================================================================

procedure TFensterFrm.MaskeAktualisieren;
// ----------------------------------------------------------------------
begin
  StaticText1.Caption := Person.Name;
  StaticText2.Caption := floattostr(Person.Groesse);
  StaticText3.Caption := floattostr(Person.Gewicht);
  StaticText4.Caption := floattostr(Person.HatBmi);
  BmiEdt.Text         :=  floattostr(person.HatBmi);
end;

procedure TFensterFrm.FormShow(Sender: TObject);
// ----------------------------------------------------------------------
begin
  Person := TPerson.Create;
  Person.AddObserver(MaskeAktualisieren,self);
end;

procedure TFensterFrm.DatenAktualisieren (Sender:TObject);
begin
  Person.Name   := NameEdt.Text;
  Person.Groesse:= strtofloat(GroesseEdt.Text);
  Person.Gewicht:= strtofloat(GewichtEdt.Text);
  NameEdt.Text  := Person.Name;
end;

procedure TFensterFrm.updModelBtnClick(Sender: TObject);
// ----------------------------------------------------------------------
begin
  DatenAktualisieren(Person);
  MaskeAktualisieren(Person);
end;

procedure TFensterFrm.AbnehmBtnClick(Sender: TObject);
// ----------------------------------------------------------------------
begin
  Person.Abnehmen;
  MaskeAktualisieren(Person);
end;

procedure TFensterFrm.EndeBtnClick(Sender: TObject);
// ----------------------------------------------------------------------
begin
  Close;
end;

end. // ------ UNIT -------

 

©    04. Oktober 2008     Siegfried Spolwig

Seitenanfang