Fenster unter anderen Bildschirmauflösungen und Schriftgröße |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 07.12.2010 |
Man hat eine Anwendung unter der Auflösung 640x480 programmiert, der Benutzer hat jedoch einen großen Monitor mit 1024x786. 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.
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;