Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fenstergröße an eigenem Rahmen ändern... (https://www.delphipraxis.net/25507-fenstergroesse-eigenem-rahmen-aendern.html)

Ares 7. Jul 2004 19:03


Fenstergröße an eigenem Rahmen ändern...
 
Hallo!

Ich habe den eigentlichen Rahmen eines Forms ausgeblendet (Form1.Borderstyle := bsNone;) und durch einen selbst gezeichneten ersetzt. Dazu habe ich TImages an die Fensterränder gesetzt und mit den entsprechenden Rahmen-Bilder ausgesatattet. Soweit alles kein Problem.

Da das Fenster nun aber keine Rahmen mehr hat, kann ich es nicht mehr größer oder kleiner ziehen. Wie kann ich diese Eigenschaft nachbilden?

Besten Dank
Ares

SirThornberry 7. Jul 2004 19:44

Re: Fenstergröße an eigenem Rahmen ändern...
 
vor einiger zeit hab ich die frage auch mal gestellt und hab folgendes erhalten:
Delphi-Quellcode:
procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;

[...]

procedure TSBMainForm.WMNCHitTest(var Msg: TWMNCHitTest);
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 - 4), 4, Height), Point((XPos - Left), (YPos - Top))) then
      RESULT := htBottomLeft
        // BOTTOMRIGHT
    else if PtInRect(Rect((Width - 4), (Height - 4), Width, Height), Point((XPos - Left), (YPos - Top))) then
      RESULT := htBottomRight

      // Bewegen ohne Titlebar
    //else if RESULT = HTCLIENT then
    //  RESULT := htCaption
    else
      inherited;
end;

Ares 7. Jul 2004 20:18

Re: Fenstergröße an eigenem Rahmen ändern...
 
Danke für den Tipp! Aber wie genau muss ich das Einbinden? Ich hab das ganze einfach in Quelltex eingefügt, danach funktioniert das jedoch noch nicht. Muss ich sonst noch was machen?

Besten Dank
Ares


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz