![]() |
Formularresource entfernt ...
Hi,
ich hatte in meinem Projekt ein zusätzliches Formular und nachdem mir aufgefallen ist, dass ich eh alle Objekte zur Laufzeit erstellt und den Objektinspektor nicht brauche, habe ich kurzerhand der dfm Datei des Formulars und die Verlinkung "{$R *.dfm}" auf diese gelöscht. Jedoch scheint das Programm ohne diese nicht zu laufen, da beim Erstellen des Formulars eine Vermisstenmeldung der Resourcendatei kommt. Hab ich irgendwo vergessen die Reourcenverlinkung rauszunehmen oder braucht ein TForm immer eine .pas und eine .dfm Datei? |
Re: Formularresource entfernt ...
Zitat:
|
Re: Formularresource entfernt ...
Wenn ein Nachfahre von TForm verwendet wird, dann wird immer eine gleichnamige Resource benötigt, da diese versucht wird automatisch zu laden.
Aber wenn du die Form manuell direkt von TForm erzeugst, dann wird dieses übersprgangen. Also einfach auch noch deine Form ( TForm.Create ) selber erzeugen. |
Re: Formularresource entfernt ...
IMHO muss ich das Formular dann mit CreateNew (anstatt Create) erstellen.
Frank |
Re: Formularresource entfernt ...
na ja, ich hab ja einen eigenen Konstruktor
Delphi-Quellcode:
type
TFm_Question = class(TForm) protected [...] public // constructor constructor Create(AOwner: TComponent); Virtual; [...] end; implementation // // Constrcutors // constructor TFm_Question.Create(AOwner: TComponent); begin Inherited Create(AOwner); [...] end; |
Re: Formularresource entfernt ...
Dann überschreib halt den Constructor CreateNew:
Delphi-Quellcode:
IMHO funktioniert Create ohne res-Datei nicht.
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); override;
... constructor TFm_Question.CreateNew(AOwner: TComponent; Dummy: Integer = 0); begin inherited CreateNew(AOwner, Dummy); [...] end; Frank |
Re: Formularresource entfernt ...
danke, funktioniert :)
|
Re: Formularresource entfernt ...
Wie gesagt, TForm selber prüft irgendwo etwa so
Delphi-Quellcode:
Also entweder du nimmst TForm und keinen Nachfolger oder du mußt die Prozedur überschreiben, wo die Resource geladen wird.
if Self.ClassType <> TForm then
LoadResource(Self.ClassName) |
Re: Formularresource entfernt ...
ja, aber jetzt funktioniert es ja mit dem CreateNew ... aber hab schon das
![]() |
Re: Formularresource entfernt ...
Zitat:
Delphi-Quellcode:
Sonst ruft man beim Anlegen der Formulare immer TFm_Question.Create auf (statt TFm_Question.CreateNew) und wundert sich, wenn's kracht.
constructor Create(AOwner: TComponent); override;
constructor TFm_Question.Create(AOwner: TComponent); begin inherited CreateNew(AOwner); [...] end; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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-2025 by Thomas Breitkreuz