Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [D7] Formen werden urplötzlich nicht mehr erstellt (https://www.delphipraxis.net/216533-%5Bd7%5D-formen-werden-urploetzlich-nicht-mehr-erstellt.html)

Hobbycoder 13. Jan 2025 21:03

[D7] Formen werden urplötzlich nicht mehr erstellt
 
Hi,

ich habe ein Projekt noch im Delphi 7.
Hab da ein paar Änderungen gemacht, nichts wildes. Das letzt, davor lief es noch, war ein Menuitem auf visible:=True umgestellt.

Danach trat im OnFormShow EAccessViolation auf beim Zugriff auf ein Label in einer anderen Form.

Ich hab mal im Debugger die dpr durchgesteppt, und unmittelbar nach dem CreateForm arbeitet er die OnFormShow der Mainform ab.
Delphi-Quellcode:
begin
  frm_splash:=Tfrm_splash.Create(nil);
  frm_splash.Show;
  Application.ProcessMessages;
  dm1:=Tdm1.Create(nil);
  frm_dbausw:=Tfrm_dbausw.Create(nil);
  Application.Initialize;
  Application.Title := 'Tagesplaner V4.1 SQL';
  Application.CreateForm(Tfrm_main, frm_main);
  Application.CreateForm(Tfrm_ersatzwagenuebersicht, frm_ersatzwagenuebersicht);
  Application.CreateForm(Tfrm_rufnummernsuche, frm_rufnummernsuche);
  .
  . //Hier werden noch weitere Formen erzeugt
  .
  Application.Run;
end.
Müsste nicht das OnFormShow frühesten nach dem Application.Run ausgeführt werden?
Aber wenn ich in der ersten Zeile im OnShow der frm_main einen Haltepunkt setze, hält er dort unmittelbar noch dem CreateForm(Tfrm_main, frm_main).
Die Event OnFormShow und OnFormCreate sind im OI richtig zugewiesen.
In den Projekt-Optionen ist eingestellt, dass alle Formen automatisch erzeugt werden sollen und die frm_main auch als Mainform ausgewählt.

Kann man irgendwo versehendlich einen Haken setzen, dass nur die Mainform erzeugt wird? Oder woran könnte das liegen?

jaenicke 13. Jan 2025 22:40

AW: [D7] Formen werden urplötzlich nicht mehr erstellt
 
Funktioniert es denn, wenn du im Repository zu einer früheren Quelltextrevision zurückgehst?

Warum dort OnShow ausgelöst wird, müsstest du ja im Stacktrace sehen können. Wie sieht der denn beim OnShow aus?

Lemmy 14. Jan 2025 05:19

AW: [D7] Formen werden urplötzlich nicht mehr erstellt
 
Zitat:

Zitat von Hobbycoder (Beitrag 1545136)
Danach trat im OnFormShow EAccessViolation auf beim Zugriff auf ein Label in einer anderen Form.
....
Kann man irgendwo versehendlich einen Haken setzen, dass nur die Mainform erzeugt wird? Oder woran könnte das liegen?

hast Du im CreateForm des Hauptformulars vielleicht ein visible / show eingebaut? Oder vielleicht dein Menuitem mit einem With-block versehen und damit versehentlich das Formular im OnCreate auf sichtbar gestellt?

Kas Ob. 14. Jan 2025 07:24

AW: [D7] Formen werden urplötzlich nicht mehr erstellt
 
Zitat:

Zitat von Hobbycoder (Beitrag 1545136)
Hi,

ich habe ein Projekt noch im Delphi 7.
Hab da ein paar Änderungen gemacht, nichts wildes. Das letzt, davor lief es noch, war ein Menuitem auf visible:=True umgestellt.

Danach trat im OnFormShow EAccessViolation auf beim Zugriff auf ein Label in einer anderen Form.

Ich hab mal im Debugger die dpr durchgesteppt, und unmittelbar nach dem CreateForm arbeitet er die OnFormShow der Mainform ab.
Delphi-Quellcode:
begin
  frm_splash:=Tfrm_splash.Create(nil);
  frm_splash.Show;
  Application.ProcessMessages;
  dm1:=Tdm1.Create(nil);
  frm_dbausw:=Tfrm_dbausw.Create(nil);
  Application.Initialize;
  Application.Title := 'Tagesplaner V4.1 SQL';
  Application.CreateForm(Tfrm_main, frm_main);
  Application.CreateForm(Tfrm_ersatzwagenuebersicht, frm_ersatzwagenuebersicht);
  Application.CreateForm(Tfrm_rufnummernsuche, frm_rufnummernsuche);
  .
  . //Hier werden noch weitere Formen erzeugt
  .
  Application.Run;
end.
Müsste nicht das OnFormShow frühesten nach dem Application.Run ausgeführt werden?
Aber wenn ich in der ersten Zeile im OnShow der frm_main einen Haltepunkt setze, hält er dort unmittelbar noch dem CreateForm(Tfrm_main, frm_main).
Die Event OnFormShow und OnFormCreate sind im OI richtig zugewiesen.
In den Projekt-Optionen ist eingestellt, dass alle Formen automatisch erzeugt werden sollen und die frm_main auch als Mainform ausgewählt.

Kann man irgendwo versehendlich einen Haken setzen, dass nur die Mainform erzeugt wird? Oder woran könnte das liegen?

Hi,

What have you done !!!!!????

This is the most crazy thing i saw in very long time, calling Application.ProcessMessages before Application.Run is ..... WOW! or really! or what the.... out of words

Your application literally has undefined structure now, with undefined behavior, VCL library logic is out of the window too, calling ProcessMessages before Applicaiton.Run is no no, also never a form from its constructor should call it too.

bcvs 14. Jan 2025 07:49

AW: [D7] Formen werden urplötzlich nicht mehr erstellt
 
Zitat:

Kann man irgendwo versehendlich einen Haken setzen
Ja. Schau mal, ob visible bei deinem Hauptformular auf true steht. Wenn ja, gibt es genau das von dir beschreibene Verhalten.

Das Application.ProcessMessages soll wahrscheinlich dafür sorgen, dass das Splash-Form angezeigt wird. Nimm stattdessen mal
Delphi-Quellcode:
frm_splash.Update
. Das erzeugt weniger Nebeneffekte.

Hobbycoder 14. Jan 2025 12:00

AW: [D7] Formen werden urplötzlich nicht mehr erstellt
 
Zitat:

Zitat von bcvs (Beitrag 1545151)
Zitat:

Kann man irgendwo versehendlich einen Haken setzen
Ja. Schau mal, ob visible bei deinem Hauptformular auf true steht. Wenn ja, gibt es genau das von dir beschreibene Verhalten.

Das Application.ProcessMessages soll wahrscheinlich dafür sorgen, dass das Splash-Form angezeigt wird. Nimm stattdessen mal
Delphi-Quellcode:
frm_splash.Update
. Das erzeugt weniger Nebeneffekte.

Das war es. Vielen Dank. Ich muss da irgendwie beim Ändern der Visible-Eigenschaft des MenuItem auf der Form gewesen sein.
Das das sich so auswirkt hätte ich nicht gedacht, ist mir bisher noch nie passiert.

Danke für deinen Hinweis auf frm_splash.update :thumb:


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