AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Konstruktor bei abgeleitetem TTreeView überschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Konstruktor bei abgeleitetem TTreeView überschreiben

Ein Thema von unerwartet · begonnen am 9. Sep 2004 · letzter Beitrag vom 9. Sep 2004
Antwort Antwort
unerwartet

Registriert seit: 7. Sep 2004
12 Beiträge
 
Delphi 7 Professional
 
#1

Konstruktor bei abgeleitetem TTreeView überschreiben

  Alt 9. Sep 2004, 10:53
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...
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#2

Re: Konstruktor bei abgeleitetem TTreeView überschreiben

  Alt 9. Sep 2004, 12:39
Kannst du den betreffenden Code posten? Danke!
Sebastian
  Mit Zitat antworten Zitat
unerwartet

Registriert seit: 7. Sep 2004
12 Beiträge
 
Delphi 7 Professional
 
#3

Re: Konstruktor bei abgeleitetem TTreeView überschreiben

  Alt 9. Sep 2004, 12:47
So steht der Konstruktor von TTreeView in der OH:
Code:
C++ Syntax:

__fastcall virtual TTreeView(Classes::TComponent* AOwner) : Qcomctrls::TCustomTreeView(AOwner) { }
Ich wollte nun folgenden Konstruktor schreiben:
Delphi-Quellcode:
constructor Create(owner: TComponent): TCustomTreeView;
begin
  inherited Create(owner);
  Self.fRootNode:= Self.Items.Add(nil, 'System');
end;
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?
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#4

Re: Konstruktor bei abgeleitetem TTreeView überschreiben

  Alt 9. Sep 2004, 13:53
also wenn ich in der Delphi-Hilfe gucke, finde ich folgendes:
constructor Create(AOwner: TComponent); also lass mal den rückgabe-parameter weg, der hat da nichts verloren..
Sebastian
  Mit Zitat antworten Zitat
unerwartet

Registriert seit: 7. Sep 2004
12 Beiträge
 
Delphi 7 Professional
 
#5

Re: Konstruktor bei abgeleitetem TTreeView überschreiben

  Alt 9. Sep 2004, 14:19
Zitat von sieppl:
constructor Create(AOwner: TComponent);
Nanu? Wo hast du das gefunden? Ich hab wie gesagt nur das von mir gepostete gesehen. Aber gut. Kompilieren tut es damit ja. Und wenn du das so gefunden hast, wird das ja auch richtig sein.

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:
Feld bla muss vom Typ TTreeView sein, ist aber als TTLTreeView deklariert. Soll die Deklaration korrigiert werden?
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.

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?
  Mit Zitat antworten Zitat
unerwartet

Registriert seit: 7. Sep 2004
12 Beiträge
 
Delphi 7 Professional
 
#6

Re: Konstruktor bei abgeleitetem TTreeView überschreiben

  Alt 9. Sep 2004, 14:41
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?
  Mit Zitat antworten Zitat
unerwartet

Registriert seit: 7. Sep 2004
12 Beiträge
 
Delphi 7 Professional
 
#7

Re: Konstruktor bei abgeleitetem TTreeView überschreiben

  Alt 9. Sep 2004, 15:04
Ich habe jetzt in der OH endlich etwas darüber gefunden, wie man den Konstruktor von visuellen Komponenten überschreibt.

Delphi-Quellcode:
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;
Vermutlich lag es an dem fehlenden override bei mir. Jetzt klappt das schon mal. Vermutlich werden aber bald die nächsten Probleme auftauchen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 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