Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Objekt vom Typ (AKlasse) erstellen (https://www.delphipraxis.net/155564-objekt-vom-typ-aklasse-erstellen.html)

Rob09 28. Okt 2010 20:58

Delphi-Version: 5

Objekt vom Typ (AKlasse) erstellen
 
Hi!

Ich möchte ganz einfach eine Prozedur schreiben, die ein Objekt erstellt, dessen Typ der Prozedur übergeben wird. Ich stelle mir das bisher folgendermaßen vor:

Delphi-Quellcode:
procedure ErstelleObjekt(AKlasse: TClass);
var
  NeuesObjekt: TControl;
begin
  NeuesObjekt := AKlasse.Create;
end;
Aufruf:

Delphi-Quellcode:
...
begin
  ErstelleObjekt(TLabel);
end;
Funktioniert aber nicht. Fehler ist "Incompatible types: 'TControl' and 'TObject' (in der Zeile "NeuesObjekt := AKlasse.Create;")

Ich weiß übrigens, dass die Objekte, die erstellt werden sollen, alles Typen sind, die von TControl erben.

Ähnliche Posts (z.B. "Wie Klassen (keine Instanz!) als Variable übergegben?") haben mir auch nicht weiter geholfen, steh irgendwie aufm Schlauch... Wäre sehr dankbar für eure Hilfe! (Ignoriert einfach mal, dass die erstellte Instanz momentan ohne Pointer im Nirvana landet)

Gruß,
Robert

EDIT: Muss natürlich auch "AKlasse.Create(Owner);" heißen...

BUG 28. Okt 2010 21:11

AW: Objekt vom Typ (AKlasse) erstellen
 
Delphi-Quellcode:
type TControlClasses = class of TControl;
// ...
procedure ErstelleObjekt(AKlasse: TControlClasses);
var
  NeuesObjekt: TControl;
begin
  NeuesObjekt := AKlasse.Create(nil); // oder eben Owner
end;
So sollte es gehen.

Rob09 28. Okt 2010 21:28

AW: Objekt vom Typ (AKlasse) erstellen
 
Ja, vielen Dank!

Christian Seehase 28. Okt 2010 22:49

AW: Objekt vom Typ (AKlasse) erstellen
 
Moin BUG,

warum nicht gleich so:

Zitat:

Zitat von BUG (Beitrag 1058419)
Delphi-Quellcode:
// ...
procedure ErstelleObjekt(AKlasse: TControl);
var
  NeuesObjekt: TControl;
begin
  NeuesObjekt := AKlasse.Create(nil); // oder eben Owner
end;
So sollte es gehen.


BUG 28. Okt 2010 23:03

AW: Objekt vom Typ (AKlasse) erstellen
 
Er möchte ja explizit eine Klasse übergeben, von der er noch kein Objekt hat.
Deine Version nimmt aber ein Objekt entgegen.

Sollte nicht funktionieren.

Christian Seehase 28. Okt 2010 23:24

AW: Objekt vom Typ (AKlasse) erstellen
 
Moin BUG,

stimmt, da hast Du auch wieder Recht.

sx2008 29. Okt 2010 00:22

AW: Objekt vom Typ (AKlasse) erstellen
 
Zitat:

Zitat von BUG (Beitrag 1058419)
Delphi-Quellcode:
type TControlClasses = class of TControl;

Dieser Datentyp ist übrigens schon in der VCL in Unit Controls deklariert (unter dem Namen TControlClass).

Rob09 29. Okt 2010 19:40

AW: Objekt vom Typ (AKlasse) erstellen
 
Vielen Dank an euch für eure Hilfe! Funktioniert jetzt einwandfrei :thumb:


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