Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Wie halte ich ein Formular in einem Bereich eines anderen Formulars? (https://www.delphipraxis.net/201825-wie-halte-ich-ein-formular-einem-bereich-eines-anderen-formulars.html)

flashcoder 30. Aug 2019 23:01

Delphi-Version: 10 Seattle

Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe zwei Formulare ("Form1" und "Form2") und möchte wissen, wie das Form2 im Bereich Form1 bleibt. ohne die Grenzen von Form1 zu überschreiten, wenn es verschoben wird (auch Behandlung mit WM_WINDOWPOSCHANGING Nachricht)? Ich habe diesen Code, der verhindert, dass ein Formular außerhalb des Bildschirms bleibt. Wie verhindern Sie, dass Sie außerhalb eines anderen Formulars bleiben (Form2 bleibt außerhalb von Form1)?

Delphi-Quellcode:
type
  TForm2 = class(TForm)
    Button1: TButton;
  private
    procedure WMMove(var Msg: TWMMove); message WM_MOVE;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.WMMove(var Msg: TWMMove);
begin
  if (Left < 0) then
    Left := 0;

  if (Top < 0) then
    Top := 0;

  if (Screen.Width - (Left + Width) < 0) then
    Left := Screen.Width - Width;

  if (Screen.Height - (Top + Height) < 0) then
    Top := Screen.Height - Height;
end;

end.

blawen 30. Aug 2019 23:12

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Muss das Fenster verschiebbar sein oder reicht es nicht aus, wenn Du das Fenster z.B. in einem Panel darstellst (Parent zuweisen)?

flashcoder 30. Aug 2019 23:18

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Zitat:

Zitat von blawen (Beitrag 1444042)
Muss das Fenster verschiebbar sein oder reicht es nicht aus, wenn Du das Fenster z.B. in einem Panel darstellst (Parent zuweisen)?

blawen,

Muss das Fenster verschiebbar sein.

Luckie 31. Aug 2019 02:23

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Zitat:

Ich habe diesen Code, der verhindert, dass ein Formular außerhalb des Bildschirms bleibt. Wie verhindern Sie, dass Sie außerhalb eines anderen Formulars bleiben (Form2 bleibt außerhalb von Form1)?
Indem du nicht die Werte des Screen Objekts nimmst, sondern die des Formulars?

Neutral General 31. Aug 2019 02:25

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Kann es sein, dass du einfach nur ein MDI-Formular + MDI Child brauchst/willst?

flashcoder 31. Aug 2019 02:52

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Zitat:

Zitat von Neutral General (Beitrag 1444064)
Kann es sein, dass du einfach nur ein MDI-Formular + MDI Child brauchst/willst?

MDI ist in meinem Fall nicht anwendbar, da das übergeordnete Formular nicht Application.MainForm ist und ja ein zweites Formular (das auf dem angehängten Bild gezeigte `Form1`).

Lesen Sie mehr unter: https://stackoverflow.com/questions/...not-be-created

flashcoder 31. Aug 2019 02:54

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Zitat:

Zitat von Luckie (Beitrag 1444063)
Zitat:

Ich habe diesen Code, der verhindert, dass ein Formular außerhalb des Bildschirms bleibt. Wie verhindern Sie, dass Sie außerhalb eines anderen Formulars bleiben (Form2 bleibt außerhalb von Form1)?
Indem du nicht die Werte des Screen Objekts nimmst, sondern die des Formulars?

Auch getestet und nicht funktioniert.

Luckie 31. Aug 2019 10:04

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Zitat:

Zitat von flashcoder (Beitrag 1444069)
Zitat:

Zitat von Luckie (Beitrag 1444063)
Zitat:

Ich habe diesen Code, der verhindert, dass ein Formular außerhalb des Bildschirms bleibt. Wie verhindern Sie, dass Sie außerhalb eines anderen Formulars bleiben (Form2 bleibt außerhalb von Form1)?
Indem du nicht die Werte des Screen Objekts nimmst, sondern die des Formulars?

Auch getestet und nicht funktioniert.

Natürlich reicht es nicht einfach den Code zu übernehmen. wie sah denn dein Code aus?

flashcoder 31. Aug 2019 13:20

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Zitat:

Zitat von Luckie (Beitrag 1444102)
Zitat:

Zitat von flashcoder (Beitrag 1444069)
Zitat:

Zitat von Luckie (Beitrag 1444063)
Zitat:

Ich habe diesen Code, der verhindert, dass ein Formular außerhalb des Bildschirms bleibt. Wie verhindern Sie, dass Sie außerhalb eines anderen Formulars bleiben (Form2 bleibt außerhalb von Form1)?
Indem du nicht die Werte des Screen Objekts nimmst, sondern die des Formulars?

Auch getestet und nicht funktioniert.

Natürlich reicht es nicht einfach den Code zu übernehmen. wie sah denn dein Code aus?

Einfach! Wo Screen haben, habe ich durch Form1 ersetzt. Siehe den Code der Frage.

Ich habe diesen Code unten, um besser zu verstehen, was ich wünsche (stattdessen mit der Maus; mit Form2).

Delphi-Quellcode:
var
  R: TRect;
begin
  R := GetClientRect;
  R.TopLeft := ClientToScreen(R.TopLeft);
  R.BottomRight := ClientToScreen(R.BottomRight);
  ClipCursor(@R);
  ShowMessage('Versuchen Sie, die Maus außerhalb des Formular zu bewegen.');
  ClipCursor(nil);
end;

Luckie 31. Aug 2019 13:26

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Ich wollte dich auf das Prinzip aufmerksam machen. Du nimmst als Grenze eben nicht die Screen, sondern das Formular1. Und dahingehend musst du den Code anpassen.

flashcoder 31. Aug 2019 17:16

AW: Wie halte ich ein Formular in einem Bereich eines anderen Formulars?
 
Zitat:

Zitat von Luckie (Beitrag 1444120)
Ich wollte dich auf das Prinzip aufmerksam machen. Du nimmst als Grenze eben nicht die Screen, sondern das Formular1. Und dahingehend musst du den Code anpassen.

Könnte ich bitte ein Codebeispiel zeigen? Ich habe es nicht verstanden.


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