![]() |
FesterPositionen werden nicht richtig gesetzt
Hallo!
Ich hab ein Problem mit der Positionierung von Fenster. Ich möchte, dass wenn einee Form geöffnet wird (ShowModal), diese zentriert zu der vorhergehenden Form angezeigt wird. Sollte dabei das Fester aus dem Sichtbereich des Monitos laufen soll die Position korrigiert werden. Die Reihenfolge in der die Forms geöffnet werden können ist durch das Programm selbst nicht immer gleich. Das heißt, dass ein Fenster unterschiedliche Vorgänger haben kann. Ich hab mir eine Procedure gebaut welche immer das anzuzeigende Objekt und dessen Vorgänger betrachtet.
Delphi-Quellcode:
Die Funktion macht auch das was sie soll. Aber nicht beim ersten öffnen eines Fensters.
procedure proc_FormWindowPosition(obj_Open, obj_Parent: TWinControl);
begin with obj_Open do begin Left := (obj_Parent.Left + (obj_Parent.Width div 2)) - (Width div 2); Top := (obj_Parent.Top + (obj_Parent.Height div 2)) - (Height div 2); if Top < Screen.MonitorFromWindow(Handle).Top then Top := Screen.MonitorFromWindow(Handle).Top; if Left + Width > Screen.MonitorFromWindow(Handle).Width - 10 then Left := Screen.MonitorFromWindow(Handle).Width - Width; if Left < 0 then Left := 0; end; end; Sprich: Sofern das erste Fenster was geönnet wird komplett im Sichtbereich liegt, werden die Nachfolgenden Fenster sofern benötigt in der Anzeige korrigiert. Ist das erste Fenster allerdings gleich nicht mehr richtig auf dem Monitor wird nichts mehr korrigiert. Die Funktion wird immer im OnShow aufgerufen. Alle Fenster haben die Position poMainFormCenter, was aber egal ist durch die genannte Procedure. Anderweitig wird nichts an den Forms geändert (Positionen ändern, vor verschieben schützen, oder dergleichen). Mich wundert auch, dass die Anweisungen auch beim ersten Mal richtig angenommen werden, aber in der Ansicht selbst dahingehend nicht das richtige passiert. Hat jemand eine Idee warum sich das so verhalten könnte? mfg |
AW: FesterPositionen werden nicht richtig gesetzt
Ich habe gerade noch ein wenig dran rum gespielt.
Und wenn ich die Position des Fensters in der Enwicklungsumgebung auf poDefault umstelle geht es gleich. Kann mir das jemand erklären warum meine Anweisung bei poMainFormCenter beim ersten Aufruf nicht korrekt umgesetzt wird, obwohl die Anweisungen angenommen werden. (Mit Haltepunkten kontrolliert.) |
AW: FesterPositionen werden nicht richtig gesetzt
Laut Forms.pas wird zuerst OnShow aufgerufen und erst danach die Formularposition gesetzt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 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