Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Große Schrifftarten ( Leidiges Thema ) (https://www.delphipraxis.net/65332-grosse-schrifftarten-leidiges-thema.html)

Baeuerle 15. Mär 2006 10:53


Große Schrifftarten ( Leidiges Thema )
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo zusammen,

so wiedereinmal das leidige Thema.
Ich skaliere meine Formulare mit folgender Funktion
Delphi-Quellcode:
procedure ScaleForm(F: TForm; Offset: Integer);
var dc: HDC;
begin
dc:=GetDC(0);
if not (GetDeviceCaps(dc,LOGPIXELSX)=96)then
 f.scaleby(96,GetDeviceCaps(dc,LOGPIXELSX)+Offset);
ReleaseDC(0,dc);
f.Refresh;
end;
Das Ergebnis könn Ihr euch bei den angehängten Screenshots ansehen. Einmal normal mit 96DPI und einmal mit 144DPI.

Ich möchte das Darstellungsproblem jetzt ein für alle mal vom Tisch bekommen. Ich bitte um Lösungsvorschläge wie das Formular auf allen OS mit allen unterschiedlichen Einstellungen DPI und Auflösungen korrekt dargestellt wird.

Das Problem sollte doch jeder Entwickler gelöst haben. Oder bin ich einfach zu dumm dafür???

Danke im voraus
Baeuerle

marlem 15. Mär 2006 11:05

Re: Große Schrifftarten ( Leidiges Thema )
 
tach,

rufe mal das hier im oncreate vom formular auf:
Delphi-Quellcode:
procedure bildschirmaufloesung(breite,hoehe:integer;formular:tform);
var schrift: integer;
begin
schrift := formular.pixelsperinch-96;
if screen.width>breite then begin
if schrift>0 then
{für große Schriften}
formular.ScaleBy(round(((screen.width/breite)*100)-((screen.width/breite-1)*100)),100)
else
{für kleine Schriften}
formular.ScaleBy(round(((screen.width/breite)*100)),100);
end
else begin
if screen.width=breite then
formular.ScaleBy(round(((screen.width/breite)*100)-schrift),100)
else begin
if schrift>0 then
{für große Schriften}
formular.ScaleBy(round((100-(breite/screen.width-1)*100)-(breite/screen.width-1)*100),100)
else
{für kleine Schriften}
formular.ScaleBy(round((100-(breite/screen.width-1)*100)),100);
end;
end;
end;

turboPASCAL 15. Mär 2006 11:13

Re: Große Schrifftarten ( Leidiges Thema )
 
Delphi-Quellcode:
 // ...

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Bildschirmauflösung zur Erstellungszeit (des Formulares beim programieren)
const
  ScrWidthResDev = 1024;
  ScrHeightResDev = 768;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Scaled := true;
  if (Screen.Height <> ScrHeightResDev) or
     (Screen.Width<>ScrHeightResDev) then
  begin
    Height:= (ClientHeight * Screen.Width div ScrWidthResDev) +
      Height - ClientHeight;
    Width:= (ClientWidth * Screen.Width div ScrHeightResDev) +
      Width - ClientWidth;
    ScaleBy(Screen.Height, ScrHeightResDev);
  end;
end;

end.
So ? :gruebel:

Baeuerle 15. Mär 2006 11:19

Re: Große Schrifftarten ( Leidiges Thema )
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Marlem

Tja das Ergebnis sieht leider sehr seltsam aus !!! Siehe Anhang

Baeuerle 15. Mär 2006 11:24

Re: Große Schrifftarten ( Leidiges Thema )
 
@turboPASCAL

Das Ergebnis sieht leider aus wie das oben genannte 144DPI.jpg !!!

Also auch keine Lösung!!!

marlem 15. Mär 2006 11:26

Re: Große Schrifftarten ( Leidiges Thema )
 
@Baeuerle
hast du bei breite und höhe die aktuelle bildschirmauflösung angegeben?
formular ist auf scaled?

marlem 15. Mär 2006 11:30

Re: Große Schrifftarten ( Leidiges Thema )
 
MOMENT!!!
dein formular füllt ja gar nicht den ganzen bildschirm aus!
da hilft wahrscheinlich eh nur aus bsdialog setzen!
meine lösung ist für formulare die den ganzen bildschirm ausfüllen!

Baeuerle 15. Mär 2006 11:31

Re: Große Schrifftarten ( Leidiges Thema )
 
@Marlem

Ja habe die breite und die höhe des Entwicklungsrechners eingegeben
1152*864 mit 96DPI scaled=True

Testrechner XP Emulation mit 1152*864 mit 144DPI

Daran liegt der Fehler leider nicht!

Baeuerle 15. Mär 2006 11:33

Re: Große Schrifftarten ( Leidiges Thema )
 
bsDialog
scaled=False

Ja das geht.

ABER: Ich kann doch nicht alle Fenster, die nicht den ganzen Bildschirm ausfüllen auf bsDialog setzen!!!

Es muss doch möcglich sein eine korrekte Anpassung zu machen.

marlem 15. Mär 2006 11:36

Re: Große Schrifftarten ( Leidiges Thema )
 
jau, versuche mal!
auf jeden fall bin ich der meinung, dass wenn dein formular "dialog-größe" hat,
hast du beim anpassen no chance!!! :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.
Seite 1 von 2  1 2      

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