Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Form über anderer Form zentrieren (https://www.delphipraxis.net/191883-form-ueber-anderer-form-zentrieren.html)

striderx 28. Feb 2017 15:31

AW: Form über anderer Form zentrieren
 
@haentschmann

Wenn ich mir meine dpr-Dateien anschaue, sehe ich nichts davon, dass etwas "automatisch in der MainForm erzeugt wird".


@slipstream

Wie ich schon geschrieben habe: Da ist mir der Einzeiler mit dem Aufruf von ShowModal deutlich lieber ...



Ich bin mir sicher, dass es einen Weg geben muss, den Caller festzustellen (wie macht das z. B. MessageDlg?). Aber so komme ich jetzt erst mal klar.

striderx 1. Mär 2017 07:43

AW: Form über anderer Form zentrieren [gelöst]
 
So, ich habe jetzt eine Lösung gefunden:

Die aufrufende Form läßt sich über Screen.Forms[0] ermitteln.

Das Ganze sieht bei mir dann so aus:

Delphi-Quellcode:
  aCaller := Screen.Forms[0];
  if aCaller <> Nil then begin
     dlgShowMsg.Position := poDesigned;
     dlgShowMsg.Top := aCaller.Top + Trunc((aCaller.Height - dlgShowMsg.Height) / 2);
     dlgShowMsg.Left := aCaller.Left + Trunc((aCaller.Width - dlgShowMsg.Width) / 2);
  end
  else dlgShowMsg.Position := poOwnerFormCenter;

himitsu 1. Mär 2017 09:28

AW: Form über anderer Form zentrieren [gelöst]
 
Zitat:

Zitat von striderx (Beitrag 1362937)
Die aufrufende Form läßt sich über Screen.Forms[0] ermitteln.

Jain. Das ist die Form, welche aktuell den Fokus besitzt, denn immer wenn eine Form den bekommt, wird sie auf 0 verschoben.

Ist deine Form bereits sichtbar, dann wäre sie selbst die 0.

Zitat:

Zitat von striderx (Beitrag 1362937)
Das Ganze sieht bei mir dann so aus

Delphi-Quellcode:
aCaller <> nil
aka
Delphi-Quellcode:
Assigned(aCaller)
wirst du nie erleben, denn das ist niemals NIL, da Forms[i] immer eine Form zurückliefert, und wenn nicht, dann wird eine Exception geworfen (index out of bounds).

t.roller 1. Mär 2017 10:15

AW: Form über anderer Form zentrieren [gelöst]
 
Zitat:

Zitat von striderx (Beitrag 1362937)
So, ich habe jetzt eine Lösung gefunden:

Die aufrufende Form läßt sich über Screen.Forms[0] ermitteln.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var aCaller : TForm;
begin
aCaller := Self;
...

striderx 1. Mär 2017 11:36

AW: Form über anderer Form zentrieren
 
Zitat:

Ist deine Form bereits sichtbar, dann wäre sie selbst die 0.
Stimmt. Da ich aber meine Form in der aufgerufenen Methode erst konfiguriere, passiert das, bevor sie sichtbar wird. In meinem Anwendungsfalls klappt das somit.


@t.roller: Das geht auch einfacher, indem ich den Caller als Parameter beim Methodenaufruf übergebe. Aber mit meinem Ansatz kann ich mir das schenken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Seite 3 von 3     123   

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