AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Konzeptfrage: Interface oder Messages
Thema durchsuchen
Ansicht
Themen-Optionen

Konzeptfrage: Interface oder Messages

Ein Thema von Ghostwalker · begonnen am 9. Nov 2016 · letzter Beitrag vom 10. Nov 2016
 
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.355 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Konzeptfrage: Interface oder Messages

  Alt 9. Nov 2016, 18:47
Ich verwirre Dich wohl mehr als geplant.

Ich war zuletzt davon ausgegangen, dass Du dem Formular alle Daten in Form von Objekten bzw. Objektlisten bereitstellt.
Wenn das Formular zur Anzeige der Daten nochmal auf die Datenbank zugreifen muss, sieht das natürlich noch etwas anders aus.
Dann kannst Du keine Objekte zur Benutzung übergeben sondern tatsächlich die Datensatz-Ids.

Grundsätzlich haust Du m.E. die Datenschicht und die Formularschicht zu sehr durcheinander.
Versuche doch mal, das noch konsequenter zu trennen. Dafür gibt es verschiedene Möglichkeiten. Am einfachsten, alles was die Datenmanipulation betrifft in eine eigene Unit auslagern.

Dann könntest Du theoretisch alle Änderungen ohne ein Formular durchführen. Z.B. in einer Methode oder über ein Script.
Dann hast Du eine Datenschicht (und Businesslogik), die für sich funktioniert.

Jetzt muss das Formular sich nur noch an diese Unit wenden und sagen, was es gerade braucht.
Dann kannst Du eine PKW-Liste in Form von kompletten Objekten oder als DataSet übergeben.
Auch kannst Du durch Aufruf bestimmter Methoden Änderungen in der Datenschicht veranlassen.

Jetzt muss den Controls noch gesagt werden, was und wie sie sich zeichnen und verhalten sollen.

Dabei solltest Du aber auf die Zuständigkeiten achten. In einer PKW-Klasse hat m.E. AddNew, Edit(IrgedeineID) und Delete(IrgendeineID) nichts verloren.
Der PKW ist nicht dafür zuständig, irgendwelche Listen zu manipulieren. Er ist ein Objekt und fertig.
Wenn der User in der View, die gerade einen PKW anzeigt, einen neuen PKW in die originalliste hinzufügen können soll, dann muss die View auch die Originalliste kennen. Besser sollte aber AddNew und Delete irgendwie über die Listbox selbst ermöglicht werden (ähnlich einem DBNavigator).

Der PKW sollte üblicherweise auch nicht die Liste kennen, in der er enthalten ist - es sei denn, dies wäre aus dem Datenmodell heraus sinnvoll (Sohn muss seinen Vater kennen).

Delphi-Quellcode:
  TPKW = Class(TObject,IDetail)
     PRIVATE
        ffarbe : Tcolor;
        fleistung: Integer;
        fmarke : TPKWMarke;
        fstatus: integer;
        fid : integer;

     PROTECTED
     PUBLISHED
       property Farbe:TColor read ffarbe write ffarbe;
       property Leistung:integer read fleistung write fleistung
       property Marke : TPKWMarke read fmarke write fmarke
       Property ID:integer read fid write fid;
     PUBLIC
      Procedure SetMaster(element:IMaster);

      Property Master:IMaster write setMaster;

      Procedure AddNew(); // ???
      Procedure Edit(id:integer); // ???
      procedure Delete(id:integer); // ???

   End;

Ich denke, wenn Du Dich erst konkret um das Daten- und Geschäftsmodell kümmerst und erst als nächsten Schritt um die GUI wird es übersichtlicher.


Aber mal sehen, vielleicht kann ja noch jemand anders besser helfen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 9. Nov 2016 um 21:20 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz