Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrfachvererbung in Delphi --> Wie umgehen??? (https://www.delphipraxis.net/71343-mehrfachvererbung-delphi-wie-umgehen.html)

Christian18 13. Jun 2006 15:38


Mehrfachvererbung in Delphi --> Wie umgehen???
 
Hallo,

ich habe ein kleines Problem mit Delphi und der Mehrfachvererbung. Ich habe ebend in der Delphi Hilfe gelsen, dass Delphi leider keine Mehrfachvererbung unterstützt. Ich habe mit aber eine Klasse geschrieben, die ich von TForm und TFrame ableiten muss. Wie kann ich das jetzt machen???

MFG Christian18

SirThornberry 13. Jun 2006 15:41

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
warum musst du von beiden ableiten? Was willst du also bezwecken. Wie du selbst schon festgestellt hast ist Mehrfachvererbung mit Delphi nicht möglich. Daher müssen wir wissen was du erreichen willst um dir einen Umweg nennen zu können.

3_of_8 13. Jun 2006 15:42

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
Hmm, also wenn du nur die Funktionalität brauchst, könntest du es mit Selektion lösen.

Ansonsten: Nicht möglich.

mkinzler 13. Jun 2006 15:45

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
Delphi erlaubt nur die (Mehrfach-)Vererbung von Interfaces. Eine Möglichkeit wäre die Kombination von Interface und Implementierung durch ein Memberobjekt. Aber sinnvoller wäre es das Vererbungsshema anzupassen.

Christian18 13. Jun 2006 15:47

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
Also,

wenn ich in Delphi ein neues Fenster haben möchte, dann erstelle ich mir ein neues Formular. Automatisch wird dann auch eine neue Klasse erstellt. Diese Klasse wird abgeleitet von TForm. Statt TForm schreibe ich dann TProgramm hin. Das ist die Klasse die ich selber geschrieben habe. Die Klasse TProgramm wird von TForm abgeleitet. Das funktionierte alles super. Jetzt muss ich aber auch noch ein Frame in meinem Projekt einbinden. Dieses Frame benötigt Proceduren und Functionen die ich in TProgramm deklariert habe. Da ich bei einer Klasse die von TFrame abgeleitet ist, nicht einfach durch TProgramm ersetzen kann, bräuche ich die Mehrfachvererbung. Dann würde ich nämlich meine Klasse TProgramm von TForm und TFrame ableiten. Da dies nicht funktioniert, habe ich jetzt ein Problem. Wie kann ich dieses lösen???

MFG Christian18

mkinzler 13. Jun 2006 15:49

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
Warum setzt du dann nicht an einer höheren Stelle an?

3_of_8 13. Jun 2006 15:54

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
Instantiiere dir deinen Frame und greife einfach von der Form auf drauf zu.
Oder deklariere dir in ner anderen Unit deine von TFrame abgeleitete Klasse, in deinem TProgramm erstellst du ein Feld Frame, das deine von TFrame abgeleitete Klasse enthält, und bei OnCreate instantiierst du den Frame.

Christian18 13. Jun 2006 15:58

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
Hallo,

ja das könnte ich natürlich machen. Dann würde ich eine neue Klasse deklarieren. und die Methode die ich für die Frames brauche, würde ich dann in die neue Klasse packen. Das ist ja alles wunder schön, aber leider habe ich dann redundanzen die ich eigentlich vermeiden will. Wenn es sich zum beispiel um eine Mthoder getVersion handelt. Dann müsste ich die Version an zwei stellen ändern. Das will ich ja gerade nicht.

MFG Christian18

mkinzler 13. Jun 2006 16:03

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
Zitat:

Das ist ja alles wunder schön, aber leider habe ich dann redundanzen die ich eigentlich vermeiden will.
Warum den das die Implementierung liegt doch in TProgramm

TProgramm <- TFrame
TMyForm <- TForm

TmyForm.frame: TProgramm;

oder du setzt wie gesagr höher im Vererbungsschema an, so daß wieder beide (TMyFrame/TmyForm) von TProgramm erben.

Christian18 13. Jun 2006 16:06

Re: Mehrfachvererbung in Delphi --> Wie umgehen???
 
wie heißt den die Klasse im Vererbungsschema??? Also ich meine die eine Hierarchieebene höher ist??? Ist das TWinControl??? Meinst du diese???


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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