Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit verschiedenen Bildschirmauflösungen (https://www.delphipraxis.net/11093-probleme-mit-verschiedenen-bildschirmaufloesungen.html)

HomerGER 30. Okt 2003 21:07


Probleme mit verschiedenen Bildschirmauflösungen
 
Hallo Liebe Wissenden
Ich hab in meinem Programm diesen
Code eingebaut
Code:
//******************************************************************************
//Haupt_Unit
//Die Bildschirmauflösung ermitteln
Procedure Bild_Aufloesung_Setzen_HHU();
const
breite = 1024; {Auflösung, unter das Programm erstellt wurde}
hoehe = 768;
var
schrift: integer;
begin
    schrift := Haupt_Form.PixelsPerInch - 96;
    if (Screen.width > breite) then
    begin
        if (schrift > 0) then
        begin
            {für große Schriften}
            Haupt_Form.ScaleBy(round(((Screen.width / breite)*100) - ((Screen.width / breite - 1) *100)), 100);
        end
        else
        begin
            {für kleine Schriften}
            Haupt_Form.ScaleBy(round(((Screen.width / breite)*100)), 100);
        end;
    end
    else
    begin
        if (Screen.width = breite) then
        begin
            Haupt_Form.ScaleBy(round(((Screen.width / breite) *100) - schrift), 100);
        end
        else
        begin
            if (schrift > 0) then
            begin
                {für große Schriften}
                Haupt_Form.ScaleBy(round((100 - (breite / Screen.width - 1) *100)-(breite / Screen.width - 1) *100), 100);
            end
            else
            begin
                {für kleine Schriften}
                Haupt_Form.ScaleBy(round((100 - (breite/Screen.width - 1) *100)),100);
            end;
        end;
    end;
end;
Nur wenn ich die Button oder Labelgrösse nicht explizit im Programm definiere werden die Button bei einer Größeren Auslösung (z.b. 1600x1200) rissig
Wie bekomme ich es hin, das die Poportionen passen
Wenn meine Form (bei 1024x768) auf max steht und ein Panel sagen wir auf 400x600 und in der Mitte der Form steht, ich dann die Auflösung auf z.b 1600x1200 stelle, möchte ich doch das alles noch passt.
Sprich das Panel immer noch in der Mitte steht und sich der Größe der Form angepasst hat
Hat jemand was?

Herr wirf Hirn - bitte

Leuselator 30. Okt 2003 23:14

Re: Probleme mit verschiedenen Bildschirmauflösungen
 
Soweit mir bekannt, gibt es keine Andere Lösung als den (zugegeben sehr aufwändigen) Weg, den Du schon für das Form gehst, für jedes einzelne Control auf Deinem Form zu gehen. Sprich - Du mußt nach Programmstart alle Controls dynamisch skalieren.
Wurde hier schon diskutiert
Und da auch

HomerGER 31. Okt 2003 00:35

Re: Probleme mit verschiedenen Bildschirmauflösungen
 
muss ich jetzt das für alle elemente machen?
nun gut, ist halt nur mehr arbeit
was ist jetzt aber beser mit der kleinsten auflösungen zu arbeiten oder mit der grössten?
also mit welcher auflösung soll ich mein programm schreiben ?

Leuselator 31. Okt 2003 00:37

Re: Probleme mit verschiedenen Bildschirmauflösungen
 
mit der größten, wenn Du die rechnerisch genaueste skalierung erreichen möchtest, da der Rundungsfehler aber immer zuschlägt (mußt ja immer auf ganze Pixel runden), denke ich es ist in der Praxis Wurscht.
Grüße

HomerGER 31. Okt 2003 03:27

Re: Probleme mit verschiedenen Bildschirmauflösungen
 
verfluchter Mist
bei 1600x1200 seh ich nix mehr :shock:

Hansa 31. Okt 2003 09:20

Re: Probleme mit verschiedenen Bildschirmauflösungen
 
Ist auch gut so. Du gehst nämlich verkehrt rum vor. Würde Dein Programm standardmäßig con 1600x1200 ausgehen, so würde sich ein User mit 640x480 fast zu Tode scrollen, weil er immer nur einen kleinen Ausschnitt des Gesamtbildes sieht. Umgekehrt siehts ähnlich aus. Ist das Programm nämlich auf 640x480 eingestellt, so würde Dein Programm sehr mickrig werden, sofern der Bildschirm auf 1600x1200 eingestellt ist.

Ich benutze deshalb 800x600 als Mittelweg. Die wenigen mit geringerer Auflösung müssen dann eben ab und zu scrollen und die mit wesentlich höherer können zumindest noch alles lesen.

HomerGER 31. Okt 2003 10:08

Re: Probleme mit verschiedenen Bildschirmauflösungen
 
Zitat:

Zitat von Leuselator
mit der größten, wenn Du die rechnerisch genaueste skalierung erreichen möchtest, da der Rundungsfehler aber immer zuschlägt (mußt ja immer auf ganze Pixel runden), denke ich es ist in der Praxis Wurscht.
Grüße

er schreib mit der grössten


Zitat:

Zitat von Hansa
Ist auch gut so. Du gehst nämlich verkehrt rum vor. Würde Dein Programm standardmäßig con 1600x1200 ausgehen, so würde sich ein User mit 640x480 fast zu Tode scrollen, weil er immer nur einen kleinen Ausschnitt des Gesamtbildes sieht. Umgekehrt siehts ähnlich aus. Ist das Programm nämlich auf 640x480 eingestellt, so würde Dein Programm sehr mickrig werden, sofern der Bildschirm auf 1600x1200 eingestellt ist.

Ich benutze deshalb 800x600 als Mittelweg. Die wenigen mit geringerer Auflösung müssen dann eben ab und zu scrollen und die mit wesentlich höherer können zumindest noch alles lesen.

du mit der (fast) kleinsten

:wiejetzt:

Leuselator 31. Okt 2003 16:17

Re: Probleme mit verschiedenen Bildschirmauflösungen
 
@Hansa: Da er alle sichtbaren Elemente skalieren möchte, fällt scrollen weg.
@HomerG: wie ich sagte: durch das Runden auf ganze Pixel bekommst Du ohnehin kleine Abweichungen zwischen den Auflösungen - mach Dir also keinen Stress damit und benutze zum Entwurf eine für Dich angenehme und gut sichtbare Größe. Wenn Du wirklich alle Controls dann zur Laufzeit dynamisch skalierst, sollte es sowohl bei kleineren als auch bei größeren Auflösungen als der zur Entwurfszeit ganz gut aussehen.

Grüße

HomerGER 1. Nov 2003 09:51

Re: Probleme mit verschiedenen Bildschirmauflösungen
 
hi
also wenn ich wie oben die Function benutze und im Programm NICHT die grösse der Button definiere
skaliert delphi es automatisch - sonst werden die Button mit höherer Auflösung die button kleiner oder umgekehrt
nur nicht bei meinem ActionMainmenuBar .. hmmmm
also werde ich die Function oben noch um die komp's erweitern die damit nicht eingeschlossen sind


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