Hallo,
ich habe soeben den Kommandozeilencompiler aufgerufen, mit den Dateien Project1 (und Unit1), und habe das Phänomen, das ich ohne die
dfm Datei mein Projekt nicht korrekt übersetzt bekomme. Ich erhalte zwar eine .exe Datei, die aber dann nur ein Konsolenfenster zeigt.
Project1 enthält das für Windows
GUI übliche und Unit1 die leere TForm1 Klasse, aber experimentell ohne die Anweisung {*.dfm} Daher auch das seltsame Verhalten.
Ich hätte ein leeres Windows Fenster erwartet. Aber meine Überlegung sagt mir, das die Formularressource ja mindestens die Ausdehnung des Formulars enthalten muss und die Fensterstil Angaben. Die fehlen natürlich, wenn ich die Ressourcendatei weglasse.
Wenn ich aber das Fenster per CreateWindowEx() erzeuge, erwartet diese Funktion nahezu komplett andere Angeben, als die die mindestens in der .dfm Datei stehen, wenn keine andere Komponente auf dem Formular liegt. Was muss ich also machen, um ohne die Anweisung {*.dfm} in Unit1 das leere Fenster zu erhalten und warum muss ich das dann so machen.
Was also läuft innerhalb des Übersetzungsvorgangs mit der Formulardatei ab?
- Wird implizit ein DfmToPas ausgeführt und dann erst übersetzt oder
- wird die .dfm Datei als Ressource in die .exe einkompiliert { ich nehme an, die Ressource wird einkompiliert}
Wenn letzteres, lässt sich das ändern?
Wie also erreiche ich, das das leere Fenster erzeugt wird? Denn da die Funktion CreateWindowEx() ja andere Angaben fordert, als die in meinem Konstrukt fehlenden, muss es ja schon einen implziten Aufruf dieser Funktion innerhalb TForm geben. Wie also kann ich die fehlenden Angeban mit Laufzeitquelltext ergänzen.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.