AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Form Skalieren/OnResize Problem mit Delphi2007
Thema durchsuchen
Ansicht
Themen-Optionen

Form Skalieren/OnResize Problem mit Delphi2007

Offene Frage von "D6to2007"
Ein Thema von D6to2007 · begonnen am 8. Sep 2007 · letzter Beitrag vom 13. Sep 2007
Antwort Antwort
D6to2007

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

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
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 08:45 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 by Thomas Breitkreuz