Home » Tipps & Tricks » Komponenten » TForm » Fenster unter anderen Bildschirmauflösungen und Schriftgröße

Fenster unter anderen Bildschirmauflösungen und Schriftgröße

Man hat eine Anwendung unter der Auflösung 640×480 programmiert, der Benutzer hat jedoch einen großen Monitor mit 1024×786. Das Ergebnis: Rechts und unten befindet sich ein breiter leerer Rand, wenn die Anwendung im Vollbildmodus ausgeführt wird. Hat er zusätzlich noch große Schriften eingestellt, ist das mühevoll gestaltete Layout völlig durcheinander.
Wird der folgende Quellcode in das OnCreate-Ereignis eines Formulars kopiert, wird dieses Problem behoben, indem alle Komponenten entsprechend skaliert werden.

procedure TForm1.FormCreate(Sender: TObject);
const breite=800; {Auflösung, unter der das Fenster erstellt wurde}
  hoehe=600;
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;
end;