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.