Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: bsNone Form verschieben und Größe ändern

  Alt 25. Mär 2007, 12:38
die Lösung mit den Images ist sehr unschön. Denn genau dafür gibt es die Message WM_NCHITTEST. Wenn man diese behandelt kann man bestimmen ob und wo das größe ändern und verschieben möglich sein soll.
Delphi-Quellcode:
begin
  DefaultHandler(Msg);
  with Msg do
        // TOP
    if PtInRect(Rect(0, 0, Width, 4), Point((XPos - Left), (YPos - Top))) then
      RESULT := htTop
        // LEFT
    else if PtInRect(Rect(0, 0, 4, Height), Point((XPos - Left), (YPos - Top))) then
      RESULT := htLeft
        // BOTTOM
    else if PtInRect(Rect(0, Height - 4, Width, Height), Point((XPos - Left), (YPos - Top))) then
      RESULT := htBottom
        // RIGHT
    else if PtInRect(Rect((Width - 4), 0, Width, Height), Point((XPos - Left), (YPos - Top))) then
      RESULT := htRight
        // TOPLEFT
    else if PtInRect(Rect(0, 0, 4, 4), Point((XPos - Left), (YPos - Top))) then
      RESULT := htTopLeft
        // TOPRIGHT
    else if PtInRect(Rect((Width - 4), 0, Width, 4), Point((XPos - Left), (YPos - Top))) then
      RESULT := htTopRight
        //BOTTOMLEFT
    else if PtInRect(Rect(0, (Height - 30), 30, Height), Point((XPos - Left), (YPos - Top))) then
      RESULT := htBottomLeft
        // BOTTOMRIGHT
    else if PtInRect(Rect((Width - 30), (Height - 30), Width, Height), Point((XPos - Left), (YPos - Top))) then
      RESULT := htBottomRight

      // Bewegen ohne Titlebar
    //else if RESULT = HTCLIENT then
    // RESULT := htCaption
    else
      inherited;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat