1. Pascal / Говнокод #1730

    +83.6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
    var
      P: TPoint;
      Left, Right, Top, Bottom: Boolean;
    begin
      P := ScreenToClient(SmallPointToPoint(M.Pos));
      Left := (P.X < 5) and not (akLeft in Anchors);
      Right := (P.X > Width - 5) and not (akRight in Anchors);
      Top := (P.Y < 5) and not (akTop in Anchors);
      Bottom := (P.Y > Height - 5) and not (akBottom in Anchors);
    
      M.Result := HTCLIENT;
    
      if Left then
        if Top then
          M.Result := HTTOPLEFT
        else
          if Bottom then
            M.Result := HTBOTTOMLEFT
          else
            M.Result := HTLEFT
      else
      if Right then
        if Top then
          M.Result := HTTOPRIGHT
        else
          if Bottom then
            M.Result := HTBOTTOMRIGHT
          else
            M.Result := HTRIGHT
      else
        if Top then
          M.Result := HTTOP
        else
          if Bottom then
            M.Result := HTBOTTOM;
    end;

    изменяем размеры формы с BorderStyle = bsNone.

    Запостил: Arch, 31 Августа 2009

    Комментарии (8) RSS

    • Зачем это нужно? BorderStyle поменять не дано?
      Ответить
      • Если он так выставлен, то это кому-то нужно.
        Или ты не в курсе, что иногда стиль формы меняют осознанно?
        Ответить
      • Такое нужно иногда для приложений со скинами (вроде WinAmp) - чтобы можно было окошко приложения таскать и менять размеры не только за стандартные элементы. Или чтобы можно было таскать окно не только за строку заголовка, но и за любое пустое место окна, и т.д...
        Ответить
    • Спасибо, пригодилось...)
      Ответить
    • Спасибо, все никак не мог найти как растянуть свою форму без заголовка.
      Ответить
    • procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
        Shift: TShiftState; X, Y: Integer);
      const
        SC_DragMove = $F012;  { a magic number }
      begin
        ReleaseCapture;
        Perform(WM_SysCommand, SC_DragMove, 0);
      end;

      Юзайте...
      Ответить
      • это "таскание", блин. я не внимательно прочитал...
        Ответить

    Добавить комментарий