AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster am Rand andocken

Ein Thema von Christian18 · begonnen am 10. Sep 2008 · letzter Beitrag vom 11. Sep 2008
Antwort Antwort
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#1

Fenster am Rand andocken

  Alt 10. Sep 2008, 20:59
Hallo,

ich habe da mal eine Frage. Wie kann ich ein Fenster am Rand andocken? Also ganz konkret meine ich, dass man das Fenster nicht über den Rand oben und links hinaus ziehen kann.

Ich hoffe ich kommte kurz erklären, was ich meine.

MFG Christian18
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Fenster am Rand andocken

  Alt 10. Sep 2008, 21:01
Andocken kannst du ein Fenster einfach über die eigenschaft ScreenSnap von TForm. Ich glaube über SnapBuffer kann man definieren, ab welchem Abstand das Formular andockt. Bin mir aber jetzt nicht ganz sicher wie das heißt

Dann kann man das Formular aber trotzdem noch außerhalb des Desktops schieben... Da musst du wohl eine manuelle überprüfung vornehmen
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#3

Re: Fenster am Rand andocken

  Alt 10. Sep 2008, 21:44
Hallo,

ok, das funktioniert schon mal super. Und wie kann mache ich dass, damit ich ein fenster nicht über den rand hinaus schieben kann?

Wenn ich folgendes mache, dass bilkt das fenster immer.
if Form1.Left <= 0 then Form1.Left:=0;
MFG Christian18
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Fenster am Rand andocken

  Alt 10. Sep 2008, 22:01
Zitat von Christian18:
Hallo,

Und wie kann mache ich dass, damit ich ein fenster nicht über den rand hinaus schieben kann?

Wenn ich folgendes mache, dass bilkt das fenster immer.
if Form1.Left <= 0 then Form1.Left:=0;


Delphi-Quellcode:
  private
    { Private declarations }
    procedure WMMoving(var msg: TWMMoving); message WM_MOVING;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMMoving(var msg: TWMMoving);
var
  screenArea: TRect;
begin
  screenArea := Screen.WorkareaRect;
  if msg.lprect^.Left < screenArea.left then
    OffsetRect(msg.lprect^, screenArea.Left - msg.lpRect^.Left, 0);
  if msg.lprect^.Top < screenArea.top then
    OffsetRect(msg.lprect^, 0, screenArea.Top - msg.lprect^.Top);
  if msg.lprect^.Right > screenArea.Right then
    OffsetRect(msg.lprect^, screenArea.right - msg.lprect^.Right, 0);
  if msg.lprect^.Bottom > screenArea.Bottom then
    OffsetRect(msg.lprect^, 0, screenArea.bottom - msg.lprect^.Bottom);
  inherited;
end;

Falls dein Delphi TWMMoving nicht erkennt dieses so deklarieren:

Delphi-Quellcode:
type
 TWMMoving = record
    Msg: Cardinal;
    fwSide: Cardinal;
    lpRect: PRect;
    Result: Integer;
  end;
( Quellangabe )
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#5

Re: Fenster am Rand andocken

  Alt 11. Sep 2008, 18:23
bedenke die mögliche Existenz von mehreren Monitoren

mit der von Toms genannten Methode kann ich das Fenster nämlich nur auf dem einem (den Primär-) Monitor verwenden.

screen-area bildet nur den ersten Monitor ab...da mein Primärmonitor rechts steht, sind die Positionswerte auf dem zweitmonitor negativ.

Gruß Frank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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