AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Nicht nur Form vergrößern, sondern auch Elemente

Ein Thema von -=cats=- · begonnen am 10. Okt 2006 · letzter Beitrag vom 12. Okt 2006
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.575 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 10. Okt 2006, 16:30
Ich denke, dass was er sucht ist das wirkliche Scaling. Folgende Methode erledigt die Aufgabe. Im Anhang ist auch ein Beispielprojekt.
Delphi-Quellcode:
procedure TForm1.MaximizeAndScale;
var
  sWidth: Double;
  sHeight: Double;
begin
  sWidth := Screen.MonitorFromWindow(Handle).Width / Width;
  sHeight := Screen.MonitorFromWindow(Handle).Height / Height;
  if sWidth < sHeight then
  begin
    ScaleBy(Round(Screen.MonitorFromWindow(Handle).Width * 1.02), Width);
  end
  else
  begin
    ScaleBy(Round(Screen.MonitorFromWindow(Handle).Height * 1.02), Height);
  end;
  WindowState := wsMaximized;
end;
......
Angehängte Dateien
Dateityp: zip scale_844.zip (7,0 KB, 58x aufgerufen)
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
10. Okt 2006, 16:40
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Benutzerbild von -=cats=-
-=cats=-

Registriert seit: 22. Sep 2006
128 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 11. Okt 2006, 08:18
Coooool

Das war genau das was ich gesucht hatte !!!!!!!!!!

Vielen Dank !!!!!
  Mit Zitat antworten Zitat
Benutzerbild von -=cats=-
-=cats=-

Registriert seit: 22. Sep 2006
128 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 11. Okt 2006, 09:09
Kannst Du mir noch erklären, was genau in diesem Abschnitt passiert ?

Zitat von sakura:
Delphi-Quellcode:
  if sWidth < sHeight then
  begin
    ScaleBy(Round(Screen.MonitorFromWindow(Handle).Width * 1.02), Width);
  end
  else
  begin
    ScaleBy(Round(Screen.MonitorFromWindow(Handle).Height * 1.02), Height);
  end;
Warum *1.02 ?
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#15

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 11. Okt 2006, 09:20
Moin, moin,
Zitat von sakura:
Ich denke, dass was er sucht ist das wirkliche Scaling. Folgende Methode erledigt die Aufgabe
Einzger Haken dabei ist die ScaleBy-interne Rundung auf ganze Pixel.
Dadurch zerlegt es das Formular, wenn es häufig vergrößert/verkleinert wird.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.575 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 11. Okt 2006, 09:26
Zitat von -=cats=-:
Warum *1.02 ?
Wie Kalmi schon geschrieben hat, wird intern viel gerundet und über die Zeit habe ich einfach festgestellt, dass beim Vergrößern ca. 2% Abweichung korrigiert werden wollen. Beim Verkleinern muss man diese wieder negativieren. Aber wenn es oft hin und her geht, dann geht das Layout verloren. Zum Starten ist es okay, aber häufig nutzen ist imo keine gute Idee.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#17

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 11. Okt 2006, 09:37
Die im Anhang befindliche Unit sollte da etwas "geschmeidiger" Funktionieren, als ScaleBy
Angehängte Dateien
Dateityp: zip dynform_214.zip (4,5 KB, 54x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von -=cats=-
-=cats=-

Registriert seit: 22. Sep 2006
128 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 11. Okt 2006, 10:15
Zitat von sakura:
Aber wenn es oft hin und her geht, dann geht das Layout verloren.
Was meinst Du damit ?
Sitzen die Buttons dann nicht mehr richtig ? Oder verschwinden sie komplett ?
Also, ich nutze das schon häufig mit der Größe (das sie verändert werden muss).
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#19

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 11. Okt 2006, 11:03
Zitat:
Sitzen die Buttons dann nicht mehr richtig ? Oder verschwinden sie komplett ?
Wenn die Koordinate mehrfach berechnet werden und das Ergebnis wir anschl. auf integer gerundet, dann veränder sich halt die Positionen.
Dito was die Größe der Buttons angeht.
Irgendwann ist das Form dann nur noch Schrott.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#20

Re: Nicht nur Form vergrößern, sondern auch Elemente

  Alt 11. Okt 2006, 12:42
Zitat von kalmi01:
Die im Anhang befindliche Unit sollte da etwas "geschmeidiger" Funktionieren, als ScaleBy
Magst Du die Kompo mal mit ein paar Worten beschreiben? Woher, wohin, wozu?



@ cats: Wenn Du die ScaleBy-Funktion nutzt, solltest Du Dein Form beim Schließen freigeben und es beim Aufruf neu erzeugen. Dann hast Du auch keine Rundungseffekte, jedenfalls wenn Du BorderStyle bsSingle setzt.

Grüße, Messie
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 14:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf