Wie kann ich die benutzen oder beheben Probleme mit visual form inheritance in Delphi?
Arbeite ich an einem Projekt in Delphi 7, wo ich wollte, um Formen zu haben, Erben die Komponenten von anderen Formen. Ich war in der Lage, diese arbeiten, kam aber über folgende Probleme (und werde ich die Lösungen poste, um hoffentlich anderen zu helfen in der Zukunft):
- In der .pas-Datei von einer form, die ich ändern würde die form der Vererbung von einer anderen form, aber es würde nicht die Komponenten aus der Vorgänger-Formular.
- Für bestimmte Nachkomme Formen, würde ich die folgende Fehlermeldung beim öffnen der form zur design-Zeit: "Fehler beim erstellen der form: Vorfahr für 'TAncestorForm' nicht gefunden." Ich würde zuerst manuell öffnen Sie die Vorfahr-Formular, und dann konnte ich öffnen Sie die untergeordneten form.
InformationsquelleAutor Liron Yahdav | 2008-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, für diejenigen, die nicht wissen, wie Sie Erben die form visuell erstellen Sie die Vorfahr-Formular wie gewohnt. Dann gehen Sie auf Datei > Neu > Anderen. Wählen Sie die Registerkarte mit dem Namen des aktuellen Projekts, und wählen Sie die form, die Sie wollen, um zu Erben. Wenn Sie wollen, um zu Erben von einer form, die nicht Teil des aktuellen Projekts, öffnen Sie das Formular, klicken Sie rechts und wählen Sie Add to Repository. Dann werden Sie in der Lage, gehen Sie auf Datei > Neu - > Sonstige, und wählen Sie das Formular aus der entsprechenden Registerkarte.
Da, ich stieß auf Probleme, da einige der untergeordneten Formen wurden bereits erstellt, so konnte ich nicht Folgen Sie den oben beschriebenen Vorgang. Auch ich habe einige änderungen an Formen aus der standard-code Delphi erstellt. Ich war in der Lage, alle Probleme zu lösen mit visual form inheritance mithilfe der folgenden Richtlinien:
type TMyForm = class(TAncestorForm)
inherited
stattobject
, z.B.:inherited MyForm: TMyForm
var AncestorForm: TAncestorForm;
uses
Abschnitt .dpr Datei des Projektes müssen die gleiche Globale variable als Kommentar, nachdem das Gerät die Datei einen Namen, z.B.:unAncestor in 'unAncestor.pas' {AncestorForm}
Hinweise/Tipps:
Die Globale variable ist nur erforderlich, wenn Sie lassen Sie Delphi "Auto-create" - Formular (Sie können diese Einstellung in den Projekt-Optionen-dialog).
Sie Jungs sind richtig. Ich nur doppelt überprüft. Ich werde den Beitrag editieren, danke.
Siehe auch diese beiden blog-Beiträge, die erklären, Rahmen und DataModule Vererbung: wiert.wordpress.com/2009/07/22/... und wiert.wordpress.com/2009/08/20/... Diese Artikel enthalten Bilder von guten und schlechten Situationen.
Für die C++Builder-Menschen können Sie so ziemlich die gleichen Anweisungen. Die einzige Einschränkung die ich habe ist, dass TAncestorForm nicht in einem eigenen Namensraum (D. H. Sie dürfen sich im globalen namespace). Zumindest war das meine Erkenntnis.
InformationsquelleAutor Liron Yahdav
Der DPR-scheint ein wenig komplizierter als das. In meinem Fall habe ich einen Vorfahren abgeleitet von TFrame. Ich habe dann aus mehreren frames aus TAncestorFrame. Mein DPR die uses-Klausel sah dann wie:
Die DPROJ-Datei sollte wie folgt Aussehen:
Abgeleitet Frames Aussehen sollte:
Abgeleitet Und Frames .DFM-Dateien sollten sagen:
InformationsquelleAutor Unknown Coder