this slowpoke moves

Dock on Screen

private
    { Private declarations }
    protected
    procedure WMMoving(var Message: TWMMoving); message WM_MOVING;
    
//

procedure TForm1.WMMoving(var Message: TWMMoving);
var
  rec: ^TRect;
  wrk: TRect;
begin
  SystemParametersInfo(spi_getworkarea, 0, @wrk, 0);
  rec := Pointer(Message.DragRect);
  if rec^.Left < wrk.Left then
  begin
    rec^.Right := rec^.Right - (rec^.Left - wrk.Left);
    rec^.Left  := wrk.Left;
  end
  else if rec^.Right > wrk.Right then
  begin
    rec^.Left  := rec^.Left - (rec^.Right - wrk.Right);
    rec^.Right := wrk.Right;
  end;
  if rec^.Top < wrk.Top then
  begin
    rec^.Bottom := rec^.Bottom - (rec^.Top - wrk.Top);
    rec^.Top    := wrk.Top;
  end
  else if rec^.Bottom > wrk.Bottom then
  begin
    rec^.Top    := rec^.Top - (rec^.Bottom - wrk.Bottom);
    rec^.Bottom := wrk.Bottom;
  end;
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate