AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung von TDataSet auf einem Frame

Ein Thema von Codehunter · begonnen am 2. Jul 2019 · letzter Beitrag vom 3. Jul 2019
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 15:09
Hallo!

Ich erstelle ein neues Frame und lege ein Dataset darauf. Das füge ich nun der Objektablage hinzu. Nun erstelle ich ZWEI neue Units A und B mit dem soeben erzeugten Frame als Vorlage.

Wenn ich nun in Unit A beim Dataset den Feldeditor öffne und ein paar Felder hinzufüge, dann erscheinen die auch in Unit B im Dataset. Scheint so als würde die IDE die Felder nicht im DFM der abgeleiteten Frames anlegen sondern im Elternframe. Löschen kann ich die Felder aber NUR in Unit A, nicht in der Eltern-Unit und auch nicht in Unit B. Dann erscheint die Fehlermeldung "Auswahl enthält eine Komponente, die in einem Vorfahr-Formular eingeführt wurde, das nicht gelöscht werden kann.."

Denk ich da jetzt falsch oder gibt es einen Trick, die IDE die Felder im Kind-DFM anlegen zu lassen?

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#2

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 15:13
die gehören ja auch zu Unit A
Ich würde einen Frame machen, welcher alle vererbbaren Elemente enthält und dann in davon in Unit A und B ableiten ... damit bleibt die Feldauswahl lokal.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 15:15
die gehören ja auch zu Unit A
Ich würde einen Frame machen, welcher alle vererbbaren Elemente enthält und dann in davon in Unit A und B ableiten ... damit bleibt die Feldauswahl lokal.
Versteh ich grad nicht. Weil eigentlich hab ich genau das gemacht.

EDIT: Nennen wir die Unit vom Elternformular mal "uMama.pas" und die beiden abgeleiteten Units "uKindA.pas" und "uKindB.pas". Das Dataset liegt auf dem Formular von uMama, die Felder habe ich in uKindA hinzugefügt. Sie erscheinen aber auch in uKindB. Ich hoffe, jetzt wird mein Problem verständlicher.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter ( 2. Jul 2019 um 15:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#4

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 15:21
Versteh ich grad nicht. Weil eigentlich hab ich genau das gemacht.
Sorry, verlesen
Ich habe beim ersten Durchlesen es so verstanden, dass Du von dem Frame in Unit A ableitest. Ich arbeite eigentlich nicht mit Frames, sondern nehme immer Forms, welche ich dann zur Laufzeit ohne Rand in ein Panel o.ä. einbette - da kommen sie sich nicht ins Gehege.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 15:25
Das kann ich leider nicht beeinflussen, das Projektkonzept sieht Frames vor.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 15:35
Wenn die Frames aus der Objektablage kommen, muss man aufpassen, dass man beim Einfügen auch "Vererben" ausgewählt hat und nicht "Verwenden".
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#7

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 15:43
Verstehe ich irgendwie nicht:

Du hast ein Frame, das Du zweimal auf ein Formular legst.

Auf diesem Formular liegt auch ein DataSet.

Nun sollen dem einen DataSet auf dem ersten Frame Felder hinzugefügt werden und auf dem zweiten Frame andere?

Irgendwie erschließt sich mir hier der Sinn nicht so ganz.

Habe mal ein Frame erstellt, das 'ne DataSource, ein DBGrid, 'nen DBNavigator und so diverses Allerlei für "Standardhandling" von Datenbankenanzeigen in meinen Programmen kapseln soll.

Das Frame hat u. a. eine Eigenschaft DataSet. Dazu gibt es einen passenden Setter und auch 'nen Getter.
Weise ich nun der Eigenschaft DataSet des Frames eine DataSet zu, so wird im Setter der DataSource auf dem Frame mit dem DataSet auf dem Formular versorgt.

Für mehrere Frames auf einem Formular benötige ich dann auch mehrere DataSets auf dem Formular, es sei denn: Mehrere Frames sollen die gleichen Daten anzeigen.

Alles was das DataSet betrifft, also Feldeditor und Felder hinzufügen ..., geschieht auf dem Formular und nicht in der / den Unit/s der / des Frames.

Wenn in der Unit des Frames was geändert wird, so betrifft das alle Frames dieses Typs und hat auch Auswirkungen auf bestehende Programme, sofern sie neu kompiliert werden.

Das ist aber nicht der Sinn des Feldeditors zum DataSet, da sollen Änderungen nur für eine konkrete Instanz eines Frames gelten.

Eventuell hilft das ja, wenn nicht, weil ich die Aufgabenstellung falsch verstanden habe, vergiss es einfach
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 16:00
Du hast ein Frame, das Du zweimal auf ein Formular legst.
Schon falsch. Ich habe ein Frame, dass ich in die Objektablage hinzufüge. Der Fehler scheint schon hier zu passieren. Denn wenn ich genauer hinschaue, fügt die IDE der Objektablage nicht das von mir erstellte Frame mit dem Dataset hinzu sondern dessen Elternframe (ja ich weiß, schreckliche Verschachtelung, nicht auf meinem Mist gewachsen).

Ich mache da erstmal einen Haken dran, weil zu verfrickelt in der Hierarchie. Da müssen erstmal die Erfinder ran.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#9

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 16:14
Delphi 7:

Neue Anwendung

Dem Projekt hinzufügen: Unit mit dem Frame auswählen.
Benötigt man mehrere, unterschiedliche Frames, pro Frame wiederholen.

Auf das Hauptformular wechseln.

In der Toolpalette gibt es auf dem Reiter Standard als erstes das Symbol "Frames".

Dieses anklicken.

Auf eine beliebige Stelle des Hauptformulars klicken.

Es erscheint ein Dialog mit allen Frames, die zum Projekt hinzugefügt wurden. Gewünschtes Frame auswählen, ok klicken.

Wie's bei Deinem Delphi konkret aussieht, weiß ich nicht, aber es wird sicherlich einen analogen Weg geben.

In der "Frameunit" wird nichts geändert. Es sei denn, das Frame und alle seine Instanzen in allen Programmen, die es nutzen, soll geändert werden. Also z. B. Fehlerkorrektur im Quelltext des Frames.

Logik, Änderungen, Ergänzungen ... (wie z. B. Feldeditor und Felder hinzufügen für ein DataSet) haben nichts im Quelltext des Frames zu suchen.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Vererbung von TDataSet auf einem Frame

  Alt 2. Jul 2019, 16:42
Ich habe das Gefühl, da ist tatsächlich was buggy in der IDE. Wenn ich den ganz klassischen Weg gehe, einfach vorhandene .PAS und .DFM eines Kind-Frames dupliziere und darin nur die Klassennamen ändere, dann funktioniert alles wie ich es erwarten würde. Ich muss die so erzeugten Frame-Units nur dem Projekt hinzufügen und fertig ist der Laden.

Aber sobald ich dieses Objektablagen-Assistenten-Gedöns verwende, kommt alles durcheinander. Die Vererbung setzt am falschen Punkt an in der Kette, die darüber stellten neuen Units jammern rum dass sie ihre Elternklasse nicht finden können usw.

Ich mochte Frames noch nie. Hier muss ich aber mich in dem Rahmen bewegen der vorgegeben ist und das sind nun mal Frames.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:04 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