Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Form automatisch skalieren (https://www.delphipraxis.net/74959-form-automatisch-skalieren.html)

Urba 11. Aug 2006 20:18


Form automatisch skalieren
 
Hallo Leute,

Ich habe folgendes Problem :

Mein Programm wurde unter der Auflösung 1280x960 konzipiert und das Layout eingestellt. Nun habe ich das Problem mit anderen (niedrigeren) Auflösungen. Jeder kennt das bestimmt, daß dort dann Komponentenbreiten etc. an die aktuelle Auflösung "angepasst" werden. Dies soll aber unterbunden werden. Ich möchte daß mein Programm mehr oder weniger immer gleich aussieht. Ich habe mir dazu Gedanken gemacht und eine Funktion geschrieben die die Komponentengröße automatisch anpasst aber dann bleibt noch immer das Problem mit Schriftgrößen, Left und Topausrichtung etc. Muss ich alle Anpassungen selbst vornehmen oder gibt es dazu auch ein einfaches Property o.ä. Ich dachte erst "Skaled" von TForm wäre etwas in die Richtung aber leider Fehlanzeige.

Kann mir jemand helfen?

Gruß
Urba

Blackheart 11. Aug 2006 20:31

Re: Form automatisch skalieren
 
Probier mal das oder du schaust mal bei Torry.net nach easysize eine Komponente.

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
const breite=1280; {Auflösung, unter der das Fenster erstellt wurde}
  hoehe=960;
var schrift: integer;
begin
  schrift := pixelsperinch-96;
  if screen.width>breite then begin
    if schrift>0 then
      {für große Schriften}
      ScaleBy(round(((screen.width/breite)*100)-((screen.width/breite-1)*100)),100)
    else
      {für kleine Schriften}
      ScaleBy(round(((screen.width/breite)*100)),100);
  end
  else begin
    if screen.width=breite then
      ScaleBy(round(((screen.width/breite)*100)-schrift),100)
    else begin
      if schrift>0 then
        {für große Schriften}
        ScaleBy(round((100-(breite/screen.width-1)*100)-(breite/screen.width-1)*100),100)
      else
        {für kleine Schriften}
        ScaleBy(round((100-(breite/screen.width-1)*100)),100);
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 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