Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fenster Positionieren (https://www.delphipraxis.net/54543-fenster-positionieren.html)

oakley 6. Okt 2005 11:44


Fenster Positionieren
 
Hi alle,

ich hab ein Problem bei der Positionierung eines dynamisch generierten Fensters.
Das Fenster wird auf Doppelklick generiert.
Code:

Delphi-Quellcode:
ms := TMemoryStream.Create;
  try
    ms.WriteComponent(Form13);
    newform := TForm13.CreateNew(self);
    ms.Position := 0;
    ms.ReadComponent(newform);
    newform.Name := 'Testform1';
    //newform.Parent := Form2;
    newform.Show;
  finally
    ms.Free
Im OnShow Event des Fensters positioniere ich
Delphi-Quellcode:
TForm(self).Left := Form2.Left + 300;
TForm(self).Top := Form2.Top + 150;
Das ganze funktioniert so lange ich die Kommentarzeichen von newform.parent := Form2; nicht entferne.
Wenn ich das mache taucht fas Fenster innerhalb des haputfensters an verschiedenen Stellen auf. Je nach dem wo ich das Hauptfenster auf dem Desktop habe.

Kann einer helfen???

Gruß

Mirko

[edit=alcaeus]Delphi-Tags eingefuegt. In Zukunft bitte selbst machen ;) Mfg, alcaeus[/edit]

tigerman33 6. Okt 2005 11:51

Re: Fenster Positionieren
 
SChau dir mal form.position an. kann sein, dass der falsch gesetzt ist, z.b. auf poWindowCenter (oder so, weiß jetzt gerad den namen nicht auswendig)

marabu 6. Okt 2005 12:37

Re: Fenster Positionieren
 
Hallo Mirko,

wenn du deinen Quelltext mit den Delphi-Code tags einfasst, dann sieht er gleich viel besser aus und ist auch leichter zu lesen:

Delphi-Quellcode:
ms := TMemoryStream.Create;
try
  ms.WriteComponent(Form13);
  newform := TForm13.CreateNew(self);
  ms.Position := 0;
  ms.ReadComponent(newform);
  newform.Name := 'Testform1';
  // newform.Parent := Form2;
  newform.Show;
finally
  ms.Free
end;
Wenn du Top und Left deiner Form setzt, dann musst du bedenken, dass die Koordinaten zu denen des Parent addiert werden. Geht natürlich nur, wenn du Position = poDesigned eingestellt hast.

Grüße vom marabu

oakley 6. Okt 2005 13:27

Re: Fenster Positionieren
 
Sorry die Tags hatte ich vergessen.

Danke für die Hilfe. Ich hab vergessen, daß bei Parent die Abstände addiert werden.

Ich hab jetzt noch ein Problem und zwar funktioniert BoundsRect nicht mehr.

Ich will, daß sich der Mauszeiger nur im platzierten Fenster bewegt.

MeinCode:
Delphi-Quellcode:
TForm(self).Left := 300;
TForm(self).Top := 150;
R := TForm(self).BoundsRect;
ClipCursor(@R);
Gruß

Mirko

Luckie 6. Okt 2005 13:29

Re: Fenster Positionieren
 
Und WAS funktioniert da jetzt nicht? :roll:

oakley 6. Okt 2005 13:34

Re: Fenster Positionieren
 
Naja der Cursor Clip funktioniert aber an der falschen stelle.
Wenn ich das richtig sehe oben links in der Ecke des Hauptfesnters.

So als wäre das Form falsch positioniert.

gruß

Mirko

Khabarakh 6. Okt 2005 14:15

Re: Fenster Positionieren
 
Bevor du behauptest, dass irgendetwas nicht mehr funktioniert, solltest du dir erst die Hilfe dazu durchlesen.
Zitat:

Gibt das Begrenzungsrechteck des Steuerelements an. Die Angabe bezieht sich auf das Koordinatensystem des übergeordneten Steuerelements.
ClipCursor will das Rect natürlich in globalen Koordinaten, also musst du die Koordinaten umrechnen. Entweder per Hand oder mit ClientToScreen des Parents.

oakley 6. Okt 2005 14:37

Re: Fenster Positionieren
 
Danke,

hatte ich übersehen.

Gruß

Mirko


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 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