![]() |
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. |
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; |
AW: Form über anderer Form zentrieren [gelöst]
Zitat:
Ist deine Form bereits sichtbar, dann wäre sie selbst die 0. Zitat:
Delphi-Quellcode:
aka
aCaller <> nil
Delphi-Quellcode:
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).
Assigned(aCaller)
|
AW: Form über anderer Form zentrieren [gelöst]
Zitat:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var aCaller : TForm; begin aCaller := Self; ... |
AW: Form über anderer Form zentrieren
Zitat:
@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 06:05 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