Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eine Form nur in einem bestimmten Bereich bewegen ? (https://www.delphipraxis.net/47012-eine-form-nur-einem-bestimmten-bereich-bewegen.html)

smart 5. Jun 2005 08:11


Eine Form nur in einem bestimmten Bereich bewegen ?
 
Kann man eine Form in der Bewegung einschränken, so dass man eine Form nur in einem bestimmten Bereich bewegen kann?

leddl 5. Jun 2005 08:13

Re: Eine Form nur in einem bestimmten Bereich bewegen ?
 
Automatisch? AFAIK nein. Aber manuell sollte das kein Problem sein.

PierreB 5. Jun 2005 08:16

Re: Eine Form nur in einem bestimmten Bereich bewegen ?
 
Is ganz einfach, du könntest zum Beispiel nen Timer, Intervall auf 10 und dann hau das rein:
Delphi-Quellcode:
if form1.Left > 200 then form1.left := 200;

Win32.API 5. Jun 2005 08:30

Re: Eine Form nur in einem bestimmten Bereich bewegen ?
 
Hi,

Zitat:

Is ganz einfach, du könntest zum Beispiel nen Timer, Intervall auf 10 und dann hau das rein:
Man muss nicht für alles einen Timer nehmen....
Dafür gibt es Messages hier : WM_MOVE.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    procedure WMMove(var Message: TWMMove); Message WM_MOVE;
    { Private declarations }
  public
    { Public declarations }
  end;

.
.
.
.

procedure TForm1.WMMove(var Message: TWMMove);
begin
  inherited;
  if form1.Left > 200 then form1.left := 200;
end;

Win32.API

smart 5. Jun 2005 08:36

Re: Eine Form nur in einem bestimmten Bereich bewegen ?
 
Vielen Dank, für Eure Antworten. Die Lösung von @Win32.API klappt am besten. Von Timern bin ich auch nicht so begeistert. Die nehme ich nur im Notfall.

Einen schönen Sonntag an Euch Allen.

Heike

PierreB 5. Jun 2005 08:40

Re: Eine Form nur in einem bestimmten Bereich bewegen ?
 
Hallo Win32.Api,

stimmt, Timer sind nicht immer so vorteilhaft. ;)

Aber wir haben noch die Begrenzung oben - unten vergessen. Also:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    procedure WMMove(var Message: TWMMove); Message WM_MOVE;
    { Private declarations }
  public
    { Public declarations }
  end;

.
.
.
.

procedure TForm1.WMMove(var Message: TWMMove);
begin
  inherited;
  if form1.Left > 200 then form1.left := 200;
  if form1.top > 150 then form1.top := 150;
end;

marabu 5. Jun 2005 08:51

Re: Eine Form nur in einem bestimmten Bereich bewegen ?
 
Wenn die Nachricht WM_MOVING abgefangen wird, kann man die unerlaubte Bewegung verhindern - mit WM_MOVE macht man sie rückgängig.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz