AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Klasse von TForm ableiten und Constructor um Parameter erweitern
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse von TForm ableiten und Constructor um Parameter erweitern

Ein Thema von JonnyGuitar · begonnen am 20. Okt 2010 · letzter Beitrag vom 21. Okt 2010
Antwort Antwort
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#1

Klasse von TForm ableiten und Constructor um Parameter erweitern

  Alt 20. Okt 2010, 14:29
Delphi-Version: 2007
Hallo,

ich versuche eine Klasse von TForm abzuleiten. Diese Klasse müsste
aber beim Constructor aber mehr Parameter als AOwner haben, in diesem Fall Caption.
Ich habe bis jetzt folgendes, was aber nicht funktioniert:

Delphi-Quellcode:
unit InfoWindow;

interface

uses
  Windows,
  Forms,
  Classes,
  Dialogs;

type
  TInfoWindow = class(TForm)
  private
    FCaption: string;
  public
    constructor Create(AOwner: TComponent; Caption: string); reintroduce; overload; virtual;
    destructor Destroy; override;
  end;

implementation


constructor TInfoWindow.Create(AOwner: TComponent; Caption: string);
begin
  inherited Create(AOwner);
  self.Caption := Caption;
end;

destructor TInfoWindow.Destroy;
begin
  inherited Destroy;
end;

end.
Beim inherited Create(AOwner) kommt die Fehlermeldung "Ressource TInfowindow wurde nicht gefunden"

Kann mir einer weiterhelfen?


Gruss Jonny
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#2

AW: Klasse von TForm ableiten und Constructor um Parameter erweitern

  Alt 20. Okt 2010, 14:33
Die VCL versucht für Alles, welches von TForm abgeleitet ist und was nicht selber TForm ist, die DFM-Resource zu laden.

Du wirst wohl keine solche Resource im Programm eingebunden haben und daher der Fehler.
Irgendwo gibt es schon einige Threads dazu und da wurde auch erklärt, wie man dieses Verhalten abstellen kann, so daß keine DFM mehr versucht wird zu laden.

Edit


[add] Hier der Grund:
Delphi-Quellcode:
constructor TCustomForm.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ...
    InitializeNewForm;
    if (ClassType <> TForm) and not (csDesigning in ComponentState) then
    begin
      Include(FFormState, fsCreating);
      try
        if not InitInheritedComponent(Self, TForm) then
          raise EResNotFound.CreateFmt(SResNotFound, [ClassName]);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Okt 2010 um 14:39 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Klasse von TForm ableiten und Constructor um Parameter erweitern

  Alt 20. Okt 2010, 14:35
Man kann aber gefahrlos einen 2. Konstruktor erzeugen, der weitere Parameter besitzt und der dann den Standardkonstruktor aufruft.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#4

AW: Klasse von TForm ableiten und Constructor um Parameter erweitern

  Alt 20. Okt 2010, 14:45
Man kann aber gefahrlos einen 2. Konstruktor erzeugen, der weitere Parameter besitzt und der dann den Standardkonstruktor aufruft.
Das macht er ja schon, aber der Standardkonstruktor versucht eben die zugehörige DFM zu laden und wenn keine vorhanden ist, dann knallt es eben.

Es sei denn man schaltet dieses Verhalten ab oder man ruft den Standardkonstruktor nicht auf, aber Letzeres ist nicht zu empfehlen, da sonst viele und wichtige Initialisierungen des Formulars fehlen.


PS: Das FCaption: string; ist wohl etwas unnütze/zuviel, dazumal die Form selber schon ein Caption (siehe Self.Caption) besitzt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Okt 2010 um 14:47 Uhr)
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#5

AW: Klasse von TForm ableiten und Constructor um Parameter erweitern

  Alt 20. Okt 2010, 14:55
Also ist das so wie ich es mache vom Grundprinzig richtig und ich versuche jetzt das Laden
der DFM zu unterbinden?
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Klasse von TForm ableiten und Constructor um Parameter erweitern

  Alt 20. Okt 2010, 15:11
Warum das?
Markus Kinzler
  Mit Zitat antworten Zitat
JonnyGuitar

Registriert seit: 4. Jun 2004
233 Beiträge
 
#7

AW: Klasse von TForm ableiten und Constructor um Parameter erweitern

  Alt 21. Okt 2010, 09:50
Das hatte ich jetzt so aus den Antworten geschlossen,
wenn es falsch ist korrigier mich bitte.
the only thing to fear is runnin' out of beer
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Klasse von TForm ableiten und Constructor um Parameter erweitern

  Alt 21. Okt 2010, 10:33
Kannst Du nicht einfach das Formular ganz herkömmlich samt DFM anlegen, erweitern und dann der Objektablage hinzufügen? Oder hab ich mal wieder was falsch verstanden?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 13:55 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