AGB  ·  Datenschutz  ·  Impressum  







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

Form über anderer Form zentrieren

Ein Thema von striderx · begonnen am 27. Feb 2017 · letzter Beitrag vom 1. Mär 2017
Antwort Antwort
Seite 3 von 3     123   
striderx
Online

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
206 Beiträge
 
Delphi 10.4 Sydney
 
#21

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 15:31
@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.
  Mit Zitat antworten Zitat
striderx
Online

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
206 Beiträge
 
Delphi 10.4 Sydney
 
#22

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

  Alt 1. Mär 2017, 07:43
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#23

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

  Alt 1. Mär 2017, 09:28
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.

Das Ganze sieht bei mir dann so aus
aCaller <> nil aka 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).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#24

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

  Alt 1. Mär 2017, 10:15
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;
...
  Mit Zitat antworten Zitat
striderx
Online

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
206 Beiträge
 
Delphi 10.4 Sydney
 
#25

AW: Form über anderer Form zentrieren

  Alt 1. Mär 2017, 11:36
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 22:21 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