Einzelnen Beitrag anzeigen

D6to2007

Registriert seit: 7. Sep 2007
Ort: Hamburg
9 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Form Skalieren/OnResize Problem mit Delphi2007

  Alt 8. Sep 2007, 19:45
Hallo Oki

Ich bin beeindruckt von Deiner schnellen Antwort, vielen Dank.
DP habe ich immer wieder besucht aber mich nie getraut mal eine (dumme) Frage zu stellen.
Dein Tipp WMSizing hat mich ein gutes Stück weitergebracht und ich hab dazu einiges gefunden und einbaut:

Delphi-Quellcode:
procedure TMainForm.FWM_Sizing(var AMsg: TMessage);
var lRect : PRect;
    lRatio : TPoint;
    lNewHeight,
    lNewWidth : Integer;
begin
  lRatio := Point(4, 3);
  lRect := PRect(AMsg.LParam);
  lNewHeight := lRect.Bottom - lRect.Top + 1;
  lNewWidth := lRect.Right - lRect.Left + 1;
  case AMsg.WParam of
    WMSZ_BOTTOM, WMSZ_TOP: lRect.Right := lRect.Left + Round(lNewHeight * lRatio.X / lRatio.Y);
    WMSZ_LEFT, WMSZ_RIGHT: lRect.Bottom := lRect.Top + Round(lNewWidth * lRatio.Y / lRatio.X);

    //übrig bleibt noch was passieren soll wenn jemand direkt eine Ecke anpackt
  end;
  inherited;
end;

//Das scaleby hab ich nun hier untergebracht :

Procedure TMainForm.OnAfterResize(var msg: TMessage);
Var h, w : single ;
begin

  w := Width / InitWidth ;
  h := Height / InitHeight ;
  If h > w Then
    Width := round(InitWidth * h)
  Else
    Height := round(InitHeight * w) ;


  If (Width) <> Currentscale Then
    Begin
      ScaleBy ( Width, CurrentScale );
      CurrentScale := Width;
   End;
End;
Nun verschiebt sich aber der Rahmen zum Fensterinhalt. Und die „Ecken“ Lösung bin ich noch nicht angegangen

Leider blicke ich nicht richtig durch weil ich bisher so gut wie keine Erfahrung mit systemnaher Windows-Programmierung habe. Was die Windows Messages betrifft schwirren mir die Sinne: WM_SIZING, WM_SIZE, WM_RESIZE, WM_EXITSIZEMOVE etc. und deren diverse Parameter und Optionen. Was hat sich MS bloß bei dieser Vielfalt gedacht ? Wie kann da einer durchblicken ?

Hast Du vielleicht. noch eine Tipp wo ich ein kompletteres Beispiel für FormResizing finden kann welches Delphi 2007 kompatible ist?
Gefunden habe ich bisher nur dinge aus 1999 /2000.
  Mit Zitat antworten Zitat