![]() |
Problem mit Vererbung auf Frames
Hallo,
ich erstelle einen Frame TFrame1, deklariere und implementiere eine Funktion darin. Dann erstelle ich einen zweiten, weise ihm einen Platz in der Hauptunit und ordne ihn der Klasse Tframe1 zu. Der zweite erbt nun die Funktion des ersten, ist auf der Hauptunit zu sehen, alles funktioniert. Wenn ich jetzt aber mein Projekt schließe und später wieder öffne bekomme ich die Fehlermeldung "Fehler beim Lesen von Frame2.ParentColor: Eigenschaft existiert nicht. [...]". Diesen Fehler kann ich ignorieren, der Frame wird aber von der HauptUnit entfernt. Wenn ich jetzt den Frame wieder einbinden will, kommt die Fehlermeldung "Formular oder Datenmodul kann nicht in ein anderes Formular oder Datenmodul eingefügt werden.". Wenn ich jetzt beispielsweise ParentColor auf "false" setze kommt dieselbe Fehlermeldung. Wisst ihr, wo das Problem liegt? Wenn ja, wisst ihr auch, wie ich den Frame, bei dem die Probleme auftraten wieder nutzbar machen kann? Danke für alles Überlegen, treuergebenst Samufi |
Re: Problem mit Vererbung auf Frames
Zeig mal etwas Code
|
Re: Problem mit Vererbung auf Frames
Das ist der Code des erbenden Frames:
Delphi-Quellcode:
Und das der des vererbenden Frames:
unit gehezu;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, frames; type TFrame2 = class(TFrame3) Ausgeben: TButton; procedure AusgebenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; implementation {$R *.dfm} procedure TFrame2.AusgebenClick(Sender: TObject); begin Ausgabe('5','6'); end; end.
Delphi-Quellcode:
unit frames;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TFrame3 = class(TFrame) private { Private-Deklarationen } public { Public-Deklarationen } function Ausgabe(Inhalt,Code:String):String; end; implementation uses HauptUnit; function Tframe3.Ausgabe(Inhalt,Code:String):String; var Sender:TObject; begin HauptUnit.form1.Inhalt.Text:=Inhalt; HauptUnit.form1.Code.Text:=Inhalt; HauptUnit.Form1.Frame11.FindekomponenteClick(Sender); {$R *.dfm} end; end. |
Re: Problem mit Vererbung auf Frames
{$R *.dfm}
|
Re: Problem mit Vererbung auf Frames
Stört das?
|
Re: Problem mit Vererbung auf Frames
Ja, wenn die Datei, die eingebunden werden soll nicht existiert
|
Re: Problem mit Vererbung auf Frames
Ich dachte immer, das wäre eine Art Kommentar... :oops: Aber die Datei, die eingebunden ist besteht doch?! :gruebel: Warum muss das dann weg und in welcher Unit muss es weg?
|
Re: Problem mit Vererbung auf Frames
Wenn frames.dfm existiert dann kann der Include natürlich bleiben
|
Re: Problem mit Vererbung auf Frames
Frames.dfm existiert, ich habe es auch schon mit löschen der Zeile probiert, es hat aber nicht geholfen...
|
Re: Problem mit Vererbung auf Frames
AFAIK geht es nur das das letzte Glied der Vererbungskette eine Formularressource einbindet. In allen Basisklassen müssen die dort vorhandenen Controls per Code erzeugt werden.
Nebenbei gemerkt: Konstrukte der Art:
Delphi-Quellcode:
zeugen von schlechten Programmdesign. Sorge für eine Lose kopplung zwischen deinen Units/Formularen indem du solche Zugriffe z.B. per Callbacks/Events realisierst.
HauptUnit.form1.xxx
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 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 by Thomas Breitkreuz