AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Form verschoben (beim Vergrößern)
Thema durchsuchen
Ansicht
Themen-Optionen

Form verschoben (beim Vergrößern)

Ein Thema von Yheeky · begonnen am 2. Aug 2007 · letzter Beitrag vom 2. Aug 2007
Antwort Antwort
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

Form verschoben (beim Vergrößern)

  Alt 2. Aug 2007, 15:06
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:
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;
Die Procedure "Zeichnen" enthält nur ein paar Draw-Funktionen und ist deswegen uninteressant.
Wie kann ich das Problem denn beheben?
Angehängte Dateien
Dateityp: exe testform_200.exe (625,5 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Form verschoben (beim Vergrößern)

  Alt 2. Aug 2007, 15:15
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:
http://www.delphipraxis.net/internal...=699256#699256
[/Edit]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3

Re: Form verschoben (beim Vergrößern)

  Alt 2. Aug 2007, 15:21
Super, funktioniert! Danke schön!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 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