![]() |
Form verschoben (beim Vergrößern)
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe eine Form (Exe im Anhang) und die soll der User vergrößern können. Wenn man sie rechts und unten vergrößert funktioniert alles, nur wenn ich oben oder links die Form verkleinere, verschiebt sich die Form außerhalb der anderen. Die Eigenschaften Constraints habe ich in beiden Formen auf 180 (Breite) und 200 (Höhe) gesetzt. Beide Formen sind übereinander gelegt. Die eine enthält den Rahmen und die andere die Komponenten. Hier ein Codeauszug:
Delphi-Quellcode:
Die Procedure "Zeichnen" enthält nur ein paar Draw-Funktionen und ist deswegen uninteressant.
procedure TfrmMain_Maske.WMNCHitTest(var Msg: TWMNCHitTest);
begin DefaultHandler(Msg); with Msg do // TOPLEFT if PtInRect(Rect(0, 0, 20, 20), Point((XPos - Left), (YPos - Top))) then RESULT := htTopLeft // TOPRIGHT else if PtInRect(Rect((Width - 20), 0, Width, 20), Point((XPos - Left), (YPos - Top))) then RESULT := htTopRight // BOTTOMLEFT else if PtInRect(Rect(0, (Height - 40), 30, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottomLeft // BOTTOMRIGHT else if PtInRect(Rect((Width - 40), (Height - 40), Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottomRight // TOP else if PtInRect(Rect(0, 0, Width, 20), Point((XPos - Left), (YPos - Top))) then RESULT := htTop // LEFT else if PtInRect(Rect(0, 0, 20, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htLeft // BOTTOM else if PtInRect(Rect(0, Height - 40, Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottom // RIGHT else if PtInRect(Rect((Width - 20), 0, Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htRight inherited; end; procedure TfrmMain_Maske.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin frmMain_Maske.BringToFront; if Button = mbLeft then begin MousePos.X := X; MousePos.Y := Y; FormMoving := true; end; end; procedure TfrmMain_Maske.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if FormMoving then begin frmMain.Left := Mouse.CursorPos.X-MousePos.X; frmMain_Maske.Left := frmMain.Left; frmMain.Top := Mouse.CursorPos.Y-MousePos.Y; frmMain_Maske.Top := frmMain.Top; end; end; procedure TfrmMain_Maske.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FormMoving := False; end; procedure TfrmMain_Maske.FormResize(Sender: TObject); begin Zeichnen; end; Wie kann ich das Problem denn beheben? |
Re: Form verschoben (beim Vergrößern)
Constraints greift erst wenn die Maustasge los gelassen wird. Zu dem Zeitpunkt ist allerdings die Größe und Position bereits gesetzt und somit wird die größe einfach wieder zurück korrigiert. Das Problem hatten wir schonmal. Durch abfangen der Nachricht wm_sizing kann man gleich dafür sorgen das gar nicht erst eine zu geringe größe gesetzt wird.
[Edit] Hier wurde das Problem schonmal gelöst: ![]() [/Edit] |
Re: Form verschoben (beim Vergrößern)
Super, funktioniert! Danke schön! :???:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz