Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komponente ohne vererbung (https://www.delphipraxis.net/72601-komponente-ohne-vererbung.html)

Christian18 3. Jul 2006 18:15


Komponente ohne vererbung
 
Hallo,

ich will eine Komponente schreiben, die von keiner anderen Klasse erbt. Wie kann ich das machen??? Warum muss eine neue Komponente immer von einer anderen Klasse erben???

PS: Vielen Dank schon im vorraus, für die vielen antworten! :lol:



MFG Christian18

mkinzler 3. Jul 2006 18:23

Re: Komponente ohne vererbung
 
Schau dir mal an wieviel Code in den TComponent + Vorgängerklassen steckt, hast du Lust diesen Code in jeder Komponente zu haben?
BTW. kannst du, bei der Verwendung von Delphiklassen (class) keine Klassen ohne Superklasse erzeugen, da diese automatisch von TObject erbt.

Waldteufel 3. Jul 2006 19:12

Re: Komponente ohne vererbung
 
Eine Klasse ohne Vererbung? Bitteschön:

Delphi-Quellcode:
type
  TTest = object
    // ...
  end;
Das ist sozusagen ein Record mit Methoden. Erbt von überhaupt rein gar nix und hat deshalb auch überhaupt rein gar nix (Kein Konstruktor / Destruktor). Viel Spass beim Neuerfinden der modernen Delphi-Klassen und der VCL ;-)

(Anmerkung: Weiß nicht bis welche Version das unterstützt wird, unter D7 gings noch...)

Der_Unwissende 3. Jul 2006 19:18

Re: Komponente ohne vererbung
 
Zitat:

Zitat von Christian18
ich will eine Komponente schreiben, die von keiner anderen Klasse erbt.

Warum?

Zitat:

Zitat von Christian18
Warum muss eine neue Komponente immer von einer anderen Klasse erben???

Ok, ist gar kein Problem, Komponenten erben auch nichts. Schau dir einfach mal an, was die allgemeine Definition einer Komponente ist, dürfte ziemlich abstrakt sein. Da steckt kein Wort von Klasse drin.

Wenn du eine Klasse schreiben möchtest, die von keiner anderen Klasse erbt, stellt sich für mich die Frage warum du so etwas tun möchtest? Es macht keinen Sinn.
Um deine Frage (interpretier sie einfach mal so) zu beantworten, warum jede Klasse einen Vorfahren haben muss (sehen wir von TObject ab), der Grund ist einfach, schreib mal deinen eigenen Konstruktor und Destruktor und sorge dafür, dass die immer aufgerufen werden. Wenn mir dann noch sagst, warum du dann mit Klassen arbeitest...
Es hat einfach sehr viele Vorteile von Vorgängern zu erben, wenn man die nicht versteht, braucht man keine Klassen, aber keine Vorfahren macht imho null Sinn.

Gruß Der Unwissende

peteress 3. Jul 2006 19:38

Re: Komponente ohne vererbung
 
Zitat:

Zitat von Christian18
Hallo,

ich will eine Komponente schreiben, die von keiner anderen Klasse erbt.

Das geht schon per Definitionem nicht. Eine Klasse wird genau dann, also dann und nur dann als Komponente bezeichnet, wenn sie direkt oder indirekt von TComponent erbt. Erbt sie nicht von da, ist sie keine Komponente, und dann kannst du Code schreiben bis du schwarz wirst, sie wird nie wie eine Komponente funktionieren, weil andere Klassen, die eine Komponente erwaren (die IDE, der Objektinspektor, die Form), dann mit deiner Klasse nicht umgehen können. Das gilt auch dann, wenn du deiner Klasse alle Fähigkeiten von TComponent fein säuberlich wieder bei bringst.



Zitat:

Zitat von Christian18
Wie kann ich das machen??? Warum muss eine neue Komponente immer von einer anderen Klasse erben???

Gar nicht. Die Vererbung sichert einer anderen Klasse zu, dass deine neue Klasse bestimmte Eigenschaften hat, und wie diese angesprochen werden. Erbt sie nicht von da, verweigert der Compiler zu Recht die Zusammenarbeit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 Uhr.

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