Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi DPI / Scaled / ScaleForm (https://www.delphipraxis.net/55386-dpi-scaled-scaleform.html)

Baeuerle 20. Okt 2005 09:26


DPI / Scaled / ScaleForm
 
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)
Delphi-Quellcode:
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?

kiar 20. Okt 2005 09:46

Re: DPI / Scaled / ScaleForm
 
versuche mal das hier:hier

Baeuerle 20. Okt 2005 09:59

Re: DPI / Scaled / ScaleForm
 
Dort steht doch genau das was ich oben schon versucht habe!

Das funktioniert aber nicht unter allen Auflösungen/dpi Einstellungen !!!

Soll ich jetzt einfach Hinweise bringen dass der Anwender die DPI ändern soll um mit dem Prog arbeiten zu können?

Das gibts doch nicht, andere Programme sehen doch auch bei allen Kombinationen korrekt aus.

Bitte um weitere Vorschläge.....

sh17 9. Aug 2006 07:12

Re: DPI / Scaled / ScaleForm
 
Ich stehte vor dem gleichen Problem. Hast Du inzwischen eine Lösung?

Problematisch sind bei mir z.B. auch Controls, die mit Align right true und left false eingestellt sind. die verschwinden dann immer vom Formular nach rechts.


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