![]() |
Unerklärliche Fehlermeldung bei manueller Formerzeugung
Hi
ich bekomm die Fehlermeldung: "Aus einem sichtbaren Fenster kann kein modales gemacht werden" Jedoch erzeuge ich das Formular manuell
Delphi-Quellcode:
Das Formular ist auch in die Liste der verfügbaren Forms gelegt,
With Tfrm1.Create(self) do
begin ShowModal; Free; end; sprich wird nicht automatisch beim Start erzeugt. Der Witz ist das ich genau dieses Verfahren in anderen Projekten schon angewendet habe und bis jetzt nie Probleme damit hatte. Liegt es vielleicht an irgendeiner Einstellung an Tfrm1? Hat jemand ne Idee? |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
Die Fehlermeldung bedeutet wohl: Wenn ein Fenster modal angezeigt werden soll, darf es wohl nicht schon vorher sichtbar sein.
Ich hab das mal mit:
Delphi-Quellcode:
probiert, hab also von dem Form, auf dem der Button liegt, weitere Instanzen erzeugt...das ging wunderbar. Hast du vielleicht etwas mehr Quelltext?
procedure Tfrm1.BitBtn1Click(Sender: TObject);
begin With Tfrm1.Create(self) do begin ShowModal; Free; end; end; Man liest sich, Stanlay :hi: |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
Das ist das Problem. Mehr Code habe ich nicht.
Ich habe ein Hauptformular (welches das wirkliche Hauptform ist, was am Anfang automatisch erzeugt wird) und in dem befindet sich ein MainMenu mit dem Unterpunkt Fenster1. Dieser Menüitem greift dann noch auf ein Action zurück das nichts weiter drinstehen hat, als das oben genannte. frm1 wird vorher definitiv nirgends erzeugt. Habs mit frm1.Show einfach mal probiert und wie zu erwarten einen Fehler beim Zugriff im Speicher bekommen. |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
passiert das auch mit:
Delphi-Quellcode:
?
var DasFenster : TForm;
begin DasFenster := TForm.Create(self); DasFenster.ShowModal; DasFenster.Free; end; |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
Leider ja.
Das passiert sogar auch, wenn ich das Form in die Liste der automatisch zuerzeugenden Forms beim Start nehme und dann frm1.showmodal; aufrufe. frm1.show; geht ohne Probleme |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
Und wie isses mit:
Delphi-Quellcode:
?
Unit DasProblem
type TForm2 = class(TForm) end; TForm1 = class(TForm) FSubForm : TForm2 protected procedure OnIrgendWasClick(Sender : TObject); public Destructor Destroy; override; end; var Form1 : TForm1; implementation procedure TForm1.OnIrgendwasKlick(Sender : TObject); begin if not Assigned(FSubForm) then FSubForm := TForm2.Create; FSubForm.ShowModal; end; Destructor TForm1.Destroy; begin if Assigned(FSubForm) then FreeAndNil(FSubForm); end; |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
Ich denke mal das dieses Problem viel einfacher zu lösen ist: Die Form darf sich beim Erstellen nicht sichtbar machen, da dann ein ShowModal fehlschlägt. Setz die Eigenschaft Visible der Form einfach mal auf False.
Gruß, Marcel |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
Hallo Generalissimo,
ich habe versucht Dein Problem nachzuvollziehen. Leider ist es mir nicht geglückt. Nur mit dem Hinweis von Marcel Gascoyne (Visible=True) erhalte ich den von Dir beschriebenen Fehler. Aber sicherheitshalber noch ein paar Anmerkungen zu dynamisch erzeugten Formularen: In den Projekt-Optionen das Formular in die Liste der verfügbaren Formulare aufnehmen. - Dann wird das Formular nicht automatisch beim Start erzeugt. Release anstatt Free verwenden. Siehe Delphi-Hilfe Den Aufruf immer in einen Try/Finally Block kapseln
Delphi-Quellcode:
With TForm2.Create(self) do
begin Try ShowModal; Finally Release; end; end; |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
Danke euch allen für die zahlreichen Antworten.
Ich hab das Formular einfach neu gemacht und fragt mich nicht wieso, nun gehts wieder. Keine Ahnung warum!!! |
Re: Unerklärliche Fehlermeldung bei manueller Formerzeugung
Das liegt tatsächlich an der visible Eigenschaft, wie Marcel Gascoyne schon sagte...
(sorry dass ich hier wieder alte Threads ausgrabe, aber vielleicht sucht ja mal jemand nach diesem Thema ..so wie ich gerade :)) |
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