![]() |
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 |
Re: Formular ausserhalb des Screens verhindern
Zitat:
Beim Verschieben des Fenster werden die Messages WM_MOVING (davor) und WM_MOVE (danach) an es geschickt, diese könntest du abfangen. |
Re: Formular ausserhalb des Screens verhindern
Die TForm Eigenschaft
Delphi-Quellcode:
sollte dir weiterhelfen ;)
Position := poScreenCenter;
|
Re: Formular ausserhalb des Screens verhindern
Zitat:
|
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:
Beim Timer müsstest du dann den Intervall ziemlich klein stellen.
if Form.Left < 0 then Form.Left := 0;
|
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 |
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; |
Re: Formular ausserhalb des Screens verhindern
Zitat:
...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ß |
Re: Formular ausserhalb des Screens verhindern
Danke Thomasch hat sehr geholfen!!!
|
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 10:25 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 by Thomas Breitkreuz