![]() |
Konstruktor bei abgeleitetem TTreeView überschreiben
Hallo,
ich habe eine Klasse von TTreeView abgeleitet. Nun möchte ich ein paar Anweisungen bereits bei der Erzeugung dieser Klasse ausführen lassen. Also wollte ich dafür den Konstruktor überschreiben. Nur will mir das nicht so recht gelingen. Was mich bereits wunderte, in der OH von Delphi wird der Konstruktor von TTreeView nur in C++-Syntax angegeben. Er erwartet ein TComponent als Parameter und gibt ein TCustomTreeView zurück. Wenn ich allerdings versuche einen eben solchen Konstruktor anzulegen, beschwert sich Delphi dass eine Prozedur keinen Ergebnistyp haben kann. Was mache ich an dieser Stelle falsch? Entschuldigt bitte, wenn ich mich hier ein bisschen anstelle, ich bin noch nicht so bewandert in Delphi... |
Re: Konstruktor bei abgeleitetem TTreeView überschreiben
Kannst du den betreffenden Code posten? Danke!
|
Re: Konstruktor bei abgeleitetem TTreeView überschreiben
So steht der Konstruktor von TTreeView in der OH:
Code:
Ich wollte nun folgenden Konstruktor schreiben:
C++ Syntax:
__fastcall virtual TTreeView(Classes::TComponent* AOwner) : Qcomctrls::TCustomTreeView(AOwner) { }
Delphi-Quellcode:
Wie der Konstruktor nun Am Ende aussieht, ist mir ja recht egal. Mir würde auch schon ein Konstruktor ohne Rückgabewert und ohne Parameter reichen. Nur würde er dann auch aufgerufen, wenn ich die Klasse intanziere?
constructor Create(owner: TComponent): TCustomTreeView;
begin inherited Create(owner); Self.fRootNode:= Self.Items.Add(nil, 'System'); end; |
Re: Konstruktor bei abgeleitetem TTreeView überschreiben
also wenn ich in der Delphi-Hilfe gucke, finde ich folgendes:
Delphi-Quellcode:
also lass mal den rückgabe-parameter weg, der hat da nichts verloren.. :wink:
constructor Create(AOwner: TComponent);
|
Re: Konstruktor bei abgeleitetem TTreeView überschreiben
Zitat:
Nun hab ich nur noch folgendes Problem, dass ich nicht weiß, wie ich meinen Tree jetzt statt dem normalen TTreeView verwende (hier soll in einer bestehenden Anwendung der TreeView durch meinen ersetzt werden). Ich wollte einfach per Hand den Typ im Interface-Abschnitt abändern. Wenn ich dann allerdings kompilieren will, sagt Delphi:
Code:
Was muss denn da noch angepasst werden? Ich wollte den Tree eigentlich nicht erst zur Laufzeit erzeugen, sondern genauso wie es mit den Standardkomponenten von Delphi passiert.
Feld bla muss vom Typ TTreeView sein, ist aber als TTLTreeView deklariert. Soll die Deklaration korrigiert werden?
Wenn ich bei dieser Abfrage auf Nein klicke, kompiliert das Ganze zwar, allerdings macht mir diese Abfrage schon etwas Sorgen. Wie werde ich sie los? Vor allem wie werde ich sie auf die 'richtige' Art los? ;-) |
Re: Konstruktor bei abgeleitetem TTreeView überschreiben
Hab die Lösung dafür jetzt selbst gefunden. Habe sie als Komponente in Delphi registriert und kann sie nun benutzen, wie das originale TTreeView.
Aber wie soll es anders sein, ich habe neue Probleme :-) Denn der Konstruktor scheint ignoriert zu werden. Andere von mir zusätzlich angelegte Methoden sind verfügbar, werden auch korrekt ausgeführt, der Code im Konstruktor aber offenbar nicht. Was mache ich also noch immer falsch? |
Re: Konstruktor bei abgeleitetem TTreeView überschreiben
Ich habe jetzt in der OH endlich etwas darüber gefunden, wie man den Konstruktor von visuellen Komponenten überschreibt.
Delphi-Quellcode:
Vermutlich lag es an dem fehlenden override bei mir. Jetzt klappt das schon mal. Vermutlich werden aber bald die nächsten Probleme auftauchen. ;-)
type
**TWrapMemo = class(TMemo) public { Konstruktoren sind immer als public deklariert } ****constructor Create(AOwner: TComponent); override; { Diese Syntax ist immer gleich } *end; ... constructor TWrapMemo.Create(AOwner: TComponent);*****{ Dies kommt nach der Implementierung } begin **inherited Create(AOwner);***************************{ Diesen Schritt IMMER zuerst! } **WordWrap := False;**********************************{ Neuen Wert setzen } *end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 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