AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [D7] Formen werden urplötzlich nicht mehr erstellt
Thema durchsuchen
Ansicht
Themen-Optionen

[D7] Formen werden urplötzlich nicht mehr erstellt

Ein Thema von Hobbycoder · begonnen am 13. Jan 2025 · letzter Beitrag vom 14. Jan 2025
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
975 Beiträge
 
#1

[D7] Formen werden urplötzlich nicht mehr erstellt

  Alt 13. Jan 2025, 22:03
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?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.708 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 13. Jan 2025, 23:40
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?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.383 Beiträge
 
Delphi 10.4 Sydney
 
#3

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

  Alt 14. Jan 2025, 06:19
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?
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
379 Beiträge
 
#4

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

  Alt 14. Jan 2025, 08:24
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.
Kas
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
712 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 14. Jan 2025, 08:49
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 frm_splash.Update . Das erzeugt weniger Nebeneffekte.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
975 Beiträge
 
#6

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

  Alt 14. Jan 2025, 13:00
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 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
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  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 07:48 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 by Thomas Breitkreuz