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 2 von 3     12 3      
Benutzerbild von himitsu
himitsu
Online

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

AW: Form über anderer Form zentrieren

  Alt 27. Feb 2017, 23:37
Form3 hat bereits eine öffentliche Methode, in der die Form zusammengebastelt wird und die das ModelResult zurück liefert.
Dann ist also Self die aufrufende Form?

Tja, dann redest du von 2 Forms und ich zähle im Code aber 3 Forms/Variablen.
(Self, F und dlgShowMsg)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
striderx

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

AW: Form über anderer Form zentrieren

  Alt 27. Feb 2017, 23:44
Form3 hat bereits eine öffentliche Methode, in der die Form zusammengebastelt wird und die das ModelResult zurück liefert.
Dann ist also Self die aufrufende Form?

Tja, dann redest du von 2 Forms und ich zähle im Code aber 3 Forms/Variablen.
(Self, F und dlgShowMsg)

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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#13

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 06:54
Moin...
Zitat:
Ich könnte die Werte der aufrufenden Form noch als Parameter aufnehmen, das wäre aber nicht besonders elegant.
Delphi-Quellcode:
function ShowMsg(ParentForm: TForm; MsgText, HeaderText: String; mButtons, mIcon: Word): Integer;
..
oder im constructor beim erzeugen von Form3
Delphi-Quellcode:
constructor Create(AOwner: TComponent; ParentForm: TForm); reintroduce;
..
constructor TfrBlubb.Create(AOwner: TComponent; ParentForm: TForm);
begin
  inherited Create(AOwner);
  ..
end;
...was ist daran nicht elegant?

Die Dialog Form intessiert nur wer in aufgerufen hat, damit er seine eigenen Positionen berechnen kann. (siehe DeddyH) ...fertsch.

Geändert von haentschman (28. Feb 2017 um 07:29 Uhr)
  Mit Zitat antworten Zitat
striderx

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

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 08:49
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 aufrufende Formular als Parameter einfügen muss.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#15

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 08:56
Zitat:
Da Form 3 von unterschiedlichen anderen Formularen aufgerufen wird, ist der Constructor kaum die richtige Stelle.
...dynamische Erzeugung nur wenn die Form (der Dialog) gebraucht wird?
Delphi-Quellcode:
Dialog := TfoBlubb.Create(nil, self);
try
  Dialog.ShowMessage('Bla');
finally
  Dialog.Free;
end;

Geändert von haentschman (28. Feb 2017 um 09:01 Uhr)
  Mit Zitat antworten Zitat
striderx

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

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 09:38
Da ist mir der Einzeiler mit dem Aufruf von ShowModal deutlich lieber ...
  Mit Zitat antworten Zitat
Slipstream
(Gast)

n/a Beiträge
 
#17

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 09:58
Geht das nicht auch mit Form3.Position := poMainFormCenter oder poOwnerFormCenter? Im zweiten Fall müsste man Form3 als Owner Form2 mitgeben, oder?
  Mit Zitat antworten Zitat
striderx

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

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 12:03
Geht das nicht auch mit Form3.Position := poMainFormCenter oder poOwnerFormCenter? Im zweiten Fall müsste man Form3 als Owner Form2 mitgeben, oder?

Ich hätte auch gedacht, dass 'poOwnerFormCenter' genau für einen solchen Fall da ist (s. mein Eingangs-Post), klappt aber leider nicht.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#19

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 12:34
Moin...
Zitat:
Ich hätte auch gedacht, dass 'poOwnerFormCenter' genau für einen solchen Fall da
... und wer ist der Owner wenn das Form automatisch in der MainForm erzeugt wird?
  Mit Zitat antworten Zitat
Slipstream
(Gast)

n/a Beiträge
 
#20

AW: Form über anderer Form zentrieren

  Alt 28. Feb 2017, 14:24
Moin...
Zitat:
Ich hätte auch gedacht, dass 'poOwnerFormCenter' genau für einen solchen Fall da
... und wer ist der Owner wenn das Form automatisch in der MainForm erzeugt wird?
Das Folgende klappt bei mir fehlerfrei, das 2. Formular wird genau in der Mitte des 1. Formulars angezeigt, und zwar immer und egal, von welchem Formular aus ich aufrufe:

Delphi-Quellcode:
procedure TForm1.Bt_Form2Click(Sender: TObject);
begin
  U2 := TForm2.Create(Self);
  Try
    U2.Position := poOwnerFormCenter;
    U2.ShowModal;
  Finally
    U2.Free;
  End;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 16:55 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