Richtlinien für das View-Modell

Module

Die Module im View-Modell sollten den Modulen aus dem Objektmodell entsprechen.

Dateien

  1. \MeinProjekt
  2.   \Adressstamm
  3.     \UI
  4.       \Model

Das Modul muss eine Haupt-Modelldatei mit dem Namen des Moduls und der Endung .avm

  1. \MeinProjekt\Adressstamm\UI\Model\Adressstamm.avm
  1. view model Adressstamm
  2. ...
  3. end view model Adressstamm.

Jedes Modul sollte eine eigene Delphi-Startup-Unit haben, in der die Initialisation des Moduls vorgenommen wird. Diese Datei trägt per Konvention den Namen InitView.pas

  1. \MeinProjekt\Adressstamm\UI\adrInitView.pas
  1. unit adrInitView;
  2.  
  3. interface
  4. uses
  5.   atViewApplication;
  6.  
  7. var
  8.   AdressstammViewModule: TAtViewModule = nil;
  9.  
  10. procedure Startup( _application: TAtViewApplication );
  11. procedure Shutdown;
  12.  
  13. implementation
  14. uses
  15.   SysUtils,
  16.   adrInit,
  17.   adrAdressenView;
  18.  
  19. procedure Startup( _application: TAtViewApplication );
  20.   begin
  21.     adrInit.Startup( _application );
  22.     AdressstammViewModule:=
  23.                 AdressstammModule as TAtViewModule;
  24.     adrAdressenView.
  25.               AttachModule( AdressstammViewModule );
  26.     // ...
  27.   end {Startup};
  28.  
  29. procedure Shutdown;
  30.   begin
  31.     AdressstammViewModule:= nil;
  32.     adrInit.Shutdown;
  33.   end {Shutdown};
  34.  
  35. end {adrInitView}.

Referenzen

Bezeichner

Referenz eines anderen Moduls, das Elemente in diesem Modul verwendet

  1. view model Debitoren
  2.   uses Adressstamm

Referenz einer anderen Unit, die Elemente in einer Unit in diesem Modul verwendet

  1. view model Debitoren
  2. unit Belege
  3.   uses Adressstamm.Adressen

Referenz aus einer anderen Unit auf ein Element in einer Unit in diesem Modul

Beispiel fehlt noch.

Modulpräfix

Der Modulpräfix sollte sich mit demjenigen des Moduls im Objektmodell

  1. view model Adressstamm
  2.   prefixForNamesInGeneratedCode 'Adr'

Units

Units gliedern ein Modul in eng zusammenhängende, in eigenen Quell-Dateien verwaltete Teilbereiche. Sie entsprechen direkt den generierten Delphi-Units. Die View-Units müssen nicht mit den Objektmodell-Units identisch sein. Der Name gibt den Teilbereich an, und sollte auch ohne spezielle Prä- oder Postfixe geschrieben werden. Beispiele: Adressen, Kunden, Belege, Nachschlagelisten.

Dateien

Die Modell-Datei zu einer Unit sollte den Namen der Unit mit den Endung .avm

  1.   \MeinProjekt\Adressstamm\UI\Model\Nachschlagelisten.avm
  1. view model Adressstamm
  2. unit Nachschlagelisten
  3.   ...
  4. end unit Nachschlagelisten
  5. end view model Adressstamm.

Die Modelldatei muss von der Haupt-Datei des Moduls include

  1. view model Adressstamm
  2.   prefixForNamesInGeneratedCode 'Adr'
  3.   includes Adressen
  4.   includes Nachschlagelisten
  5. end view model Adressstamm

Durch den oben definierten Modulpräfix Adr

  1.   \MeinProjekt\Adressstamm\UI\adrNachschlagelistenView.pas

Referenzen

Bezeichner

Referenz einer anderen Unit, die Elemente in dieser Unit verwendet

  1. view model Debitoren
  2. unit Belege
  3.   uses Adressstamm.Adressen

Detailansichten zu Objekten

Detail-Views definieren die Visualisierung von einzelnen Daten-Objekten. Sie haben eine direkte Entsprechung in den generierten Delphi-Klassen. Der Name ist typischerweise gleich wie der Name der visualisierten Modell-Klasse. Beispiele: Adresse, Ort, Beleg.

Man kann verschiedene Visualisierungen für die gleiche Modell-Klasse definieren. In diesem Fall hängt man die genaue Bezeichnung der Visualisierungsart an den Namen an. Beispiele: AdresseKurz, BelegZurKontrolle.

Delphi-Code

  1. detail Adresse
  2.   ...
  3. end detail Adresse

erzeugt in der generierten Delphi-Unit folgende Delphi-Klasse (Modul-Präfix ist Adr)

  1. type
  2.   TAdrAdresseObjView = class;

Referenzen

Referenzen von Listen- und Suchdefinitionen

  1. list Adressen
  2.   detailView Adresse

In der Implementation von Methoden der generierten Klasse

  1. procedure TAdrAdresseObjView.DoSendeMail;
  2.   begin
  3.     if Obj.KannMailEmpfangen then begin
  4.       Obj.SendeMail( 'Subject', 'Text' );
  5.     end;
  6.   end {DoSendeMail};

Listen

Man kann verschiedene Visualisierungen für Objektlisten der gleichen Modell-Klasse definieren. In diesem Fall hängt man die genaue Bezeichnung der Visualisierungsart an den Namen an. Beispiele: AdresseNachLetztemEinkauf, BelegZurKontrolle

Delphi-Code

  1. list Adressen
  2.   ...
  3. end list Adressen

erzeugt in der generierten Delphi-Unit folgende Delphi-Klasse (Modul-Präfix ist Adr)

  1. type
  2.   TAdrAdressenLinkView = class;

Referenzen

Referenzen aus SubLink-Definitionen

  1. link Belege
  2.   listView Belege
  3. link Ort
  4.   listView Orte

Referenzen aus LinkItem-Definitionen

  1. itemForListView Belege
  2.   listView Belege

Suchen

Such-Definitionen sind gleich zu benennen wie Listen-Definitionen, haben aber eine zusätzliche Referenz.

Referenzen

Referenzen aus Link-Definitionen

  1. list Belege
  2.   searchView Belege

Gruppen

Gruppen gliedern die Eigenschaften, Referenzen und Methoden eines Objekts. Sie bilden mit diesen die Menge der Elemente

Tab
für die Top-Level-Gruppen, die normalerweise auf Laschen im Inspector abgebildet werden,
Grp
für den nächsten Level, der auf Gruppenbrüche abgebildet wird,
Line
für den innersten Level, der auf Zeilen mit mehreren Feldern abgebildet wird.
  1. detail Adresse
  2.   group TabMain
  3.     group GrpNames
  4.       ...
  5.       group LineNames
  6.         ...
  7.       end
  8.     ...
  9.     group GrpPhones
  10.       ...
  11.     end
  12.   group TabSettings
  13.     group GrpSettings
  14.       ...
  15.     end
  16.   end
  17. end detail Adresse

Delphi-Code

  1. detail Adresse
  2.   group TabMain
  1. type
  2.   TAdrAdresseObjView = class
  3.   public
  4.     property gTabMain: TAtModelledGroupView read;
  5.   end;

Eigenschaften

View-Eigenschaften visualisieren die Eigenschaften des darunter liegenden Daten-Objekts. Der Name entspricht normalerweise demjenigen der visualisierten Daten-Objekt-Eigenschaft. Dann entfällt auch die explizite Angabe des Bezugs. Beispiele: Name, Vorname, Kreditlimite

Delphi-Code

  1. detail Adressen
  2.   group TabMain
  3.     group GrpMain
  4.       property Name
  1. type
  2.   TAdrAdresseObjView = class
  3.   public
  4.     property pName: TAtModelledPropertyView read;
  5.     property vName: variant read write;
  6.   end;

Referenzen

Referenzen aus Listen- oder Such-Spalten

  1. column Name
  2.   propertyView Name

Aus View-Methoden

  1. if (vName = 'Opus') and not pVorname.Visible
  2. then begin
  3.   ...
  4. end;

Referenzen

View-Referenzen visualisieren die zu-Eins-Objektbezüge des darunter liegenden Daten-Objekts, d.h. sie visualsieren Fremdschlüssel. Die Fremdschlüssel könnten allerdings zusammengesetzt sein. Darum entspricht der Name demjenigen des visualisierten Links, nicht dem des Fremdschlüssels. Dann entfällt auch die explizite Angabe des Bezugs. Beispiele: Ort, Adresse Nicht aber: IDOrt, FirmenID

Delphi-Code

  1. detail Adressen
  2.   group TabMain
  3.     group GrpMain
  4.       reference Ort
  1. type
  2.   TAdrAdresseObjView = class
  3.   public
  4.     property rOrt: TAtModelledReferenceView read;
  5.     property oOrt: TAtAdrOrtObjView read write;
  6.     property kOrt: variant read write;
  7.   end;

Referenzen

Aus View-Methoden

  1. if (oOrt.vName = 'Wetzikon') then begin
  2.   ...
  3. end;

Methoden

View-Methoden visualisieren vom Benutzer auslösbare Aktionen für ein Objekt. Basiert die Methode auf einer darunter liegenden Daten-Objekt-Methode, dann sollte er gleich wie deren Name sein. Beispiele: Verbuchen, Mail schicken

Delphi-Code

  1. detail Adressen
  2.   method MailSchicken
  1. type
  2.   TAdrAdresseObjView = class
  3.   public
  4.     property mMailSchicken: TAtModelledMethodView read;
  5.   end;

Links

Links visualisieren von einem Daten-Objekt ausgehende Links. Der Name sollte daher gleich wie der (Rollen-)Name des visualisierten Links sein. Beispiele: Belege, Kunde

Delphi-Code

  1. detail Adressen
  2.   link Kontakte
  3.   link Ort
  1. type
  2.   TAdrAdresseObjView = class
  3.   public
  4.     property lKontakte: TAdrKontaktLinkView read;
  5.     property lOrt: TAdrOrtLinkView read;
  6.   end;