AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formularresource entfernt ...

Ein Thema von Shubit · begonnen am 21. Feb 2010 · letzter Beitrag vom 23. Feb 2010
Antwort Antwort
Shubit

Registriert seit: 17. Mai 2009
64 Beiträge
 
#1

Formularresource entfernt ...

  Alt 21. Feb 2010, 10:55
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: Formularresource entfernt ...

  Alt 21. Feb 2010, 11:02
Zitat von Shubit:
oder braucht ein TForm immer eine .pas und eine .dfm Datei?
Nach meiner Kenntnis, ja.
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
Benutzerbild von himitsu
himitsu
Online

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

Re: Formularresource entfernt ...

  Alt 21. Feb 2010, 11:10
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Formularresource entfernt ...

  Alt 21. Feb 2010, 11:19
IMHO muss ich das Formular dann mit CreateNew (anstatt Create) erstellen.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Shubit

Registriert seit: 17. Mai 2009
64 Beiträge
 
#5

Re: Formularresource entfernt ...

  Alt 21. Feb 2010, 11:23
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;
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Formularresource entfernt ...

  Alt 21. Feb 2010, 11:37
Dann überschreib halt den Constructor CreateNew:

Delphi-Quellcode:
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); override;
...
constructor TFm_Question.CreateNew(AOwner: TComponent; Dummy: Integer = 0);
begin
  inherited CreateNew(AOwner, Dummy);
  [...]
end;
IMHO funktioniert Create ohne res-Datei nicht.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Shubit

Registriert seit: 17. Mai 2009
64 Beiträge
 
#7

Re: Formularresource entfernt ...

  Alt 21. Feb 2010, 11:48
danke, funktioniert
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Formularresource entfernt ...

  Alt 21. Feb 2010, 11:56
Wie gesagt, TForm selber prüft irgendwo etwa so
Delphi-Quellcode:
if Self.ClassType <> TForm then
  LoadResource(Self.ClassName)
Also entweder du nimmst TForm und keinen Nachfolger oder du mußt die Prozedur überschreiben, wo die Resource geladen wird.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Shubit

Registriert seit: 17. Mai 2009
64 Beiträge
 
#9

Re: Formularresource entfernt ...

  Alt 21. Feb 2010, 12:12
ja, aber jetzt funktioniert es ja mit dem CreateNew ... aber hab schon das nächste Problem
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Formularresource entfernt ...

  Alt 23. Feb 2010, 11:54
Zitat von dataspider:
Dann überschreib halt den Constructor CreateNew:

Delphi-Quellcode:
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); override;
...
constructor TFm_Question.CreateNew(AOwner: TComponent; Dummy: Integer = 0);
begin
  inherited CreateNew(AOwner, Dummy);
  [...]
end;
Ich würde Create überschreiben, aber inherited CreateNew aufrufen:
Delphi-Quellcode:
    constructor Create(AOwner: TComponent); override;

constructor TFm_Question.Create(AOwner: TComponent);
begin
  inherited CreateNew(AOwner);
  [...]
end;
Sonst ruft man beim Anlegen der Formulare immer TFm_Question.Create auf (statt TFm_Question.CreateNew) und wundert sich, wenn's kracht.

Zitat von dataspider:
IMHO funktioniert Create ohne res-Datei nicht.
Korrekt. (Außer, wenn man direkt TForm.Create aufruft.)
Uli Gerhardt
  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:17 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