Thema: Delphi DPI / Scaled / ScaleForm

Einzelnen Beitrag anzeigen

Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#1

DPI / Scaled / ScaleForm

  Alt 20. Okt 2005, 09:26
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?
  Mit Zitat antworten Zitat