AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

MDI-Fenster - Erzeugung

Ein Thema von skoschke · begonnen am 15. Mai 2020 · letzter Beitrag vom 18. Mai 2020
Antwort Antwort
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#1

MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 11:37
Hallo,

bei einer MDI-Anwendung habe ich das Problem, dass die MDI-Fenster in ihrem Create einigen Code abzuarbeiten haben, der ca. 1/2 sec. dauert.
Wird nun per Menü-Klick ein solches Fenster erzeugt (deren Windowstate = wsMaximized) dann erscheint das Fenster erst normal im Haupfenster und vergrößert sich dann nach der 1/2 sec.

Das sieht sehr unschön aus und ich versuche vergeblich dies abzustellen, allerdings ohne jeglichen Erfolg.

Jegliches Repaint bringt nichts, Visible false ist nicht erlaubt, wie kann man das Problem beheben?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.990 Beiträge
 
Delphi 12 Athens
 
#2

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 11:52
Visible false ist nicht erlaubt
Auch nicht, wenn du es im Objektinspektor setzt?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#3

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 11:54
Unelegante Lösung:

Code aus dem Create raus.
Dort einen Timer aktivieren (Interval durch probieren ermitteln) und in seinem OnTimerEreignis dann den aus dem Create entfernten Code ausführen.

Mach ich so in der Art bei Programmen, deren Create ... beim Programmstart sonst zulange dauern würde (z. B. wenn dort 'ne Datenbankverbindung aufgebaut werden soll, diverse Konfigurationsdateien zu lesen sind ...). Eventuell kannst Du sowas ja auch nutzen.

Diese Krücke aber bitte erst in Betracht ziehen, wenn Uwes Rat nicht funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.110 Beiträge
 
Delphi 12 Athens
 
#4

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 12:04
Sowas Langes nicht im Create machen.

@Uwe Raabe:
MDI-Fenster sind immer sichtbar, drum sind sie im Create immer schon sichtbar. (man kann sie maximal minimieren)
Visible=False ist wirklich nicht erlaubt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.990 Beiträge
 
Delphi 12 Athens
 
#5

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 12:21
@Uwe Raabe:
MDI-Fenster sind immer sichtbar, drum sind sie im Create immer schon sichtbar. (man kann sie maximal minimieren)
Visible=False ist wirklich nicht erlaubt.
Komisch, wenn ich über dem MDI-Wizard ein Projekt (siehe Anhang) erzeugen lasse und im FormCreate des Child-Forms folgenden Code einsetze,
Delphi-Quellcode:
  Sleep(2000);
  WindowState := wsMaximized;
dann öffnet sich das Fenster nach zwei Sekunden in voller Größe.

Es ist also offenbar kein generelles Problem, sondern wird durch den aktuell verwendeten Code oder irgendwelche Einstellungen verursacht.
Angehängte Dateien
Dateityp: zip MDITest.zip (9,6 KB, 5x aufgerufen)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.110 Beiträge
 
Delphi 12 Athens
 
#6

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 13:06
OnCreate/FormCreate wird erst im AfterConsructor ausgelöst, also lange nachdem die Form schon erstellt wurde. (genug Zeit für viel Spaß)
Da MDI-Childs nicht invisible sein dürfen, wird die Form ab dem Inherited des Constructors potentiell sichtbar.

Du hast wohl noch Glück, dass du nichts auf der Form hast, was auf das FormHandle zugreift oder einen Repaint auslöst, schon während des Ladens, und damit die Anzeige aktualisiert, bzw. das interne Windows-Form (HWND) sofort erstellt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Mai 2020 um 13:38 Uhr)
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: MDI-Fenster - Erzeugung

  Alt 18. Mai 2020, 07:55
Klingt nicht gut, da werde ich doch mal Frames ins Auge fassen...

Ciao
Stefan
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz