Hallo zusammen,
habe wiedereinmal das leidige Thema der Skalierung einer Anwendung!!!
Mein Ziel:
Eine Anwendung soll bei jeder Auflösung und bei jeder eingestellten Schriftart nahezu gleich aussehen. Eigentlich ganz einfach!
Meine Entwicklungseinstellungen:
Auflösung -> 1152 * 864
DPI -> 96
Meine Versuche:
1)
Delphi-Quellcode:
procedure ScaleForm(F: TForm);
var ScreenWidth, ScreenHeight: LongInt;
begin
ScreenWidth:=1152;
ScreenHeight:=864;
F.Scaled := True;
F.AutoScroll := False;
if (Screen.Width <> ScreenWidth) then
begin
F.Height := LongInt(F.Height) * LongInt(Screen.Height) div ScreenHeight;
F.Width := LongInt(F.Width) * LongInt(Screen.Width) div ScreenWidth;
F.ScaleBy(Screen.Width,ScreenWidth);
end;
end;
Test mit 104dpi und 1280*960
Ergebnis: Fenster wird korrekt dargestellt, jedoch die Controls sind viel zu groß!
2)
Delphi-Quellcode:
procedure TtfStart.FormCreate(Sender: TObject);
var dc:HDC;
begin
dc:=GetDC(0);
if not(GetDevicecaps(
dc,LOGPIXELSX)=96)
then
self.scaleby(96,GetDevicecaps(
dc,LOGPIXELSX));
ReleaseDC(0,
dc);
end;
Ergebnis: Geht auch nicht bei allen Kombinationen aus dpi und Auflösung
3)
Scaled:=True;
Geht auch nicht!!
HILFEEE, kann mir jemand helfen wie ich die Anwendung unabhängig von dpi und Auflösung hinbekomme.
Fragen:
1) Muss ich die Themen dpi und Auflösung getrennt bearbeiten ?
2) Kann mir jemand die zusammenhänge näher erklären?