Autor Beitrag
Jojojoxx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Do 26.03.09 12:18 
Hallo!

Gibt es bereits fertige Methoden, die eine Form öffnen, aber diese dabei so Positionieren, dass diese mittig zur übergeordneten Form stehen?
Meine Frage ist weniger wie man das implementiert, das ist mir klar. Ich würde viel mehr wissen wollen, ob Delphi bereits solche Prozeduren mitliefert.
Vielen Dank!
mfg

Jojo
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 26.03.09 12:34 
Schau dir mal die Eigenschaft "Position" des Formulars an.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Do 26.03.09 13:00 
Es sollte nicht schaden sich die Eigenschaften der jeweiligen Komponenten die man verwendet anzuschauen das beantwortet so manch Frage. :wink:
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Do 26.03.09 13:21 
Hi!

Diese Eigenschaft hat nur einen Nachteil:
Wenn ich eine Form auf "PoMainFormCenter" stelle und dann mit "show" öffne, dann erscheint diese mittig von der MainForm, soweit so gut.
Wenn ich diese Form dann schließe, die MainForm verschiebe und dann das Fenster erneut mit "show" öffne, dann öffnet es sich an der alten Position und nicht mittig der neuen MainForm-Position.
mfg

Jojo
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 26.03.09 13:24 
Wenn du die Fenster nur versteckst und nicht schließt und dabei aus dem Arbeitsspeicher entfernst, dann stimmt das. Dann gibt es da nichts fertiges.
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Do 26.03.09 16:39 
Ich klicke auf dem Fenster einfach auf das X. Das scheint kein wirkliches Schließen des Fensters zu bewirken, sondern nur ein Verstecken...
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 26.03.09 16:41 
Dann entferne es doch komplett aus dem Speicher


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var frm : TForm2;
begin
  frm := TForm2.Create(self);
  try
    frm.ShowModal;
  finally
    frm.Free;
  end;
end;


Damit wäre sauber aufgeräumt.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: Do 26.03.09 17:18 
Stimmt! Das könnte ich machen! :-)
Danke soweit!
mfg

Jojo
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 26.03.09 18:26 
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var frm : TForm2;
begin
  frm := TForm2.Create(self);
  try
    frm.ShowModal;
  finally
    frm.Free;
  end;
end;
Das geht viel einfacher als mit eigenem Free...

user profile iconJojojoxx hat folgendes geschrieben Zum zitierten Posting springen:
Ich klicke auf dem Fenster einfach auf das X. Das scheint kein wirkliches Schließen des Fensters zu bewirken, sondern nur ein Verstecken...
Setze ganz einfach in OnClose Action auf caFree. Schon wird das Formular beim Schließen ganz von selbst auch freigegeben...

Dann musst du nur vor der Anzeige das Fenster neu erzeugen und kannst auch normal Show benutzen. Das automatische Erzeugen von Fenstern solltest du einfach dann für die weiteren Formulare (außer dem Hauptformular) in den Projektoptionen deaktivieren.