Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Formular ausserhalb des Screens verhindern (https://www.delphipraxis.net/60055-formular-ausserhalb-des-screens-verhindern.html)

Logan 2. Jan 2006 13:29


Formular ausserhalb des Screens verhindern
 
Hallo,

ich muss ein Programm schreiben, dass nicht ausserhalb des Bildschirmes rausdarf. Ich weiss nicht welche Ereignisprozedur (beim Formular) nötig für ist oder handelt es sich nur um eine Einstellung im IO?

Danke schon im Vorraus!

MfG
Logan

Khabarakh 2. Jan 2006 13:35

Re: Formular ausserhalb des Screens verhindern
 
Zitat:

Zitat von Logan
IO

Ibjekt-Onspektor :mrgreen: ?
Beim Verschieben des Fenster werden die Messages WM_MOVING (davor) und WM_MOVE (danach) an es geschickt, diese könntest du abfangen.

Tyrael Y. 2. Jan 2006 13:36

Re: Formular ausserhalb des Screens verhindern
 
Die TForm Eigenschaft

Delphi-Quellcode:
  Position := poScreenCenter;
sollte dir weiterhelfen ;)

dahead 2. Jan 2006 13:39

Re: Formular ausserhalb des Screens verhindern
 
Zitat:

Zitat von Tyrael Y.
Die TForm Eigenschaft

Delphi-Quellcode:
  Position := poScreenCenter;
sollte dir weiterhelfen ;)

das bewirkt ja nur, dass es beim programmstart im screen zentriert ist.

Neutral General 2. Jan 2006 13:41

Re: Formular ausserhalb des Screens verhindern
 
Oder du machst einfach einen Timer oder einen Thread der immer überprüft wo die Form ist und dann z.B

Delphi-Quellcode:
if Form.Left < 0 then Form.Left := 0;
Beim Timer müsstest du dann den Intervall ziemlich klein stellen.

fkerber 2. Jan 2006 13:45

Re: Formular ausserhalb des Screens verhindern
 
Hi!

Ein Timer ist da wohl wenig sinnvoll.
Vielleicht im onPaint des Forms? Beim verschieben wird es ja wohl neu gezeichnet.


Ciao Frederic

thomasch 2. Jan 2006 14:31

Re: Formular ausserhalb des Screens verhindern
 
Ich würde TWMMoving auswerten und die Ausdehnung des Forms gegen den screen testen.
Als Ansatz :
Delphi-Quellcode:
type
  TWMMoving = record
    Msg: Cardinal;
    fwSide: Cardinal;
    lpRect: PRect;
    Result: Integer;
  end;
  TForm1 = class(TForm)
    Image1: TImage;
    cxLabel2: TcxLabel;
  private
  procedure OnMoving(var Msg: TWMMoving); message WM_MOVING;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.OnMoving(var Msg: TWMMoving);
begin
  if self.Top<1 then
  begin
    self.Top:=1;
  end;
  if (self.Left<1) then
  begin
    self.Left:=1;
  end;
  if ((self.Left+self.Width)>screen.Width) then
  begin
    self.Left:=(screen.Width-self.Width);
  end;
  if ((self.Top+self.Height)>screen.Height) then
  begin
    self.Top:=screen.Height-self.Height;
  end;
end;

Tyrael Y. 2. Jan 2006 14:44

Re: Formular ausserhalb des Screens verhindern
 
Zitat:

Zitat von dahead
Zitat:

Zitat von Tyrael Y.
Die TForm Eigenschaft

Delphi-Quellcode:
  Position := poScreenCenter;
sollte dir weiterhelfen ;)

das bewirkt ja nur, dass es beim programmstart im screen zentriert ist.

Das ist mir bewusst...ich dachte mir eher, daß er genau das sucht und sich unglücklich ausgedrückt hat....eine Form die als maximale Größe die Screengröße hat, wird denke ich für den Benutzer sehr umständlcih zu händeln sein und ihn verwirren...

...ich zieh die Form zur Seite und die Form wird schmaler, dadurch werden eventuell Controls auf der Form falsch dargestellt...mhhh..nicht so gut...besonders wenn man das ganze noch erweitern möchte.....falls der Weg gesucht wurde sry für meine Antwort...

wie gesagt dachte eher, daß es unglücklich formuliert wurde

Gruß

Logan 2. Jan 2006 22:37

Re: Formular ausserhalb des Screens verhindern
 
Danke Thomasch hat sehr geholfen!!!

Logan 2. Jan 2006 22:49

Re: Formular ausserhalb des Screens verhindern
 
was ich aber nicht ganz vertstehe ist das hier:
procedure OnMoving(var Msg: TWMMoving);
message WM_MOVING; //<----

Wärst du so nett und könntest es mir erklären :?:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.
Seite 1 von 2  1 2      

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