AGB  ·  Datenschutz  ·  Impressum  







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

FesterPositionen werden nicht richtig gesetzt

Ein Thema von apm · begonnen am 23. Feb 2016 · letzter Beitrag vom 23. Feb 2016
Antwort Antwort
apm

Registriert seit: 22. Nov 2010
28 Beiträge
 
#1

FesterPositionen werden nicht richtig gesetzt

  Alt 23. Feb 2016, 15:43
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:
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;
Die Funktion macht auch das was sie soll. Aber nicht beim ersten öffnen eines Fensters.

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
  Mit Zitat antworten Zitat
apm

Registriert seit: 22. Nov 2010
28 Beiträge
 
#2

AW: FesterPositionen werden nicht richtig gesetzt

  Alt 23. Feb 2016, 16:07
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.)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FesterPositionen werden nicht richtig gesetzt

  Alt 23. Feb 2016, 16:21
Laut Forms.pas wird zuerst OnShow aufgerufen und erst danach die Formularposition gesetzt.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  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 17:12 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