![]() |
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 |
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.
|
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. |
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.
|
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 |
Re: Mehrfachvererbung in Delphi --> Wie umgehen???
Warum setzt du dann nicht an einer höheren Stelle an?
|
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. |
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 |
Re: Mehrfachvererbung in Delphi --> Wie umgehen???
Zitat:
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. |
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 12:26 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