Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Vererbung auf Frames (https://www.delphipraxis.net/125221-problem-mit-vererbung-auf-frames.html)

Samufi 2. Dez 2008 18:58


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

mkinzler 2. Dez 2008 19:22

Re: Problem mit Vererbung auf Frames
 
Zeig mal etwas Code

Samufi 2. Dez 2008 19:42

Re: Problem mit Vererbung auf Frames
 
Das ist der Code des erbenden Frames:
Delphi-Quellcode:
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.
Und das der des vererbenden Frames:
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.

mkinzler 2. Dez 2008 19:55

Re: Problem mit Vererbung auf Frames
 
{$R *.dfm}

Samufi 2. Dez 2008 19:59

Re: Problem mit Vererbung auf Frames
 
Stört das?

mkinzler 2. Dez 2008 20:01

Re: Problem mit Vererbung auf Frames
 
Ja, wenn die Datei, die eingebunden werden soll nicht existiert

Samufi 2. Dez 2008 20:08

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?

mkinzler 2. Dez 2008 20:14

Re: Problem mit Vererbung auf Frames
 
Wenn frames.dfm existiert dann kann der Include natürlich bleiben

Samufi 2. Dez 2008 20:21

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...

Bernhard Geyer 2. Dez 2008 20:58

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:
HauptUnit.form1.xxx
zeugen von schlechten Programmdesign. Sorge für eine Lose kopplung zwischen deinen Units/Formularen indem du solche Zugriffe z.B. per Callbacks/Events realisierst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 Uhr.
Seite 1 von 2  1 2      

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