Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Fenster an Bildschirmrand / Taskleiste andocken lassen

  Alt 29. Apr 2004, 14:05
Hi!

So kann man das Fenster seiner Anwendung an die Ränder des Desktopbereichs andocken lassen, sprich, an den Bildschirmrand, ausgenommen die Taskleiste (die Taskleiste wird nicht überdeckt).

Delphi-Quellcode:
private
    { Private-Deklarationen }
    procedure WMWindowPosChanging(var Message: TWMWINDOWPOSCHANGING);
    message WM_WINDOWPOSCHANGING;

...

procedure TForm1.WMWindowPosChanging(var Message: TWMWINDOWPOSCHANGING);
const
  distance = 10;
begin
  { Obere und untere Festerkante }
  if (Message.WindowPos.y <= distance) and
     (Message.WindowPos.y >= -distance) then
        Message.WindowPos.y := 0
  else
  if (Message.WindowPos.y + Height > (Screen.WorkAreaHeight - distance)) and
     (Message.WindowPos.y + Height < (Screen.WorkAreaHeight + distance)) then
        Message.WindowPos.y := Screen.WorkAreaHeight - Height;

  { Linke und rechte Fensterkante } 
  if (Message.WindowPos.x <= distance) and
     (Message.WindowPos.x >= -distance) then
        Message.WindowPos.x := 0
  else
  if (Message.WindowPos.x + Width > (Screen.WorkAreaWidth - distance)) and
     (Message.WindowPos.x + Width < (Screen.WorkAreaWidth + distance)) then
        Message.WindowPos.x := Screen.WorkAreaWidth - Width;
end;
Dieser Code wurde von DieHardMan in diesem Thread veröffentlicht.

Dieser Code ist vor allem für die NonCVL-Programmierer interessant.


Die anderen können es auch so lösen (der Beitrag stammt von Meflin):
Man stellt die Property screensnap der Form auf true. snapbuffer gibt den Pixelabstand an, bei dem die Form angedockt wird.

SirThornberry hat folgenden Tipp:
Der Source ist auch ein super Ansatz wenn man mehrere Forms hat um diese aneinander andocken zu lassen.
  Mit Zitat antworten Zitat