Frage

Wenn ich ein neues Delphi -Formular erstelle, das OnResize -Ereignis einhauen und die App ausführen, wird OnResize abgefeuert, bevor das Fenster angezeigt wird. Was ich nicht weiß ist, ob dies immer passieren wird, für ein Fenster.

(Für alle, die mit der Windows -API vertraut sind, habe ich sie auf den Showwindow -Aufruf in tcustomForm.Showingchanged (Forms.Pas Line 5503 in Delphi 2007) nachgeführt, die anscheinend a WM_SIZE... zumindest für ein neues Fenster ohne andere Eigenschaften festgelegt. Ich habe nicht gesehen, dass Showwindow immer feuert WM_SIZE, Ich weiß also nicht, ob ich mich darauf verlassen kann oder nicht.)

So: Kann ich mich auf einen Tform verlassen? stets Onresize feuern, wenn es zum ersten Mal gezeigt wird? Oder gibt es Umstände (möglicherweise, wenn das Fenster nicht antriebbar ist, möglicherweise, wenn die Position des Positionsbesitzes bestimmte Werte usw. hat), wo OnResize könnte nicht Feuer bevor das Fenster zuerst angezeigt wird?

War es hilfreich?

Lösung

Nein, dieses Ereignis feuert nicht immer, wenn die Form zeigt, abhängig von Dingen wie BorderSyle. Zum Beispiel feuert es beim Start für BSSingle, jedoch nicht für BSDIALOG.

Es ist leicht zu testen. Fügen Sie einfach einen Protokollierungscode zum OnResize -Ereignis des Hauptformulars hinzu, ändern Sie die BorderSyle und führen Sie Ihre App aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top