Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
1. Mär 2017
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.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
1. Mär 2017
So, ich habe jetzt eine Lösung gefunden:
Die aufrufende Form läßt sich über Screen.Forms ermitteln.
Das Ganze sieht bei mir dann so aus:
aCaller := Screen.Forms;
if aCaller <> Nil then begin
dlgShowMsg.Position := poDesigned;
dlgShowMsg.Top := aCaller.Top + Trunc((aCaller.Height - dlgShowMsg.Height) / 2);
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
28. Feb 2017
Ich hätte auch gedacht, dass 'poOwnerFormCenter' genau für einen solchen Fall da ist (s. mein Eingangs-Post), klappt aber leider nicht.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
28. Feb 2017
Da ist mir der Einzeiler mit dem Aufruf von ShowModal deutlich lieber ... :)
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
28. Feb 2017
Da Form 3 von unterschiedlichen anderen Formularen aufgerufen wird, ist der Constructor kaum die richtige Stelle. Ich habe es stattdessen mit einer überladenenen Version von ShowModal gemacht:
function ShowModal(MsgText, HeaderText: String; mButtons, mIcon: Word; aCaller: tForm): Integer; overload;
Was nicht elegant ist: Dass ich bei über 100 Aufrufen jetzt jedesmal das...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
27. Feb 2017
Form1 ist die Haupt-Form, Form2 eine beliebige von dort aufgerufene Form die wiederum Form3 aufruft. Form3 ist gleich dlgShowMsg. F sollte der Aufrufer von Form3 sein, Self ist Form 3.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
27. Feb 2017
Form3 hat bereits eine öffentliche Methode, in der die Form zusammengebastelt wird und die das ModelResult zurück liefert.
function ShowMsg(MsgText, HeaderText: String; mButtons, mIcon: Word): Integer;
Ich könnte die Werte der aufrufenden Form noch als Parameter aufnehmen, das wäre aber nicht besonders elegant.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
27. Feb 2017
Doch, das ist eine eigenständige Form. Self müsste Form3 sein.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
27. Feb 2017
Zur Erläuterung:
Form3 ist meine Alternative zum Windows Message-Dialog. Je nach Aufruf werden in Form3 die Anzahl der Buttons und der angezeigte Text festgelegt und daraus dann die Größe des Dialogs ermittelt.
Ich habe es jetzt mal so probiert:
F := GetParentForm(Self);
dlgShowMsg.Top := F.Top + Trunc((F.Height - dlgShowMsg.Height) / 2);
dlgShowMsg.Left := F.Left +...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
27. Feb 2017
Das geht leider nicht, weil die Größe von Form3 bei jedem Aufruf von Form3 neu ermittelt wird.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by striderx,
27. Feb 2017
folgende Situation:
Form1 ruft Form2 auf, die wiederum ruft Form3 auf, jeweils mit ShowModal. Form2 ist dabei nicht immer dieselbe Form.
Form 3 soll über Form 2 zentriert werden. Ich hätte gedacht, dass das mit Position = poOwnerFormCenter geht; allerdings wird Form3 damit immer über Form1 zentriert.
Um das Zentrieren 'zu Fuß' zu machen, habe ich versucht, mit GetParentForm(Self) an die...