Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Verständnisfrage Vererbung (https://www.delphipraxis.net/187509-verstaendnisfrage-vererbung.html)

AMaurer 4. Dez 2015 19:06

Verständnisfrage Vererbung
 
Hallo,

ich habe eine DB-Anwendung mit dem üblichen Aufbau:

- Stammdaten mit den entsprechenden Formularen
- Detaildaten mit Formularen

so z. B.

Stammdaten Rezepte
Stammdaten Zutaten

Detaildaten mit Unterabfrage Rezept, Liste der Zutaten und Kochvorschrift.

Um mir die Formularprogrammierung möglichst einfach zu machen, habe ich ein Template-Formular erstellt mit den entsprechenden Funktionen und Prozeduren, die jedes Formular hat (Suche, Einfügen, Löschen usw.). Dieses Template erbt jedes neue Formular. Es funktioniert 100 % für die Stammdaten, also bei Formularen ohne Detaildaten, die aus Unterabfragen kommen.

Bei den Formularen mit Detaildaten habe ich für die Unterabfragen zusätzliche Funktionen programmiert, die ebenfalls alle beim ersten Formularaufruf funktionieren, also wenn das Formular created wird.

Problematisch wird es, wenn ich innerhalb eines Formulare (mit Unterabfragen) zwischen den Datensätzen wechsle. Dann werden zwar die vererbten Funktionen abgearbeitet, die speziellen aber nicht.

Hat jemand eine Idee, was ich da falsch machen könnte?

Danke für Eure Hilfe!


Andreas

TBx 4. Dez 2015 19:14

AW: Verständnisfrage Vererbung
 
Sorry, meine :glaskugel: ist gerade zur Reparatur.
Nein, im Ernst, ohne entsprechende Einblicke in deinen Quellcode ist das nur ein Stochern im Nebel.
Magst Du hier ein Beispiel posten?

AMaurer 4. Dez 2015 20:04

AW: Verständnisfrage Vererbung
 
Liste der Anhänge anzeigen (Anzahl: 2)
Eventuell hänge ich einfach mal die

BaseForm.pas und
Rezepte.pas hier an.

Die sind zwar noch nicht hübsch aber hoffentlich findest Du Dich / Ihr Euch zurecht.

Die BaseForm.pas ist also das Template, das jedes Formular erbt.

Hansa 4. Dez 2015 22:10

AW: Verständnisfrage Vererbung
 
Zitat:

Zitat von AMaurer (Beitrag 1323462)
Um mir die Formularprogrammierung möglichst einfach zu machen, habe ich ein Template-Formular erstellt mit den entsprechenden Funktionen und Prozeduren, die jedes Formular hat (Suche, Einfügen, Löschen usw.). Dieses Template erbt jedes neue Formular.

So macht man das ja auch, allerdings besteht die Frage, wie Du das genau machst ? Irgendwie von Hand oder per Objektablage ?

AMaurer 6. Dez 2015 08:48

AW: Verständnisfrage Vererbung
 
Zitat:

Zitat von Hansa (Beitrag 1323470)
Zitat:

Zitat von AMaurer (Beitrag 1323462)
Um mir die Formularprogrammierung möglichst einfach zu machen, habe ich ein Template-Formular erstellt mit den entsprechenden Funktionen und Prozeduren, die jedes Formular hat (Suche, Einfügen, Löschen usw.). Dieses Template erbt jedes neue Formular.

So macht man das ja auch, allerdings besteht die Frage, wie Du das genau machst ? Irgendwie von Hand oder per Objektablage ?

Ich verstehe Deine Frage nicht. Die Formulare sind von Hand erstellt und werden im Programmablauf bei Bedarf created. Es gibt eine Namenkonvention für die Felder und anhand der Feldtypen und Namen funktionieren die Abläufe. Hilft Dir diese Erklärung weiter?

Hansa 6. Dez 2015 09:41

AW: Verständnisfrage Vererbung
 
Poste mal noch die zu den bereits vorhandenen PAS-Dateien gehörenden DFM-Dateien.

Und was verstehst Du im Zusammenhang unter "speziell" ?

Zitat:

Zitat von AMaurer (Beitrag 1323462)
^:::Dann werden zwar die vererbten Funktionen abgearbeitet, die speziellen aber nicht.


AMaurer 6. Dez 2015 12:13

AW: Verständnisfrage Vererbung
 
Liste der Anhänge anzeigen (Anzahl: 1)
... anbei die beiden DFMs.

Mit "speziell" meine ich nur die Unterschiede zwischen den reinen Stammdatenformularen (nur Edit- und Combobox-Felder) und den Formularen, die Unterabfragen haben (dbGrid).

Hoffentlichen helfen die DFMs weiter.

Viele Grüße

Andreas

Hansa 6. Dez 2015 17:59

AW: Verständnisfrage Vererbung
 
Das hier reicht jedenfalls nicht aus.

Delphi-Quellcode:
TfrmRezepte = class(TfBaseForm)
Ich meine da jetzt, einfach class (Basisform), so in der Richtung hinzuschreiben. Das ist ja schön, es wird irgendwas vererbt, d.h. man muss es nicht nochmals definieren, nur was ? Tja das weiss die erbende Form leider nicht. Deine DFMs geben auch keinen richtigen Aufschluss. Ich mache es deshalb kurz : lege das Basisform wie gewünscht an. Also mit Speicher-Button usw. Gehe dann aber mit rechter Maustaste wieder da drauf und sage "in Objektablage soeichern" oder ähnlich. Wird nun eine ähnliche Form gebraucht, dann gehe auf neu -> weitere und dann auf diese Form. Man braucht sich dann zumindest nicht zu überlegen, ob da irgendein "inheritd" fehlt. Insgesamt gesehen ist folgendes wichtig (Stichwörter, bitte in Hilfe nachlesen) : inherited, override, published, protected.

AMaurer 6. Dez 2015 19:49

AW: Verständnisfrage Vererbung
 
...sorry, ich saß heute Morgen auf dem Schlauch.

Natürlich kommen die Formulare aus der Objektablage ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz