![]() |
Fehlermeldung 'Form kann nicht erstellt werden'
Also hier kurz eine Erklärung zu meiner Projektarchitektur:
also ich hab die MainForm für mein Projekt also eine Art Loader, der die Kommunikation zu mehreren Perepherie-Geräten aufbaut und kontrolliert. Wenn dies geschehen ist, soll erscheint eine Form2 als fsMDIForm (Bedienoberfläche für mein Programm, Form1 läuft unsichtbar im Hintergrund weiter und hat "administrative Aufgaben"). Bis hierher lief das Projekt jetzt nach lösen des Problems "Wie schliesse ich die Form1 mit der Form2" ohne Probleme. Nun wollte ich mehrere Formen in die Form2 als fsMDIChild integrieren, bekomme aber nach erstellen der Unit mit Form die Fehlermeldung: Zitat:
Hoffe mir kann hier jemand einen Tip geben. Vielen Dank BAMatze |
Re: Fehlermeldung 'Form kann nicht erstellt werden'
Der Fehler rührt ganz einfach da her, dass du die Formulare automatisch erstellen lässt, oder? Und wenn dein MDI Child dann autocreatet wird vor der Anzeige des ersten Formulars, dann ist deine MDIForm in der Tat noch nicht aktiv. ;-)
Also erzeuge zumindest das MDIChild nicht automatisch, das kannst du z.B. in den Projektoptionen unter Anwendung einstellen oder direkt im Projektquelltext ändern. Zitat:
// EDIT: Ich hab kurz in die Hilfe geschaut: Zitat:
Und vermutlich kannst du dir dann die Verbiegungen aus dem anderen Post auch sparen... |
Re: Fehlermeldung 'Form kann nicht erstellt werden'
hmm das hört sich natürlich nicht sehr gut für mein Projekt an. Bedanke mich aber erstmal bei dir wiedermal für die schnelle Antwort. Werde mal schauen, welche alternativen Vorgehensweisen (Frames, Pages und so weiter) noch existieren, damit ich in meinem Projekt weiter kommen kann. Wenn jemand einen Vorschlag hat, wie ich eventuell mit einem ähnlichen Vorgehen das gewünschte Ziel erreiche, bin für alles offen.
Danke |
Re: Fehlermeldung 'Form kann nicht erstellt werden'
Hallo (schon wieder ;-) ),
wie beim letzten mal hat dir auch dieses mal jaenicke den richtigen Fingerzeig gegeben. Du solltest einfach nur hingehen und die erstellungsreihenfolge deiner Formulare ändern. Wenn Dein Form2 dein MainForm ist müßte sich Deine MDI-Problematik quasi von selber lösen. Aber nur weil das dein MainForm ist muss es der Anwender nicht als erstes sehen. Daas dürfte der Knackpunkt sein :-) Ein solches Problem hat man z.B. auch bei Splash-Screens. Dieser soll dem Anwender zeigen das die Anwendung geladen wird. Also soll dieses Fenster auch zuerst angezeigt werden. Aber ein anderes Formular soll Dein MainForm sein :-) Also ungefähr so umsetzten (in der dpr):
Delphi-Quellcode:
Ich hoffe, das hilft dir weiter :-)
Application.Initialize;
Application.CreateForm(TForm2, Form2); // <-- das hier soll dein Hauptformular sein Application.CreateForm(TForm1, Form1); // <-- das hier soll deinen Ladezustand anzeigen Form1.Show; Form1.Update; Form1.LadeAlles; // hier muss jetzt alles passieren was zum laden eben nötig ist. Und die MEthode darf erst "zurück" kommen wenn Form2 angezeigt werden soll :-) From1.Hide; Application.Run; Und wie gesagt, du brauchst dann das ganze WM_MACH_JETZT_WEITER aus dem ersten Post wahrscheinlich nicht mehr ;-) Gruß, Chris |
Re: Fehlermeldung 'Form kann nicht erstellt werden'
also ich bedanke mich nochmal bei euch beiden, leider kommt man nicht wirklich (anscheinend) drum rum "dumme Fragen" zu stellen, beim Lernen einer Programmiersprache.
Wenn ich die Erstellungsreihenfolge in meiner Projekt-Datei ändere, ergeben sich dann für mich Probleme, infolge dieser Änderung, die sage ich mal für Anfänger unüberschaubar werden? Ist eine Neuerstellung des Projektes eventuell sinnvoller, um dann nur Anpassungsarbeit zwischen Form1 und Form2 machen zu müssen? |
Re: Fehlermeldung 'Form kann nicht erstellt werden'
Es gibt keine dummen Fragen, nur dumme Antworten. ;-)
Das Projekt neu erstellen würde sich nur lohnen, wenn du das ganze Projekt auch wirklich neu sortiert neu schreiben willst. Wenn du den Quelltext oder die Formulare wieder übernehmen willst, dann bringt das nicht viel, dann reicht es auch das zu ändern. Wenn du ein sauberes Programm haben willst, dann ist es aber durchaus sinnvoll von vorne anzufangen, zu überlegen was wo passieren soll und die Komponenten z.B. auch alle zu benennen (dabei hilft auch GExperts). Denn Form1, Form2, Form3, Button1, Button2, ... sagt gar nichts aus und macht das Programm später schlecht lesbar und schwieriger zu ändern. Wenn du dann den Code dazu wieder schreibst, dann hast du schon eine Grundordnung drin. Als Referenz hast du ja den alten Code, falls du wo nicht weißt wie das ging. Wenn das eher eine Übung war, dann kannst du das natürlich auch einfach so fertig machen, solltest das aber fürs nächste Mal im Hinterkopf behalten. ;-) |
Re: Fehlermeldung 'Form kann nicht erstellt werden'
Also das Programm ist sowohl eine Übung, als auch notwendig. Ist ein Programm, welches ich für die Firma als Steuerungsprogramm für eine Produktionsanlage schreibe. Es ist auch schon die überarbeitete Version, in der es sicherlich in der ein oder anderen Unit noch überarbeitungswürdige Bereiche gibt. Die Form2 hab ich nur vormodelliert, um dem Auftraggeber einen Eindruck zu geben, wie es aussehen kann und damit er Änderungen und Wünsche anbringen kann, deswegen sind hier auch noch eine Menge Komponenten und Controlls unbenannt. Bei den Forms (siehe Form1 und Form2) muss ich zugeben, habt ihr recht, hab ich bisher immer über die Dateinamen identifiziert, aber jemand anderes kann dies sicherlich nicht riechen.
Die Lauffähigkeit des Programmes (vorallem sauberes terminieren, wie man auch an meinen anderen Threats sieht) liegt mir dabei sehr am Herzen, weil dies in der 1. Version nicht wirklich gelungen ist. Nach einbinden einer ActiveX-Komponente (welche nicht von mir geschrieben war), hat sich das Programm immer regelmäßiger nicht vollständig terminiert. Was sich durch Erweitern des Programmes nur verschlimmert hat. Dies soll in dieser Version möglichst vermieden werden. Deswegen versuche ich auch hier über dieses Forum, mit eurer Hilfe meine Wissenslücken zu schließen. Werde also am Montag nach eurem gegebenen Vorschlag das Programm in der Struktur umgestalten, damit die Hauptform auch meine Form 2 ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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