AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

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, 12: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

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

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 12: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.490 Beiträge
 
Delphi 7 Professional
 
#3

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 12: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
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 13: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 13: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
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: MDI-Fenster - Erzeugung

  Alt 15. Mai 2020, 14: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Mai 2020 um 14: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, 08:55
Klingt nicht gut, da werde ich doch mal Frames ins Auge fassen...

Ciao
Stefan
  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 15:22 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