Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ressource nicht gefunden (https://www.delphipraxis.net/134553-ressource-nicht-gefunden.html)

xZise 24. Mai 2009 19:30


Ressource nicht gefunden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo ihr!

Ich habe ein Problem mit einer dynamisch erstellten Form. Und zwar meldet er mir immer, sobald ich inherited im Create aufrufe, dass die Ressource nicht gefunden werden konnte:
Zitat:

---------------------------
Dialogtest
---------------------------
Ressource TMessageBox nicht gefunden.
---------------------------
OK
---------------------------
Nun woran liegt dies? Und wie behebe ich das Problem?

MfG
xZise

mkinzler 24. Mai 2009 19:39

Re: Ressource nicht gefunden
 
Der Konstruktor der TForm-Klasse versucht die persistenten Werte aus der Ressource zu laden

xZise 24. Mai 2009 20:27

Re: Ressource nicht gefunden
 
Naja, aber als ich fürher das mit "TForm.Create" etc. gemacht hatte, ging das... Was müsste ich also ändern? Besonders welche Ressource braucht er da?

Also ich hatte vorher keine Klasse und das alles in der Methode erledigt. Dies sah dann ungefähr so aus:
Delphi-Quellcode:
var
  frm : TForm;
  btn : TButton;
  ...
begin
  frm := TForm.Create(AOwner);
  btn := TButton.Create;
  try
    frm....;
    btn.Parent := frm;
    btn....;
    Result := frm.ShowModal;
  finally
    frm.Free;
  end;
end;
MfG
xZise

xZise 25. Mai 2009 21:00

Re: Ressource nicht gefunden
 
Liste der Anhänge anzeigen (Anzahl: 1)
So ich bin es wieder!

Also im Anhang meine "verbesserte" Variante die auch läuft, obwohl sie so gut wie identisch ist (statt die Klasse als Form einfach eine extra Form).

MfG
xZise

xZise 26. Mai 2009 20:20

Re: Ressource nicht gefunden
 
Hat den keiner eine Erklärung dafür, warum es funktioniert ohne Ableitung von TForm?

MfG
xZise

Bernhard Geyer 26. Mai 2009 21:16

Re: Ressource nicht gefunden
 
Zitat:

Zitat von xZise
Hat den keiner eine Erklärung dafür, warum es funktioniert ohne Ableitung von TForm?

Ich denke das "Problem" liegt im Konstruktor von TForm begraben

Delphi-Quellcode:
constructor TCustomForm.Create(AOwner: TComponent);
begin
  ...
    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]);
      finally
        Exclude(FFormState, fsCreating);
      end;
  ...
end;
Wenn Klassentyp <> TForm versuche Ressource (dfm in Exe) in InitInheritedComponent zu laden.

xZise 26. Mai 2009 23:08

Re: Ressource nicht gefunden
 
Aachso das wollte Markus wahrscheinlich sagen?

Naja wie kann ich das verhindern? Nur darüber nie ein eigene TForm Klasse zu benutzen?

MfG
xZise

xZise 31. Mai 2009 17:46

Re: Ressource nicht gefunden
 
*Push*

Apollonius 31. Mai 2009 17:59

Re: Ressource nicht gefunden
 
Genau dafür ist CreateNew da.

xZise 31. Mai 2009 20:07

Re: Ressource nicht gefunden
 
Ah danke!

Damit funktioniert es nun wunderbar (naja in der Unit ist noch ein Bug, aber ansonsten ist alles in Ordnung!)

MfG
xZise


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