![]() |
Vererbung von TDataSet auf einem Frame
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 |
AW: Vererbung von TDataSet auf einem Frame
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. |
AW: Vererbung von TDataSet auf einem Frame
Zitat:
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. |
AW: Vererbung von TDataSet auf einem Frame
Zitat:
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. |
AW: Vererbung von TDataSet auf einem Frame
Das kann ich leider nicht beeinflussen, das Projektkonzept sieht Frames vor.
|
AW: Vererbung von TDataSet auf einem Frame
Wenn die Frames aus der Objektablage kommen, muss man aufpassen, dass man beim Einfügen auch "Vererben" ausgewählt hat und nicht "Verwenden".
|
AW: Vererbung von TDataSet auf einem Frame
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 ;-) |
AW: Vererbung von TDataSet auf einem Frame
Zitat:
Ich mache da erstmal einen Haken dran, weil zu verfrickelt in der Hierarchie. Da müssen erstmal die Erfinder ran. |
AW: Vererbung von TDataSet auf einem Frame
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. |
AW: Vererbung von TDataSet auf einem Frame
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. |
AW: Vererbung von TDataSet auf einem Frame
Ich benutzte nie die Objektablage, Frames nur auf dem oben beschriebenen Weg.
Ein Duplizieren der Frame-Units ist nicht erforderlich (führt allerdingsregelmäßig - eher fast immer - zu Problemen), da dadurch ja letztlich ein neues Frame, also eine neue Klasse entsteht. Das ist nicht der Sinn der Sache. Für mich sind Frames nix weiter als etwas umfangreichere visuelle Komponenten (ggfls. mit ein bisserl allgemeingültiger Logik), die ich bei Bedarf auf's Fomular pappe. |
AW: Vererbung von TDataSet auf einem Frame
Zitat:
|
AW: Vererbung von TDataSet auf einem Frame
Meiner Meinung nach gehört ein TDataset in ein Datamodul und nicht in ein TFrame oder ein TForm auch wenn das m... funktioniert.
Gruß K-H |
AW: Vererbung von TDataSet auf einem Frame
Zitat:
|
AW: Vererbung von TDataSet auf einem Frame
Zitat:
Zitat:
|
AW: Vererbung von TDataSet auf einem Frame
[nur meine Meinung]
Zitat:
Nachtrag: Ich weiß, daß ist leicht gesagt. :? [/nur meine Meinung] |
AW: Vererbung von TDataSet auf einem Frame
Vielleicht lesen sie ja hier mit. :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 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