Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Resource not found bei neuer Klasse (https://www.delphipraxis.net/141571-resource-not-found-bei-neuer-klasse.html)

stiftII 11. Okt 2009 17:59


Resource not found bei neuer Klasse
 
Hallo,
Mal wieder eine Anfängerfrage von mir, nur über die Hilfe und google hab ich nichts brauchbares gefunden :(.

Wenn ich folgende Klasse durch Button7.Click erstellen möchte, erhalte ich jedesmal die Fehlermeldung "...Resource PmWindow not found...";

Der Fehler kommt während der Laufzeit, also kompilieren ist kein Problem.

Delphi-Quellcode:
type

PmWindow = class(TForm)
  SendPm: TButton;
  procedure CreateWindow2(Sender: TObject);
  end;

 TForm1 = class(TForm)

...

var
  Form1: TForm1;
  PmWin: PmWindow;
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
begin
  PmWin := PmWindow.Create(form1);
  PmWin.ShowModal;
end;
Kann ich die einfach so auf form1 erstellen ?. Was mache ich hier falsch ?

~stift

himitsu 11. Okt 2009 18:36

Re: Resource not found bei neuer Klasse
 
Hast du auch die Resourcen deiner Forum eingebunden?

Delphi-Quellcode:
{$R *.dfm}
bindet ja eine Fensterresource [unitname].dfm in die Unit ein.

Diese Resource-Datei enthält aber nur eine Resource für ein Forumular (bei dir vermutlich die von TForm1, da diese wohl auch von Delphi automatisch angelegt wurde)

Wenn du jetzt ein weiteres Forumular einfügen willst, dann mußt du natürlich für dieses Formular auch die zugehörige Resource einbeinden

z.B.: (oder wie du diese Datei denn bei dir so genannt hast)
Delphi-Quellcode:
{$R PmWindow.dfm}
In dieser Datei ist dann der Aufbau deines Formulars enthalten (so wie man ihn z.B. im Formulardesigner festgelegt hat)

Allerdings hast du nun 2 Formulare in einer Unit, welches zwar funktioniert, aber hier hat dann der Formulardesigner einige Problemchen.
Besser wird es sein, wenn du dein Formular also in eine eigenständige Unit auslagerst.

stiftII 11. Okt 2009 19:11

Re: Resource not found bei neuer Klasse
 
Vielen Dank.

Muss es denn eine dfm datei sein, die den Style/Aufbau festlegt.
Ist es nicht auch möglich den Style der Form direkt im Quelltext festzulegen ?.

~stift

himitsu 11. Okt 2009 19:49

Re: Resource not found bei neuer Klasse
 
Ja, wenn du aif diese Weise über die VCL eine Form erstellen willst, dann ist dieses unbedingt nutendig.


Delphi-Quellcode:
type

PmWindow = class(TForm)
  SendPm: TButton;
  procedure CreateWindow2(Sender: TObject);
  end;
dieser Code stellt in diesem Famm nur eine Schnittstelle zu dem über .Create+LoadFromResource erstellen Formular zur Verfügung.

In der Resource steht halt der Aufbau drinnen.

Wenn du ein Formular unbedingt auf diese Weise erstellen willst, dann wirst du wohl oder übel den Constructor von TForm/TCustomForm überschreiben müssen, denn darin wir die Resource geladen, welche du ja nicht hast, bzw. haben willst.

Und dann wirst du natürlich dein Edit auch noch selber erstellen und der "Variable" SendPm zuweisen müssen.

dataspider 12. Okt 2009 07:14

Re: Resource not found bei neuer Klasse
 
Hi,

oder einfach statt Create CreateNew verwenden:

Delphi-Quellcode:
PmWin := PmWindow.CreateNew(form1);
[EDIT]Und wie ja bereits angedroht, alle Controls selbst im Code erzeugen...[/EDIT]
Frank


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